如何将多个变量传递给编写 ODBC 函数?

  • 本文关键字:ODBC 函数 变量 asterisk
  • 更新时间 :
  • 英文 :


我需要在SQL ftom Asterisk拨号计划中插入一些数据。我正在使用 ODBC 连接和 func_odbc.conf 文件。有很好的方法可以从 SQl 读取多个值,但显然,我找不到任何有效的解决方案来插入多个变量来func_odbc函数。

我已经尝试使用NoOp(ODBC_FunctionName(${ARG1},${ARG2},${ARG3})),但它不适用于'writesql'。Set(${ODBC_Function()={${ARG1},${ARG2},${ARG3}}) 由于对一个名称/值对设置限制,也不起作用。

这是我func_odbc:

[putClientEvaluation]
;${ARG1} - uniqueid
;${ARG2} - operator
;${ARG3} - client
;${ARG4} - rating
;${ARG5} - queue
dsn=voip
writesql=INSERT INTO cc_service_rating(timestamp,callid,operator,client,rating,queue) values(now(),'${SQL_ESC(${ARG1})}','${SQL_ESC(${ARG2})}','${SQL_ESC(${ARG3})}','${SQL_ESC(${ARG4})}','${SQL_ESC(${ARG5})}')

所以我需要一种工作方式一次将多个参数传递给 odbc writesql 函数。

更新:

看起来我只需要使用 VAL 而不是 ARG:

writesql=INSERT INTO cc_service_rating(timestamp,callid,operator,client,rating,queue) values(now(),'${SQL_ESC(${VAL1})}','${SQL_ESC(${VAL2})}','${SQL_ESC(${VAL3})}','${SQL_ESC(${VAL4})}','${SQL_ESC(${VAL5})}')

但我仍然收到来自 Set 的警告:

WARNING[1227][C-00000020]: pbx_variables.c:1155 pbx_builtin_setvar: Set requires one variable name/value pair.

那么,如何在不使用 Set 的情况下执行此操作?

上级:

这样做了,现在没有警告:

宏扩展

exten => s,n,Set(operator=${ARG1})
exten => s,n,Set(quename=${ARG2})
exten => s,n,Set(client=${ARG3})
;timestamp,callid,operator,client,rating,queue
exten => s,n,Set(ODBC_putClientEvaluation()=${UNIQUEID},${operator},${client},${MACRO_EXTEN},${quename})

功能

writesql=INSERT INTO cc_service_rating(timestamp,callid,operator,client,rating,queue) values(now(),'${VAL1}','${ARG1}','${ARG3}','${VAL2}','${ARG3}')

不是舒尔为什么这样做,显然我不明白 ARG 和 VAL 在这里是如何工作的,以及为什么将 args 放在功能括号中根本不起作用(即使使用逗号筛选)。

您使用的变量不正确。请阅读有关变量的书籍文章。

Set(ODBC_Function(${ARG1},${ARG2})=${VAL1},"fixed_param",${VAL3}) 

我认为你应该这样尝试:

Set(ODBC_Function()=${VAR1},"fixed_param",${VAL3});

相关内容

  • 没有找到相关文章

最新更新