0

非常に単純なカスタム コンテキストの 1 つで、組み込みの cdr アプリの外部にデータベース ロギングを追加したいと考えています。私は次のようなものを持っています:

[inbound-custom]
exten => _X.,1,MixMonitor(/mnt/temp/inbound-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(num)}-${EXTEN}-${UNIQUEID}.wav)
exten => _X.,n,MYSQL(Connect connid mysqlip cdr_logger mysqlpw asteriskcdrdb)
exten => _X.,n,MYSQL(Query resultid ${connid} INSERT INTO `call_recordings` (`asterisk_uniqueid`,`clid`,`filename`,`context`) VALUES (${UNIQUEID},${CALLERID(num)},inbound-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(num)}-${EXTEN}-${UNIQUEID}.wav,"inbound"))
exten => _X.,n,MYSQL(Clear ${resultid}) 
exten => _X.,n,MYSQL(Disconnect ${connid}) 
exten => _X.,n,Dial(SIP/cs1000/${EXTEN})
exten => _X.,n,Hangup()

これはほとんどの場合うまくいくようですが、コンテキストがMYSQL(clear...)回線に到達する前に誰かが電話を切った場合、MySQL サーバーでゾンビ接続が開いたままになります。voip info wikihでは、コンテキストの拡張機能で接続のクリーンアップを行うことについて言及されていますが、これのサンプルはありません。私は無駄に次のことを試しました:

[inbound-custom]
exten => _X.,1,MixMonitor(/mnt/temp/inbound-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(num)}-${EXTEN}-${UNIQUEID}.wav)
exten => _X.,n,MYSQL(Connect connid mysqlip cdr_logger mysqlpw asteriskcdrdb)
exten => _X.,n,MYSQL(Query resultid ${connid} INSERT INTO `call_recordings` (`asterisk_uniqueid`,`clid`,`filename`,`context`) VALUES (${UNIQUEID},${CALLERID(num)},inbound-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(num)}-${EXTEN}-${UNIQUEID}.wav,"inbound"))
exten => _X.,n,Dial(SIP/cs1000/${EXTEN})
exten => _X.,n,Hangup()

exten => h,1,MYSQL(Clear ${resultid}) 
exten => h,n,MYSQL(Disconnect ${connid}) 

私はそこで何か間違ったことをしていると思いますが、それが何であるかはわかりません。

4

1 に答える 1

0

私はこれをほとんど機能させることができましたが、挿入時にエラーをスローするのが好きなようで、ドキュメントはせいぜい最小限です。使用をあきらめ、待機中の python デーモンに挿入ステートメントを送信するためMYSQL()に使用することを選択しました。system()

于 2010-08-23T16:32:48.293 に答える