通話モードを選んでブラウザのマイクで話すと、選んだモードで加工された音声がリアルタイムに返ってきます。 実 ACS リソース未設定でも動作する WebSocket エコー検証です。
ACS リソースに購入済みの電話番号宛に外部 (PSTN 等) から着信があると、EventGrid 経由で
POST /api/call/incoming に Microsoft.Communication.IncomingCall が届き、
サーバーは即座に AnswerCallAsync で応答します。
応答済みの着信は下に履歴として表示され、「最新を Call Connection ID に投入」 を押すと
通話中操作 / 保留 / 録音 が即そのコールに対して使えます。
まだ着信を受けていません。
ACS リソースに Microsoft.Communication.IncomingCall のイベントサブスクリプションを作成し、
Web Hook URL に下記を指定します:
https://uranowindowsapp.azurewebsites.net/acs/call-automation/api/call/incoming
az CLI 例:
az eventgrid event-subscription create \ --name uranoIncomingCallSub \ --source-resource-id /subscriptions/5a28e782-23c0-41e5-ac99-5121e157e20f/resourceGroups/myenv/providers/Microsoft.Communication/CommunicationServices/UranoMyACS \ --endpoint https://uranowindowsapp.azurewebsites.net/acs/call-automation/api/call/incoming \ --endpoint-type webhook \ --included-event-types Microsoft.Communication.IncomingCall
サブスクリプション作成時に EventGrid から SubscriptionValidation が来ますが、サーバー側で自動応答する実装になっています。
参加者 RawId は「参加者一覧」ボタンで取得できます (PSTN なら 4:+81xxxxxxxxxx 形式)。
通話中に開始 → pause/resume 可 → stop で終了。保存先は ACS マネージド (48h 保持) と BYOS Azure Blob から選択。
録音は現在の Call Connection ID に対して開始されます (上のテキスト欄)。
contentLocation / deleteLocation は EventGrid の RecordingFileStatusUpdated から得ます。
ACS が発行する serverCallId の桁数は公式ドキュメントに 明記がなく、Skype/Teams calling backend 側の不透明識別子です
(現行実装は base64 系の長文字列で、192 / 196 桁付近が観測されています)。
バックエンド更改で桁数が変動し得るため、ここでは outbound / incoming / callback:<EventType> /
getProperties など複数の観測点でサンプリングし、長さ分布を継続記録します。
1. 発信または着信応答を行うとサンプルが自動的に積まれます (重複は抑制)。
2. 通話中の CallConnected / CallDisconnected 等のコールバック、
GET /api/call/{callConnectionId} でも観測点を増やせます。
3. 下表の「Length distribution」に複数行が出る = 桁数が変動している、ということです。
本ページは Call Automation 単機能の UI です。同じ ACS カテゴリ配下のモジュールは「ACS カテゴリ」から辿れます。