ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Переадресация через ODBC, MySQL

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Переадресация через ODBC, MySQL

Сообщение konstantinsb » 06 дек 2017, 20:19

Приветствую вас, коллеги!
Ребята, помогите с проблемой!
У нас на предприятии имеется много отделов.
Есть наш информационный отдел, в нем 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 SELECT COUNT(*) FROM spisok_all WHERE number='${ARG1}'
konstantinsb
 
Сообщений: 4
Зарегистрирован: 06 дек 2017, 20:12

Re: Переадресация через ODBC, MySQL

Сообщение virus_net » 07 дек 2017, 08:28

мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
virus_net
 
Сообщений: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: Переадресация через ODBC, MySQL

Сообщение konstantinsb » 07 дек 2017, 12:21

Спасибо большое за ответ! Прежде чем задать вопрос, я загуглил ошибку и видел все эти посты, но их решение проблемы мне не помогло :(
konstantinsb
 
Сообщений: 4
Зарегистрирован: 06 дек 2017, 20:12

Re: Переадресация через ODBC, MySQL

Сообщение april22 » 07 дек 2017, 13:31

а из скуля . можете сделать такой запрос ?!
Своими вопросами , вы загоняете меня в ГУГЛЬ.
april22
 
Сообщений: 2187
Зарегистрирован: 09 июл 2012, 09:47

Re: Переадресация через ODBC, MySQL

Сообщение konstantinsb » 07 дек 2017, 13:47

april22 писал(а):а из скуля . можете сделать такой запрос ?!

Код: выделить все
SQL> SELECT COUNT(*) FROM spisok_all WHERE number='${ARG1}'
+---------------------+
| COUNT(*)            |
+---------------------+
| 0                   |
+---------------------+
SQLRowCount returns 1
1 rows fetched
SQL> SELECT COUNT(*) FROM spisok_all WHERE number='1232'
+---------------------+
| COUNT(*)            |
+---------------------+
| 1                   |
+---------------------+
SQLRowCount returns 1
1 rows fetched


Первый запрос сделал как у меня в func_odbc.conf прописано, второй запрос уже конкретный входящий внутренний номер указал
konstantinsb
 
Сообщений: 4
Зарегистрирован: 06 дек 2017, 20:12

Re: Переадресация через ODBC, MySQL

Сообщение konstantinsb » 07 дек 2017, 15:41

может это поможет разобраться?

asterisk*CLI> odbc read ODBC_MOBILE "1232" exec
Failed to execute query. [SELECT COUNT(*) FROM spisok_all WHERE number='1232']
konstantinsb
 
Сообщений: 4
Зарегистрирован: 06 дек 2017, 20:12

Re: Переадресация через ODBC, MySQL

Сообщение virus_net » 08 дек 2017, 09:42

konstantinsb, я тоже сталкиваюсь с тем, что что-то не работает и когда результат гугления выдает тонну похожего с решениями это мне говорит о том, что это именно я что-то делаю не так. Ведь у других то работает. А раз так, то перечитываю снова и снова, пробую, изучаю логи и т.п.
konstantinsb писал(а):но их решение проблемы мне не помогло

О каком именно решении вы говорите ? В ваших сообщениях я пока не увидел ни тестов, ни логов. С таким подходом вам в раздел "Бизнес".
konstantinsb писал(а):Первый запрос сделал как у меня в func_odbc.conf прописано

А зачем ? Логично что он вернет пустоту, т.к. ${ARG1} это переменная.

И запрос бы поправить, чтобы соответствовал синтаксису mysql:
Код: выделить все
SELECT COUNT(*)  as `count` FROM `spisok_all` WHERE `number`='${ARG1}'

И подобный запрос я бы не делал в принципе, т.к. это грозит тормозами, когда таблица начнет наполняться данными.
Создать индекс на поле (если его нет), а запрос что-то типа такого:
Код: выделить все
SELECT `id`  FROM `spisok_all` WHERE `number`='${ARG1}' LIMIT 0,1

И я вообще не рекомендую использование MySQL из диалплана. В силу того, что нормального обработчика ошибок там не исполнить, а проблем с обработкой вызова это может доставить.
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
virus_net
 
Сообщений: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва


Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH