【Teams電話】自動応答の制御：勤務時間外と休日の通話フロー

# はじめに

Teams 電話の自動応答について、勤務時間外と休日の通話フローに関する設定をまとめました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/a0c4a3de-a0c2-4ab8-a44e-1d7e9a404e4a.png)

自動応答の概要については以下に記載しています。

※ 関連記事

https://qiita.com/atsmin77/items/5211c04f49ba46ef54bb

## 勤務時間外の通話フロー

自動応答では **[勤務時間外の通話フロー]** タブで **勤務時間** を設定します。

■ 勤務時間：月曜～金曜 09:00 - 17:30 に設定する場合の例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/f04c5ac9-bd8e-4608-acd6-4c87cc02eba8.png)

**[+]** ボタンを押すと、同じ日の勤務時間を複数設定することができます。

■ 12:00 - 13:00 を勤務時間外とする場合の例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/0a0a54de-5e99-4e2a-8600-4ee0d12affd2.png)

::: note
設定した勤務時間以外の時間に着信があると、**[勤務時間外の通話フロー]** の設定に従って転送されます。
:::

勤務時間外の通話フローの設定は、[[一般情報] - [通話ルーティングオプション] と同様](https://qiita.com/atsmin77/items/5211c04f49ba46ef54bb#21-%E9%80%9A%E8%A9%B1%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E8%A8%AD%E5%AE%9A) です。**[あいさつつ文のオプション]** に勤務時間外であることを伝えるメッセージなどを設定することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/bb2f1a04-855b-4150-badd-96ab914af206.png)

### 多段構成

■ 複数の応答メッセージを設定したい場合

::: note warn
**Q.** [勤務時間外の通話フロー] では設定できる応答メッセージは 1 つだけです。それでは、例えば 12:00-13:00 の昼休みだけ別の応答メッセージ再生したい場合はどうすれば良いでしょうか？
:::

::: note
**A.** この場合は、自動応答を多段構成にすることで実現できます。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/e63afeb7-9b10-4451-ac7a-bb58f2a6e4a1.png)

| 名前 | 通話フロー | 勤務時間 | 勤務時間外の応答メッセージ |
|:-:|:-:|:-:|:-:|
| 自動応答 A | 自動応答 B へリダイレクト | 09:00-12:00/13:00-24:00 | 昼休み用のメッセージ|
| 自動応答 B  | (省略) | 09:00-17:30 | 営業時間外のメッセージ |

自動応答 A では昼休みだけ勤務時間外の設定をして、昼休みの応答メッセージを設定します。自動応答 A の通常の通話フローでは自動応答 B へリダイレクトを設定します。自動応答 B では昼休みを除いた勤務時間を設定することで、応答メッセージを分けることができます。

## 休日の通話フロー

勤務時間外の通話フローでは、曜日ごとの勤務時間のみ設定することができます。祝日など、不定期な予定に対する通話フローは **[休日の通話フロー]** で設定します。

### 休日の設定

休日の通話フローを設定するためには、まず **[音声] - [休日] - [+追加]** から休日の設定を追加します。休日の日付は開始日時と終了日時で指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/953f4664-a4ef-406e-8dc0-8ace2c8bfe72.png)

### 自動応答の設定

休日の設定を追加したら、自動応答の **[休日の通話フロー] - [休日の通話設定] - [+ 追加]** から休日の通話フローを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/11398359-bb2d-4499-a7c1-aaa0f6676173.png)

