这是我上一篇文章的后续内容。尝试在挂断时写入CDR表。 Asterisk 13似乎阻止在h扩展中使用CDR()(虽然我可以在* 11中)。 所以,我将创建一个很好的ODBC_FUNC函数,并使用它来编写我的数据。 除非我无法使其发挥作用。 我想写多个字段:
exten => h,n,Set(ODBC_WRITE_TEST(${E})=First\,Second,Third,Fourth)
或
exten => h,n,Set(ODBC_WRITE_TEST(${E})=${cause_name},${cause_name}, ${TrNumber},${uID})
这些都不奏效。他们都写了一个空白记录到表中,所以我们知道ODBC正在工作。但是字段内容没有通过。 func_odbc.conf:
[WRITE_TEST]
dsn=asterisk
; writesql=INSERT INTO LogAndDebug (debugMessage, debugData, logMessage) VALUES ('test','123','done')
writesql=INSERT INTO LogAndDebug (debugMessage, debugData, logMessage) VALUES ('${SQL_ESC(${ARG1})}','${SQL_ESC(${VAR2})}','${SQL_ESC(${VAR1})}')
上面的注释行确实按预期写入数据。未推荐的行写了一个空记录。
我在没有SQL_ESC的情况下尝试过它。字段是varchars ...所以引用的文本似乎是正确的。看起来好像没有传递ARGx和VARx。
我在Asterisk文档中找到了相关的文档,并且惊喜 - NADA
答案 0 :(得分:0)
截至星号1.8 func_odbc是这样的:
在func_odbc.conf中:
[WRITE_TEST]
dsn=asterisk
writesql=INSERT INTO LogAndDebug (debugMessage, debugData, logMessage) VALUES ('${ARG1}','${VAR2}','${VAR3}')
在拨号方案中:
exten => s,n,NoOp(WRITE_TEST.${ODBC_WRITE_TEST('this','is','test')})