使用odbc_func编写多个字段的正确语法?

时间:2015-06-26 05:49:02

标签: mysql asterisk

这是我上一篇文章的后续内容。尝试在挂断时写入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

1 个答案:

答案 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')})