带有新功能的星号

时间:2010-04-15 11:22:35

标签: sql function odbc asterisk

我在sql table中创建了一个write func odbc list records文件:

[R]

dsn=connector

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

prefix=M

并在拨号方案中设置:

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

当我执行它时出现错误:ast_func_write:M_R函数未注册:

请注意:带有 windows

的星号

3 个答案:

答案 0 :(得分:4)

  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. 确保Asterisk正在加载func_odbc.so。 (来自星号CLI:模块显示如func_odbc)...如果没有加载,它就无法“构建”你的自定义odbc查询功能。

  3. 确保您的DSN已在/etc/odbc.ini
  4. 中配置
  5. 确保正确配置了/etc/asterisk/res_odbc.conf
  6. 确保您使用正确的名称呼叫DSN(我看到它一直在发生)
  7. 在Asterisk日志记录中启用详细和调试,执行记录器重新加载,核心设置详细5,核心设置调试5,然后再次尝试呼叫。当通话结束时,查看日志,你会看到更多关于发生的事情的输出......
  8. 关于recluze的答案......不要在这里给你打电话,但是使用PHP AGI在这里严重过分。 func_odbc函数工作得很好,为什么通过调用外部脚本(必须在TOP本身使用解释程序)来创建更多开销和潜在的安全问题?

答案 1 :(得分:2)

你应该将func odbc函数称为“ODBC_connector”。连接器应该在func_odbc.conf文件[connector]中使用。在拨号方案中它应该这样调用。

exten=> _0x.,n,ODBC_connector(${arg1},${arg2})

答案 2 :(得分:0)

我真的不了解您尝试使用的语法,但是如何使用AGI(使用php)。只需在php脚本中定义逻辑,然后从拨号方案中调用它:

exten => _0X.,n,AGI(script-filename.php,${CUSER},${EXTEN},${DTIME})