MySQL を使用してユーザーの認証、ルーティング、請求を行う C 言語の従来のアスタリスク アプリケーションがあります。Asterisk の新しいバージョンでは CDR データが返されないため、Asterisk 1.4.21 でそれを保持しています。
どうやら 1.4.22 https://issues.asterisk.org/jira/browse/ASTERISK-13064にいくつかの変更があり、CDR の処理方法が完全に変更されました。残念ながら、既存のコードを適切に移行する方法について役立つ情報はありませんでした。
実行順序が変更され、'h' 拡張子が呼び出され、CDR データがリセットされます。
私のコード:
ast_log(LOG_NOTICE,"ダイヤル文字列: '%s'\n", dialstr); app = pbx_findapp("ダイヤル"); もし(アプリ) res = pbx_exec(chan, app, dialstr); ast_log(LOG_NOTICE,"Return from pbx_exec '%i', Disposition: '%s'\n", res, ast_cdr_disp2str(chan->cdr->disposition));
コードの他の部分は chan->cdr->billsec などを処理しますが、常に 0 の値を返します。
呼び出しが成功した後、私は常に CLI からこのログを取得します。
pbx_exec からの戻り値 '-1'、処置: 'NO ANSWER'同じコードが 1.4.21 でも問題なく動作しますが、
私が聞いた解決策の 1 つは、Dial の前に ast_reset() を使用することですが、それを実装する方法がわかりません。このアプリケーションを適応させる方法について何か助けはありますか?