2

私は常に、Asterisk で行う最も頭を悩ませる構成と思われるものを取得します。

会社には、SIP トランクに直接接続されたアスタリスク サーバーがあり、すべて正常に動作しています。automixmon(*3)コマンドを試した結果、着信、発信通話に自動で通話録音を導入してほしいとの依頼がありました。

彼らの要件は単純です。MD とセールス マネージャーだけが通話にアクセスできます。すべてが内部的なため、/var/spool/asterisk/monitor フォルダーにダンプされ、認証付きの Web サーバーでフォルダーを表示できます。このビットをきれいにします。

これで目的のアウトバウンド コールを実行できたので (AEL を使用)、次のスニペットは、任意の内線番号からダイヤルアウトするとトリガーされます。

  _9. => {
    Monitor(wav,${STRFTIME(${EPOCH},,%Y%m%d-%H:%M:%S)}-OUT-${CALLERID(num)}-${EXTEN:${ABSORB}},m);
    Dial(SIP/${EXTEN:${ABSORB}}@MAINTRUNK,90,X);
  };

ABSORB は、9 が Dial() アプリケーションに渡されないように、ほとんどが 1 に設定されているグローバル変数です。

着信コールがこれを通過するため、着信コールは少しトリッキーです。

Dial(SIP/2000&SIP/2001&SIP/2002&SIP/2003&SIP/2004&SIP/2005,35,Tt);

だから今のところ、私は次のように設定しました:

Monitor(wav,${STRFTIME(${EPOCH},,%Y%m%d-%H:%M:%S)}-IN-${CALLERID(num)},m);
Dial(SIP/2000&SIP/2001&SIP/2002&SIP/2003&SIP/2004&SIP/2005,35,Tt);

少なくとも、「IN」状態の日付/時刻と着信発信者 ID を含むファイルを取得します。

MD が望んでいるのは、実際に通話に応答した拡張子でファイルがタグ付けされることです。

「XXXX」のようなプレースホルダーをファイル名に入れ、MONITOR_EXEC を使用してシェルにアクセスし、通話が終了した後に XXXX を最後に接続されたチャネルに置き換えてファイルの名前を変更する方法はありますか?

転送された通話は考慮されないことを認識しています。

ダイヤル コマンドの直前にモニタリングを有効にする必要があるため、コールのアクティブな内線番号を特定する方法がわかりません。

助言がありますか?

4

1 に答える 1

2

この問題を解決するための私の提案は、たとえば MonitorIncoming という制御変数を作成し、Monitor が呼び出される前に最初に設定することです。

MonitorIncoming=${STRFTIME(${EPOCH},,%Y%m%d-%H:%M:%S)}-IN-${CALLERID(num)};

その後、残りを行います

Monitor(wav,${MonitorIncoming},m);
Dial(SIP/2000&SIP/2001&SIP/2002&SIP/2003&SIP/2004&SIP/2005,35,gTt);

*gダイヤルプランでコールを続行できるようにするフラグを付けて、次のようなことを行います(コールがすべてのダイヤルプランを離れる前に):

if(${LEN(${MonitorIncoming})}>0)
     System(mv /var/spool/asterisk/monitor/${MonitorIncoming} /var/spool/asterisk/monitor/${MonitorIncoming}-${${CDR(dstchannel)}:4:8});

*私はこれをテストしていません。最初に ${CDR(dstchannel)} を変数に割り当て、次に :4:8 を割り当てる必要があるかもしれません。:) または、単純なシェル スクリプトを作成し、System() で呼び出して渡すこともでき ます${CDR(dstchannel)}

于 2013-06-20T11:55:37.900 に答える