我在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
的星号答案 0 :(得分:4)
我看到的第一件事是你正在错误地执行函数调用...你需要分配值,而不是参数......试试这个:
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})
如果这对您没有帮助,请继续查看我的列表:)
确保Asterisk正在加载func_odbc.so。 (来自星号CLI:模块显示如func_odbc)...如果没有加载,它就无法“构建”你的自定义odbc查询功能。
关于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})