私はMikoPBXを開発しています。これはAsterisk16をベースにした構成が簡単なPBXです。
最近、会話の録音に関する通知の機能を追加することにしました。タスクは次のように定式化されました。
通知は、クライアントが会社の従業員に接続した直後に1回トリガーする必要があります。アラートは、通話のすべての参加者が聞く必要があります。
モジュールの接続
ChanSpyアプリケーションの機能を使用することが決定されました。
まず、アスタリスクを開始するときに、必要なモジュールがロードされていることを確認する必要があります。modules.confに追加します:
load => app_chanspy.so load => app_originate.so
ダイヤルプランの実装
通知記録ファイルへのパスについては、extensions.confのグローバルセクションで説明します。
[globals] PBX_REC_ANNONCE=/var/mikopbx/media/custom/alert
通知のダイヤルプランについて説明しましょう
[annonce-spy]
exten => _.!,1,ExecIf($[ "${EXTEN}" == "h" ]?Hangup()
same => n,Set(chan=PJSIP/${EXTEN})
; .
same => n,ExecIf($["${CHANNELS(${chan})}x" != "x"]?Chanspy(${chan},uBq))
same => n,Hangup()
[annonce-play]
exten => annonce,1,Answer()
;
same => n,Playback(${PBX_REC_ANNONCE})
same => n,Hangup()
ここで、通知をトリガーするには、チャネルの名前を知って実行するだけで十分です。
Originate(Local/${chan}@annonce-spy,exten,annonce-playback-in,annonce,1,10,a);
オプション " a "-アプリケーションが非同期で実行されることを示します
「chan」-変数では、テクノロジーの説明なしでチャネル名を説明する必要があります。
ローカル/ $ {chan} @ annonce-spy - Chanspyアプリケーションを実行します
" 10 "- $ {chan} @ annonce-spyの呼び出しにかかる時間、この例では問題ありません
exten、annonce-playback-in、annonce、1-再生アプリケーションのコンテキストに直接
着信ダイヤルプランを追加しましょう。ダイヤルアプリケーションでは、「U」オプションを使用して、加入者が接続された瞬間を傍受します。
[incoming]
exten => _XXX,1,Dial(${PJSIP_DIAL_CONTACTS(${EXTEN})},60,U(dial-answer))
[dial-answer]
exten => _[0-9*#+]!,1,Set(chan=${CUT(CHANNEL,/,2)})
same => n,Originate(Local/${chan}@annonce-spy,exten,annonce-play,annonce,1,2,a);
same => n,return
これで、受信トレイをテストする必要があります。同様に、発信コールの通知を実装できます。
結論
比較的単純で、AGIを使用せずに、ダイヤルプランアプリケーションに基づいてのみ、会話の録音に関する通知を実装できます。
奇妙なことに、ネット上にはこのトピックに関するかなりの情報があります。
この記事が読者の役に立つことを願っています。