Teams Phone 通話キュー PowerShellコマンドでエージェントにチャネルを指定する

Teams Phoneの通話キューのエージェントにチームのチャネルを指定することができます。

以前は通話キューのエージェントにはユーザーやグループを指定することが多かったですが、チャネル(チーム)のメンバーとグループ着信させたいメンバーが結局同じであることも多く、着信用グループをわざわざ作らず、エージェントにチャネルを指定することも増えています。

これらはGUIからももちろん設定できますが、ここではPowerShellコマンドにより通話キューのエージェントにチャネルを設定する方法を紹介します。

なおMicrosoftの公開情報では通話キューのエージェントにチャネルを指定したい場合の情報がほぼ掲載されておらず(2024年1月時点)、本内容は私自身の検証結果に基づくものです。

learn.microsoft.com

設定方法

前提

本内容で登場するコマンドを実行するには、Teams管理ユーザー(グローバル管理者ユーザーでも可)の準備と、PowerShellにTeamsモジュールが入っていることが前提になります。

また、各種コマンド実行前にConnect-MicrosoftTeamsを実行し、Teams管理センターに接続し始めてください。

通話キュー作成コマンド構文

まず通話キューを作成するコマンドから紹介します。

New-CsCallQueue -Name "コールキュー名" -AllowOptOut $true -UseDefaultMusicOnHold $true -ConferenceMode $true -LanguageID "ja-JP" -ChannelId チャネルID -DistributionLists チャネル(チーム)のGroupID -ChannelUserObjectId チャネル(チーム)の所有者 -RoutingMethod Attendant -AgentAlertTime 15 -presencebasedrouting $true -OverflowThreshold 200 -OverflowAction Disconnect -TimeoutThreshold 120 -TimeoutAction Disconnect 

New-CsCallQueueで指定するパラメータは上記に記載したものに限らず、他にもたくさんのパラメータがありますが、今回は最低限として上記を指定しておけば良いでしょう。

上記New-CsCallQueueコマンドで指定したパラメータの詳細は以下です。

パラメータ名 設定内容 設定方法
Name コールキューの名前 任意の文字列
AllowOptOut 通話キューからの着信をユーザーごとに許可/拒否させるかどうか $trueもしくは$false
UseDefaultMusicOnHold 保留音に既定の音楽を利用するかどうか $trueもしくは$false
ConferenceMode 会議モードをオンにするかどうか(これをオンにすると着信が早くなる)) $trueもしくは$false
LanguageID ボイスメールの言語 国コード
ChannelId チャネルID ★取得方法は後述
DistributionLists チャネル(チーム)のGroupID ★取得方法は後述
ChannelUserObjectId チャネル(チーム)の所有者 ★取得方法は後述
RoutingMethod エージェント呼び出し方法 Attendant など
AgentAlertTime エージェント呼び出し時間 15 ~ 180 秒で指定する
presencebasedrouting プレゼンス状態が[連絡可能]のエージェントに対してのみ呼び出すかどうか $trueもしくは$false
OverflowThreshold キュー内待機の最大数 0 ~ 200 まで指定可能
OverflowAction キュー内待機の最大数超過時の応答パターン そのまま切断する場合は"Disconnect"など
TimeoutThreshold キュー内待機時間 0 ~ 2700秒(45分)まで指定可能
TimeoutAction キュー内待機時間超過時の応答ターゲット そのまま切断する場合は"Disconnect"など

上記パラメータのうち★をつけたものはPowerShellコマンドでも取得できますので後述します。

パラメータ取得コマンド構文

チャネルIDの取得

Get-Team -DisplayName "チーム名"

チャネル(チーム)のGroupIDの取得

Get-TeamChannel -GroupId チームのグループID

チャネル(チーム)の所有者の取得

Get-TeamUser -GroupId チームのグループID -Role "owner"

なお、所有者が複数いる場合は任意の1名で良いようです。

