Как передать несколько переменных для написания функции ODBC? - PullRequest
0 голосов
/ 14 июня 2019

Мне нужно вставить некоторые данные в схему набора номеров Asterisk. Я использую соединение ODBC и файл func_odbc.conf. Есть хороший способ ПРОЧИТАТЬ несколько значений из SQl, но, очевидно, я не могу найти никакого рабочего решения для вставки нескольких переменных в функцию func_odbc.

Я уже пытался использовать NoOp (ODBC_FunctionName ($ {ARG1}, $ {ARG2}, $ {ARG3})), и он не работает с «writeql». Set ($ {ODBC_Function () = {$ {ARG1}, $ {ARG2}, $ {ARG3}}) также не работает из-за ограничения Set для одной пары имя / значение.

Вот мой 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 writeql.

UPDATE:

Похоже, мне просто нужно использовать 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})}')

Но я все еще получаю предупреждение от Сета:

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

Итак, как мне это сделать без использования Set?

UPD:

Сделал это, сейчас предупреждений нет:

расширение макроса

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, и почему помещение аргументов в функциональные скобки не работает вообще (даже при просмотре через запятую).

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Я думаю, вы должны попробовать вот так:

Установить (ODBC_Function () = $ {VAR1}, "fixed_param", $ {val3});

0 голосов
/ 14 июня 2019

Вы используете неверные переменные. Пожалуйста, прочитайте статью о переменных.

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