alexkayzer » 19 июн 2018, 11:30
Есть процедура которая вызывается при нажатии на телефоне кнопки ДНД - она пишет в некую таблицу MSSQL время нажатия этой самой кнопки и номер телефона.
Процедуры вызывается на удаленном сервере MSSQL 2014. C которым Asterisk связан через драйвер FREETDS.
Extension.conf
[dnd_on_off]
exten=> line-status,1,NoOp() ; обработка реакции на DND
same => n..............( тут куча всяких действий по определению постановка это или снятие ДНД, присвоение значений переменных PSIP и VAL и т.д.)
same => n,NoOp(${mssql_dnd_status(${PSIP},${VAL})}) PSIP = номер телефона, VAL = 1 или 0 ( снял или поставил)
res_odbc.conf
[mssql]
enables =>yes
dsn => mssql
pre-connect => yes
username => XXXX
password = XXXX
func_odbc.conf
[dnd_status]
prefix=mssql
dsn=mssql
readsql= exec EMIS_SetDND_DIALPLAN 'SIP/${PSIP}','${VAL}'
odbc.ini
[mssql]
Description=MSSQL connection to 'KISDB' database
Driver=FreeTDS
Database=XXXX
username=XXXX
password=XXXX
Server=mssql2014
Port=1433
Trace=No
TDS_Version = 7.4
odbcinis.ini
[ODBC]
Trace = Yes
TraceFile = /var/log/odbc.log
ForceTrace = Yes
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
freetds.conf
[global]
# TDS protocol version
tds version = 7.4
# Whether to write a TDSDUMP file for diagnostic purposes
# (setting this to /tmp is insecure on a multi-user system)
dump file = /var/log/freetds.log
dump file append = yes
debug flags = 0xffff
# Command and connection timeouts
; timeout = 10
; connect timeout = 10
# If you get out-of-memory errors, it may mean that your client
# is trying to allocate a huge buffer for a TEXT field.
# Try setting 'text size' to a more reasonable limit
text size = 64512
[mssql]
host= mssql2014
port = 1433
tds version = 7.4
Ошибки
func_odbc.c: SQL Execute returned an error -1: 08S01: [FreeTDS][SQL Server]Write to the server failed (47)
WARNING[20653][C-0000a214] func_odbc.c: SQL Exec Direct failed (-1)![exec EMIS_SetDND_DIALPLAN 8115 1]
ERROR[20653][C-0000a214] func_odbc.c: Unable to execute query [exec EMIS_SetDND_DIALPLAN 8115 1]