mysql - 使用 odbc_func 写入多个字段的正确语法?

标签 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

最佳答案

从 asterisk 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')})

关于mysql - 使用 odbc_func 写入多个字段的正确语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31065810/

相关文章:

MySQL-按条件排序

python - 使用 Python 将 SQL 信息提取到 CSV 中,结果为空白

sip - 使用Asterisk作为SIP中继服务器

rest - Asterisk ARI 创建外呼

java - 如何通过 JAIN-SIP 向 asterisk 调用电话

MySQL并发插入导致(显式)事务之外的死锁

php - 如何显示所有id_following

php - 更新和插入查询不适用于 php

mysql - 无法从 Asterisk 拨号方案访问mysql数据库

Asterisk 可变最大长度