具有新功能的星号

Mhd*_*leh 3 sql odbc asterisk function

我在sql表中创建了一个write func odbc list记录文件:

[R]

dsn=connector

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

prefix=M
Run Code Online (Sandbox Code Playgroud)

并将其设置在拨号计划中:

exten => _0X.,n,Set(
M_R(${MIXMONITOR_FILENAME}\,${CUSER}\,${EXTEN}\,${DTIME})= )
Run Code Online (Sandbox Code Playgroud)

当我执行它时,我收到一个错误:ast_func_write: M_R 函数未注册:

请注意:带有Windows 的星号

小智 5

  1. 我看到的第一件事是你错误地执行了对函数的调用......你需要分配值,而不是参数......试试这个:

    func_odbc.conf:

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

    拨号方案:

    exten => _0X.,1,Set(M_R()=${MIXMONITOR_FILENAME}\,${CUSER}\,${EXTEN}\,${DTIME})
    
    Run Code Online (Sandbox Code Playgroud)

    如果这对您没有帮助,请继续我的列表:)

  2. 确保 func_odbc.so 正在被 Asterisk 加载。(来自 asterisk CLI:module show like func_odbc)...如果它没有被加载,它就不能“构建”你的自定义 odbc 查询函数。

  3. 确保您的 DSN 在 /etc/odbc.ini 中配置
  4. 确保 /etc/asterisk/res_odbc.conf 配置正确
  5. 确保您使用正确的名称呼叫 DSN(我看到它一直发生)
  6. 在你的 Asterisk 日志中启用详细和调试,重新加载记录器,核心设置详细 5,核心设置调试 5,然后再次尝试调用。通话结束后,查看日志,你会看到更多关于发生了什么的输出......

关于 recluze 的回答......不是在这里叫你,而是在这里使用 PHP AGI 是严重的矫枉过正。func_odbc 函数工作得很好,为什么通过调用外部脚本(必须在 TOP 本身上使用解释器程序)来创建更多的开销和潜在的安全问题?