3

SQL テーブルに write func odbc list records ファイルを作成しました。

[R]

dsn=connector

write=INSERT INTO ast_records (filename,caller,callee,dtime) VALUES
('${ARG1}','${ARG2}','${ARG3}','${ARG4}')

prefix=M

そして、それを dialplan に設定します:

exten => _0X.,n,Set(
M_R(${MIXMONITOR_FILENAME}\,${CUSER}\,${EXTEN}\,${DTIME})= )

実行するとエラーが発生します: ast_func_write: M_R Function not registered:

注意:窓付きのアスタリスク

4

3 に答える 3

5
  1. 私が最初に見たのは、関数の呼び出しを間違って実行していたことです...引数ではなく値を割り当てる必要があります....これを試してください:

    func_odbc.conf:

    [R]
    dsn=connector
    prefix=M
    writesql=INSERT INTO ast_records (filename,caller,callee,dtime) VALUES('${VAL1}','${VAL2}','${VAL3}','${VAL4}');
    

    ダイヤルプラン:

    exten => _0X.,1,Set(M_R()=${MIXMONITOR_FILENAME}\,${CUSER}\,${EXTEN}\,${DTIME})
    

    それが役に立たない場合は、私のリストを続けてください:)

  2. func_odbc.so がアスタリスクによってロードされていることを確認します。(アスタリスク CLI から: モジュールは func_odbc のように表示されます)... ロードされていない場合、カスタム odbc クエリ関数を「構築」できません。

  3. DSN が /etc/odbc.ini で設定されていることを確認してください
  4. /etc/asterisk/res_odbc.conf が適切に構成されていることを確認してください
  5. DSN を正しい名前で呼び出していることを確認してください (常に発生していることがわかります)。
  6. アスタリスク ログで詳細とデバッグを有効にし、ロガーのリロード、コア セット詳細 5、コア セット デバッグ 5 を実行してから、呼び出しを再試行してください。通話が終了したら、ログを確認します。何が起こったのかについて、さらに多くの出力が表示されます...

reclze からの回答について...ここであなたを呼び出すのではなく、ここで PHP AGI を使用することは深刻なやり過ぎです。func_odbc 関数は問題なく動作しますが、外部スクリプト (TOP 自体でインタープリター プログラムを使用する必要があります) を呼び出すことで、オーバーヘッドと潜在的なセキュリティの問題が発生するのはなぜですか?

于 2011-04-29T18:18:36.643 に答える
2

func odbc 関数を「ODBC_connector」として呼び出す必要があります。コネクタは、func_odbc.conf ファイル [コネクタ] で使用する必要があります。ダイヤルプランでは、このように呼び出す必要があります。

exten=> _0x.,n,ODBC_connector(${arg1},${arg2})
于 2011-02-17T03:36:33.600 に答える
0

使用しようとしている構文がよくわかりませんが、これに AGI (php を使用) を使用するのはどうですか。PHP スクリプトでロジックを定義し、ダイヤルプランから次のように呼び出します。

exten => _0X.,n,AGI(script-filename.php,${CUSER},${EXTEN},${DTIME})
于 2011-01-10T09:23:33.713 に答える