3

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() を使用することですが、それを実装する方法がわかりません。このアプリケーションを適応させる方法について何か助けはありますか?

4

1 に答える 1

2

DIALSTATUS 変数を取得するだけで、アプリケーションには十分であり、将来のリリースでサポートされる予定です。

pbx_builtin_getvar_helper(chan, "DIALSTATUS");
于 2012-12-03T08:19:27.370 に答える