📞Layer 1: Voice Edge
電話の入口(HGW / Asterisk / bridge)。現状運用と Phase C v2 の違い。
電話の物理的な入口(Voice Edge)。ひかり電話 HGW で着信を受け、Asterisk から
AudioSocket で bridge.py に渡し、OpenAI Realtime で判定します。
構成図
現状運用 と Phase C v2 の違い
登録番号(blocklist)の着信は 第 1 関門(route-decision=block)で案内→Hangup(21)(fail-safe=遮断)。 通話中の判定(spam)で切る経路は現行コードで発火しません(下の「主要パラメータ」AMI の行・撤去予定)。 判定不能・障害は 人へ取次(fail-open=業務継続)。確定設計(2026-09-16)では固定電話へ 1 回発呼(第 1 段 E01・未実装)。 全切断(fail-closed)は採用していません(C-2(b) で廃止)。詳細は用語集へ。
主要パラメータ
- AudioSocket:
127.0.0.1:9092。Asterisk は slin(16bit PCM・8kHz) を送り(dialplan のc(slin))、bridge が 24kHz PCM へリサンプルする。AUDIO_FORMAT=ulawは互換モードで、実測上使う場面は無い(bridge_audio_format()) - AMI:
127.0.0.1:5039。bridge のhangup_by_uuid(Status逆引き →Hangup)はコードに残っているが、会話判定から呼ぶ道は現行コードで発火しない(conversation_may_terminate()が常に False)。確定設計(2026-09-16)で撤去予定 - OpenAI Realtime: 既定モデル
gpt-realtime-2.1(AEGIS_REALTIME_MODELで上書き)。接続は/v1/realtime - 人へ倒す先:
HUMAN_EXTEN(kitted で設定。空なら着信内線)へDial(PJSIP/…@hgw-trunk,30)。<ALLOW_DESTINATION>/<HUMAN_PEER>という placeholder は現行 dialplan に無い - route-decision の応答
decisionは 4 値(block/human/ai/take_message)。空は静的フォールバック、未知の値は人へ
OpenAI Realtime の Beta API は 2026-05-12 に廃止されました。bridge.py は GA へ移行済み(既定モデル gpt-realtime-2.1)で、
接続 / session.update 受理 / classify_call の中継は実 OpenAI で確認済みです。
「分類 → 締めの一言 → AMI Hangup」の通しは 2026-07 時点の記録で、現行コードではこの経路は発火しません(下記)。
実 Asterisk は AudioSocket に slin(16bit PCM・8kHz・LE) を渡します(2026-08-03 実測・dialplan c(slin))。
bridge.py の既定 AUDIO_FORMAT=slin はこれをそのまま受けて 24kHz PCM へリサンプルします。
AUDIO_FORMAT=ulaw は「AudioSocket が μlaw を運ぶ」場合の互換モードで、実測上は使う場面がありません。
以前ここに書いていた「μlaw 8kHz 直送・既定 pcm16」は誤りでした(2026-09-16 訂正)。
classify_call の should_terminate から AMI Hangup を予約する経路(B案 / D-1)はコードに残っていますが、
conversation_may_terminate() が常に False のため どの通話でも発火しません(bridge src/bridge.py・br=a557a5b1d41d)。
2026-09-16 の確定設計(案A)はこの経路を 撤去し、通話中の判定は tools 応答の受付モードで受けます。会話判定で発信者を切ることはしません。
確定設計の受け渡し契約は aegis-docs docs/PHONE_CALL_CONTRACT.md。主な変更点(いずれも未実装・段ごとに受入票で確認):
- 通話 ID を route-decision より前に作り、人直行・案内終了にも渡す(現行は AI 経路に入ってから生成・判定へは渡さない)
- 判定不能(空・不正 JSON・401・時間切れ)は 固定電話へ 1 回発呼(現行は
AI_ROUTE_DEFAULTの静的フォールバック) - 人が出なければ AI 再受付を 1 回(AI を経由した通話だけ)。再受付から人へは二度と回さない
- 用件は電話側にも確定保存し、サーバ未送信でも受付完了。用件は自動削除しない。上限時は AI 受付を止めるが 固定電話は鳴らす
- AI 受付経路は着信から 300 秒(初回 180・呼出 30・再受付 90 は目安)。有人応答後は時間制限なし
- 録音は NAS 保存確認後に Pi から削除。未転送分は SD の空きの半分の枠内で古い順