上記コマンドだとすべての所有者ユーザーが取得されるため、以下のようにあらかじめ1人に絞るコマンドでもよいかもしれません。

Get-TeamUser -GroupId チームのグループID -Role "owner" | Select-Object -First 1

パラメータ取得コマンド(一括取得)

パラメータ取得コマンドをひとつずつ実行していくのが手間である場合は、テナント内に存在するチームの上記情報をCSVへ一括出力することもできます。

出力したCSVから必要な情報をピックアップするとより効率的です。

以下コマンドをスクリプトファイルにしてPowerShellで実行するか、そのままPowerShlellに貼り付けて実行してみてください。

# Teams管理センターへ接続
Connect-MicrosoftTeams

# テナント内の全チームを取得
$teams = Get-Team

# 出力する情報を格納する配列を初期化
$output = @()

# チームごとに以下処理を繰り返し
foreach ($team in $teams) {
  # "General"チャネルの情報を取得
  $generalChannel = Get-TeamChannel -GroupId $team.GroupId | Where-Object {$_.DisplayName -eq "General"}

  # チームの所有者の情報を取得(最初の1名を取得)
  $teamOwner = (Get-TeamUser -GroupId $team.GroupId -Role "owner" | Select-Object -First 1).UserId

  # 出力する情報をハッシュテーブルに格納
  $outputInfo = @{
    "TeamName" = $team.DisplayName
    "GroupID" = $team.GroupId
    "ChannelName" = $generalChannel.DisplayName
    "ChannelID" = $generalChannel.Id
    "TeamOwner" = $teamOwner
  }

  # ハッシュテーブルを配列に追加
  $output += New-Object PSObject -Property $outputInfo
}

# CSVへ出力
$output | Sort-Object DisplayName | Select-Object TeamName, GroupID, ChannelName, ChannelID, TeamOwner | Export-Csv (".\Team_Channel_List_"+ ( Get-Date  -Format yyyyMMdd_HHmmss ) +".csv") -Encoding UTF8 -NoTypeInformation

PowerShellを起動し、上記コマンドを貼り付けて実行します。

コマンドを実行すると、認証画面が表示されるので、Teams管理権限を持つユーザーでサインインしてください。

PowerShell実行画面1

実行中に表示されるProgressバーがいっぱいになると処理が終了します。

PowerShell実行画面2

処理が終了すると、コマンドを実行したディレクトリに「Team_Channel_List_yyyymmdd_hhmmss.csv」の名前でCSVファイルが出力されます。(yyyymmdd_hhmmssはCSV出力日時)

CSVの出力フォルダ

CSVに出力される内容は以下の通りです。

項目名(ヘッダ名) 出力内容 備考
TeamName チーム名
GroupID チームのグループID
ChannelName チャネル名 ここはGeneral(一般)チャネルを指定してコマンド実行しているため、
必ず”General"になります。
※Generalチャネルはすべてのチームに既定で用意され、
また削除できないチャネルであり必ずどのチームにも存在するため、
Generalチャネルをパラメータに利用するようにしています
ChannelID チャネルID GeneralのチャネルID
TeamOwner チーム所有者のID 任意の1名分のチーム所有者IDを取得
CSVの出力内容

このCSVが一つあれば、特定のチャネルごとにコマンドを実行する必要はなく、一覧から対象のチャネル情報を選択することができます。

終わりに

GUI上からひとつずつ作成する通常の方法に加えこのPowerShell コマンドで一括で作れる方法を知っておくと、例えば組織としてTeams Phoneの利用を開始した際など、たくさんの通話キューにチャネルを一気に紐づけしたい場合などにとても便利です。

執筆担当者プロフィール
Hiroko, Kimura

Hiroko, Kimura(日本ビジネスシステムズ株式会社)

Microsoft 365製品の提案~運用が担当領域、特にTeams/Teams Phone多めです。趣味は音楽とテレビと映画。趣味にしたいのは筋トレ(エンジニアには筋肉が必要)。

担当記事一覧