【Teams電話】電話番号の変換ルール

# はじめに

Teams 電話では、国コードを含めた **[E.164 形式](https://ja.wikipedia.org/wiki/E.164)** の電話番号を使用します。
Teams 電話で外線電話へ発信すると、自動的に国コードが付与され、電話番号が E.164 形式に変換されて発信が行われます。

また、Teams 電話では任意の変換ルールを定義して発信先の電話番号を変換することもできます。

この記事では、Teams 電話における電話番号の変換ルールの設定についてまとめました。

# ダイヤルプランとは？

Teams 電話における電話番号の変換ルールは **ダイヤルプラン** で制御されます。
ダイヤルプランには、以下の 2 種類があります。

| 名前 | 説明 |
|:-:|:-:|
| サービス スコープ | 利用場所に基づいてユーザーに自動的に割り当てられる |
| テナント スコープ | 管理者が任意に変換ルール設定してユーザーに割り当てる |

(参考：ダイヤル プランについて)
https://learn.microsoft.com/ja-jp/microsoftteams/what-are-dial-plans

## サービス スコープ

サービス スコープのダイヤルプランは、ユーザーの利用場所から自動的に割り当てられます。

ユーザーの利用場所は、Microsoft 365 管理センターの **[ユーザー] - [アクティブユーザー] - [ライセンスとアプリ] - [場所の選択]** から変更できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/382445cf-176a-46e3-b149-8501c8498934.png)

::: note
利用場所が "日本" に設定されているユーザーが国コードを省略して外線電話を発信すると、自動的に発信先電話番号の先頭へ日本の国コード (+81) が付与されます。
:::


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/5dc3279f-c459-46b7-b53d-e25572fe7d28.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/5adb9cba-d639-47a9-ab2b-dc8a3b93b9b6.png)

## テナント スコープ

テナント スコープのダイヤルプランは、管理者が任意の変更ルールを定義しユーザーに割り当てることができます。

テナント スコープのダイヤルプランは Teams 管理センターの **[音声] - [ダイヤルプラン] - [+ 追加]** から作成できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/49aa93fa-b863-4369-9434-c1c7e09865de.png)

::: note
テナント内のユーザーには既定で **グローバル** という名前のダイヤルプランが割り当てられています。グローバル ダイヤルプランに正規化ルールを追加すると、テナント内の全ユーザーに既定で適用されます。
:::

### 正規化ルール

ダイヤルプランでは、発信先電話番号の変換ルールのことを **正規化ルール** と呼びます。**[正規化ルール] - [追加]** ボタンから、正規化ルールを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/9656d701-b4a3-4b69-98ac-66cd8b10950f.png)

正規化ルールは以下のいずれかの方法で定義することができます。

#### ルール作成モード：基本

変換する電話番号の条件と変換方法を指定します。 

| 設定箇所 | 説明 |
|:-:|:-:|
| 選択したすべての条件が一致する場合 | 変換する電話番号の条件 |
| 次に行うこと | 変換方法  |

::: note
発信先の電話番号が条件に一致する正規化ルールによって変換が行われます。条件を指定しないと、すべての電話番号に対して変換が行われます。
:::

■ 例

* すべての電話番号の先頭へ "0033" を追加する正規化ルール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/98624b96-c33e-4e77-ac75-5f42e20a80b5.png)
* 電話番号が 4 ケタの内線番号だった場合には変換しない正規化ルール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/55acd619-5639-4939-85b9-f82dc1da27f7.png)

#### ルール作成モード：詳細

[正規表現](https://qiita.com/atsmin77/items/ba29d42038796a5b65a6#%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を使用して、正規化ルールを定義します。正規表現に慣れている場合はこちらの方法も利用できます。

[ルール作成モード：基本] で作成した場合でも、設定内容から自動的に正規表現が生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/4bf254aa-bbb6-4ed8-bf4a-cf4032b12cb7.png)

::: note
**[ダイヤルプランのテスト]** から正規化ルールをテストすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/0d7d17a2-ba48-4cf1-a502-d85a8036b7de.png)

:::

### ダイヤルプランのユーザーへの割り当て

テナント ダイヤルプランをユーザーへ割り当てる方法は [他のポリシーと同様](https://qiita.com/atsmin77/private/e37498a5e02d07bc37af#2-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%B8%E3%81%AE%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E3%81%AE%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6) です。

## 補足

■ Get-CsEffectiveTenantDialPlan コマンド

ユーザーが外線電話を発信した際には、サービス ダイヤルプランとテナント ダイヤルプランの両方がマージされた正規化ルールによって、変換が行われます。

Get-CsEffectiveTenantDialPlan コマンドを実行すると、指定したユーザーについて両方のダイヤルプランを合わせた正規化ルールを確認することができます。

```powershell
$DialPlan = Get-CsEffectiveTenantDialPlan -Identity "testuser01@atsmin.net"
$DialPlan.NormalizationRule
```

(参考：Get-CsEffectiveTenantDialPlan)
https://learn.microsoft.com/en-us/powershell/module/teams/get-cseffectivetenantdialplan?view=teams-ps

■ 正規化ルールのランク

テナント ダイヤルプランには複数の正規化ルールを追加することができます。ダイヤルプランの割り当てられたユーザーが外線電話を発信すると、<ins>電話番号がランク 1 から順番に評価され、初めに条件がマッチした正規化ルールによって変換されます</ins>。

::: note warn
以下のように正規化ルールが設定されている場合、すべての電話番号がランク 1 で変換されてしまい、ランク 2 のルールが使用されません。
:::

| ランク | 条件 | 変換 | 
|:-:|:-:|:-:|
| 1 | すべての電話番号 | 先頭に0033 を付ける |
| 2 | 4 ケタの内線番号 | 変換しない |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/f16a2f41-ce4f-4867-b8a9-9a66033fba3c.png)

以下のように **[上に移動]** から正規化ルールのランクを変更すると、正しく変換が行われます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/6a16b563-b213-4b77-ac11-5187ebb634f7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/ea703acc-93ee-44aa-93cb-bc233dc45340.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/f93d8d67-edcb-454b-ae78-c076229e1cdf.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/50d377e5-40ec-4055-bcd0-d1f3c00b383f.png)