/
TeamsPhone_SetupHoliday.ps1
94 lines (85 loc) · 2.87 KB
/
TeamsPhone_SetupHoliday.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# Teams-SetupHoliday.ps1
# Setzt im Teams den Urblaub und richtet diesen in der automatischen Telefonzentrale ein
# Lino Bertschinger, 14.06.2023
# TenantID des Kundens hier anpassen
# Wenn es der eigene Tenant ist kann man die Variable leer lassen
$TenantID = ""
# Telefonzentralen Name hier anpassen
$AutoAttendantName = ""
# Feiertage hier anpassen
$Holidays = @(
@{
Name = "Neujahr"
Start = "2023-01-01T00:00:00"
End = "2023-01-01T23:45:00"
Announcement = "TEXT ANSAGE HIER"
},
@{
Name = "Berchtoldstag"
Start = "2023-01-02T00:00:00"
End = "2023-01-02T23:45:00"
Announcement = "TEXT ANSAGE HIER"
},
@{
Name = "Karfreitag"
Start = "2023-04-07T00:00:00"
End = "2023-04-07T23:45:00"
Announcement = "TEXT ANSAGE HIER"
},
@{
Name = "Ostermontag"
Start = "2023-04-10T00:00:00"
End = "2023-04-10T23:45:00"
Announcement = "TEXT ANSAGE HIER"
},
@{
Name = "Auffahrt"
Start = "2023-05-18T00:00:00"
End = "2023-05-18T23:45:00"
Announcement = "TEXT ANSAGE HIER"
},
@{
Name = "Pfingstmontag"
Start = "2023-05-29T00:00:00"
End = "2023-05-29T23:45:00"
Announcement = "TEXT ANSAGE HIER"
},
@{
Name = "Bundesfeier"
Start = "2023-08-01T00:00:00"
End = "2023-08-01T23:45:00"
Announcement = "TEXT ANSAGE HIER"
},
@{
Name = "Weihnachten"
Start = "2023-12-25T00:00:00"
End = "2023-12-26T23:45:00"
Announcement = "TEXT ANSAGE HIER"
}
)
# Microsoft Teams Modul & Anmeldung
$Modules = Get-Module | Select -ExpandProperty Name
If ("MicrosoftTeams" -notin $Modules) {
If ($TenantID) {
Connect-MicrosoftTeams -TenantId $TenantID
} else {
Connect-MicrosoftTeams
}
}
# Konfiguration
foreach ($Holiday in $Holidays) {
# Setzt Urlaub
$DateRange = New-CsOnlineDateTimeRange -Start $Holiday.Start -End $Holiday.End
New-CsOnlineSchedule -Name $Holiday.Name -FixedSchedule -DateTimeRanges @($DateRange)
# Setzt den Urlaub in der Telefonzentrale
$HolidaySchedule = Get-CsOnlineSchedule | Where-Object {$_.Name -eq $Holiday.Name}
$GreetingPrompt = New-CsAutoAttendantPrompt -TextToSpeechPrompt $Holiday.Announcement
$MenuOption = New-CsAutoAttendantMenuOption -Action DisconnectCall -DtmfResponse Automatic
$Menu = New-CsAutoAttendantMenu -Name $Holiday.Name -MenuOptions @($MenuOption)
$CallFlow = New-CsAutoAttendantCallFlow -Name $Holiday.Name -Menu $Menu -Greetings $GreetingPrompt
$CallHandlingAssociation = New-CsAutoAttendantCallHandlingAssociation -Type Holiday -ScheduleId $HolidaySchedule.Id -CallFlowId $CallFlow.Id
$AutoAttendant = Get-CsAutoAttendant -NameFilter $AutoAttendantName
$AutoAttendant.CallFlows += @($CallFlow)
$AutoAttendant.CallHandlingAssociations += @($CallHandlingAssociation)
Set-CsAutoAttendant -Instance $AutoAttendant
}