Доброго времени суток! Ребята, помогите с проблемой! У нас на предприятии имеется много отделов. Есть наш информационный отдел, в нем 4 человека. За каждым закреплено несколько отделов. У нас есть общая БД со списком всех номеров пользователей предприятия(около 2000) Пытась сделать так: Один общий номер ХХХХХХХ, на него будут звонить пользователи из списка , а попадать будут на того человека, за которым закреплено тот или иной отдел. Пример: У меня номер 3550, звонят с Юридического отдела( числится за мной) на общий номер ХХХХХХ. Астериск автоматически его переадресовывает на мой номер 3550, перед этим сверившись по CID с БД. Делаю через драйвер ODBC к MySQL/ Вот что сделано на данный момент:
odbc.ini
[connector]
Driver = MariaDB
Description = Connector/ODBC 3.51 Driver DSN
Server = 127.0.0.1
Port = 3306
User = root
Password = *****
Database =spisok
Socket = /var/run/mysqld/mysqld.sock
Charset = utf8
odbcinst.ini
[MariaDB]
Description = MySQL
driver
Driver=/usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
asterisk*CLI> odbc show
ODBC DSN Settings
-----------------
Name: spisok
DSN: connector
Last connection attempt: 1970-01-01 07:00:00
Number of active connections: 1 (out of 1)
asterisk:~# echo "SELECT 1" | isql -v connector
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> SELECT 1
+---------------------+
| 1 |
+---------------------+
| 1 |
+---------------------+
SQLRowCount returns 1
1 rows fetched
func_odbc.conf
[MOBILE]
dsn=connector
readsql=SELECT COUNT(*) FROM spisok_all WHERE number='${ARG1}'
extensions.conf
exten => _X.,1,Set(PRIOR=${ODBC_MOBILE(${CALLERID(num)})})
exten => _X.,n,GotoIf($["${PRIOR}" = "1"]?reject:allow) ;Для теста, хотя бы из одной таблицы взять данные.
exten =>_X.,n(allow),Dial(${SIP/3550})
exten =>_X.,n,Hungup()
exten =>_X.,n(reject), Playback(abandon-all-hope)
exten =>_X.,n,Hungup()
выводит ошибку unable to execute query
шаг 1
заполняете odbc.ini, потом проверяте
isql connector -vvvv
Если вылезла ошибка - повторяте.
Шаг 2
заполняете res_odbc.conf
перегружаете астериск.
делает в астериске
asterisk -r
odbc show all
Если не connected - повторяете
Шаг 3
Пишете func_odbc.conf, диалплан, запускаете(звоните), смотрите результат.
Если не работает
1) в базе включаем лог всех запросов, смотрим
3) в астериске включаем дебаг, смотрим.
Коннектор для asterisk должен быть описан в файле res_odbc.conf . Вы же используете несуществующий коннектор. в res_odbc.conf
[connector]
enabled => yes
dsn => connector
idlecheck => 600
pre-connect => yes
Задан: 2017-12-06 19:56:09 +0400
Просмотрен: 918 раз
Обновлен: Dec 07 '17
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Блин, криво вставил
konstantinsb ( 2017-12-06 19:59:46 +0400 )редактироватьres_odbc.conf дядя Вася будет заполнять?
zzuz ( 2017-12-06 22:34:49 +0400 )редактировать