**[休日]** には自動応答へ割り当てる休日を選択します。[勤務時間外の通話フロー](#勤務時間外の通話フロー)と同様に応答メッセージや通話ルーティングオプションを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/e1fdc236-fab5-48e0-a86d-adc8ddd1d754.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/e820c02b-5b97-4f11-866b-0f0df77f3b49.png)

### PowerShell から休日を設定する方法

休日の設定は Teams 管理センターで追加するほかに、Teams PowerShell から CSV ファイルを使ってインポート、エクスポートを行うことができます。

| コマンド | 説明 |
|:-:|:-:|
| Import-CsAutoAttendantHolidays | 自動応答へ休日をインポートする |
| Export-CsAutoAttendantHolidays | 自動応答から休日をエクスポートする |

(参考：Import-CsAutoAttendantHolidays)
https://learn.microsoft.com/en-us/powershell/module/teams/import-csautoattendantholidays?view=teams-ps
(参考：Export-CsAutoAttendantHolidays)
https://learn.microsoft.com/en-us/powershell/module/teams/export-csautoattendantholidays?view=teams-ps

#### 日本の祝日をインポートするコマンド例


[内閣府のサイト](https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html)で翌年までの祝日の CSV が公開されています。この CSV を休日の設定として自動応答へインポートする PowerShell のサンプルを作ってみました。

1. 以下のコマンドで祝日をインポートしたい自動応答の ID (Identity) を確認しておきます
    ```powershell
    Connect-MicrosoftTeams
    Get-CsAutoAttendant -NameFilter "自動応答 01"
    # Identity                 : 3157d0d2-11f6-4eab-8ff0-ed2bc071b76a
    ```
1. 内閣府のサイトから祝日の CSV ファイル (syukujitsu.csv) をダウンロードします
1. C:\Temp フォルダを作成して、syukujitsu.csv を配置します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/1fe46ffa-e9aa-40e2-bc6c-73502ae69291.png)
1. 以下のコマンドの $years を適宜変更し、PowerShell に貼り付け実行します
    ```powershell
    # 自動応答へインポートしたい祝日の年を指定してください
    $years = @(2025, 2026)
    $csvFileName = "syukujitsu.csv"
    $csvFileDir = "C:\Temp\"
    # 指定された年の祝日を自動応答へインポートできる形式で出力します
    $encoding = If ($PSVersionTable.PSVersion.Major -eq 5) {"default"} Else {"sjis"}
    $csv = Import-Csv -Path ($csvFileDir + $csvFileName) -Encoding $encoding
    foreach ($year in $years) {
      $holidays = ($csv | where {$_.'国民の祝日・休日月日' -like "$year*"})
      $holidays | foreach -Begin {$header = @("Name");$row = @("$year 年 祝日");$i = 1;$delimiter = ",";$path = $outFileDir + "\syukujitsu-$year.csv"} -Process {$header += @("StartDateTime$i", "EndDateTime$i");$row += @(([datetime]$_.'国民の祝日・休日月日').ToString("dd/MM/yyyy 00:00"),"");$i++} -End {@(($header -join $delimiter), ($row -join $delimiter)) -join [Environment]::NewLine | Out-File -FilePath $path}
    }
    ```
1. C:\Temp フォルダに自動応答へインポートするための CSV が出力されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/c97c28e8-50b2-409e-b3ff-65d445143503.png)
1. 以下のコマンドの $years, autoAttendantID を適宜変更し、PowerShell に貼り付け実行します
    ```powershell
    # 自動応答へインポートしたい祝日の年を指定してください
    $years = @(2025, 2026)
    # 祝日をインポートしたい自動応答の ID を指定してください
    $autoAttendantID = "3157d0d2-11f6-4eab-8ff0-ed2bc071b76a"
    $csvFilePrefix = "syukujitsu"
    $csvFileDir = "C:\Temp\"
    # 指定された年の祝日を自動応答へインポートします
    foreach ($year in $years) {
      $bytes = [System.IO.File]::ReadAllBytes($csvFileDir + $csvFilePrefix + "-$year.csv")
      Import-CsAutoAttendantHolidays -Identity $autoAttendantID -Input $bytes
    }
    ```
1. 祝日の設定がインポートされ、コマンドで指定した自動応答に割り当てられます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/b2324f83-8108-4652-ae5b-145f904da97e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/ae4928d3-ce42-4274-b1e2-5b967b37f085.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/cf038687-206f-49e9-90a5-61f13c16510f.png)

※ 自動応答から休日の設定をエクスポートするには以下のコマンドを実行します。
```powershell
$bytes = Export-CsAutoAttendantHolidays -Identity "3157d0d2-11f6-4eab-8ff0-ed2bc071b76a"
[System.IO.File]::WriteAllBytes("C:\Temp\export.csv", $bytes)
```