Запрос к внешней БД через func_odbc
Добавлено: 02 апр 2014, 17:57
Asterisk 10.12.4
FreePBX 2.11
Задача - определить маршрут входящих для сотрудников и остальных. База данных с телефонами сотрудников - в 1С под MS SQL 2000.
Настроил odbcinst.ini
Настроил odbc.ini
Настроил func_odbc.conf
Завел доп. направление FreePbx
В итоге в логах (телефон клиента)
Подключение с этим же запросом через isql проходит нормально:
Почему пишет ошибку выполнения запроса? Чего не увидел?
FreePBX 2.11
Задача - определить маршрут входящих для сотрудников и остальных. База данных с телефонами сотрудников - в 1С под MS SQL 2000.
Настроил odbcinst.ini
Код: Выделить всё
[FreeTDS]
Description = ODBC for Microsoft SQL
Driver = /usr/lib/libtdsodbc.so.0
UsageCount = 1
Threading = 2
Код: Выделить всё
[1cDB]
Description = MS SQL connection to '1C DB' database
Driver = FreeTDS
Database = NN_3
Server = 10.10.1.4
UserName = sa
Password = хххххх_admin
Trace = No
#TDS_Version = 7.0
Port = 1433
Код: Выделить всё
[CHECK_NUM]
prefix = 1C
dsn=1cDB
readsql=select count(*) from SC17120 where LEFT(LTRIM(SP17131),3)='1KZ' AND descr like '%${ARG1}'
Код: Выделить всё
[check-worker-numbers]
exten => s,1,NoOp(Проверка на принадлежность к сотрудникам)
exten => s,n,Set(telnum=${CALLERID(num)})
exten => s,n,Set(ret_func=${1C_CHECK_NUM(${telnum})})
exten => s,n,GotoIf($[ ${ret_func} = "1"] ]?rab:net)
exten => s,n(rab),NoOp(${telnum} - это номер сотрудника)
exten => s,n,Hangup()
;exten => s,n,Goto(ext-group,600,1)
exten => s,n(net),NoOp(${telnum} - это НЕ номер сотрудника)
exten => s,n,Hangup()
;exten => s,n,Goto(ext-group,601,1)
;exten => s,n,Hangup()
Код: Выделить всё
VERBOSE[18807] pbx.c: -- Executing [3005@from-trunk:13] Goto("SIP/3005-0000001f", "check-worker-numbers,s,1") in new stack
VERBOSE[18807] pbx.c: -- Goto (check-worker-numbers,s,1)
VERBOSE[18807] pbx.c: -- Executing [s@check-worker-numbers:1] NoOp("SIP/3005-0000001f", "Проверка на принадлежность к сотрудникам") in new stack
VERBOSE[18807] pbx.c: -- Executing [s@check-worker-numbers:2] Set("SIP/3005-0000001f", "telnum=380506583493") in new stack
ERROR[18807] func_odbc.c: Unable to execute query [select count(*) from SC17120 where LEFT(LTRIM(SP17131),3)='1KZ' AND descr like '%380506583493']
VERBOSE[18807] pbx.c: -- Executing [s@check-worker-numbers:3] Set("SIP/3005-0000001f", "ret_func=") in new stack
WARNING[18807] ast_expr2.fl: ast_yyerror(): syntax error: syntax error, unexpected '=', expecting $end; Input:
Код: Выделить всё
[root@pbx asterisk]# isql -v 1cDB sa хххххх_admin
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select count(*) from SC17120 where LEFT(LTRIM(SP17131),3)='1KZ' AND descr like '%380506583493'
+------------+
| |
+------------+
| 0 |
+------------+
SQLRowCount returns 1
1 rows fetched
SQL>