这是我上一篇文章的后续。尝试在挂断时写入CDR表。星号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.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')})

10-06 05:16
查看更多