Страница 1 из 1

asterisk mysql выборка

Добавлено: 11 янв 2017, 17:41
janetland
Добрый день.
Дошли руки до единого dialplan на базе mysql

Код: Выделить всё

exten => _2XXX,1,Dial(SIP/${EXTEN},5,tT)
exten => _2XXX,2,MySQL(Connect connid 192.168.1.ххх USER ПАРОЛЬ BASE)
exten => _2XXX,3,MySQL(Query resultid ${connid} SELECT mobile FROM numbers WHERE asterisk=${EXTEN})
exten => _2XXX,4,MySQL(Fetch foundRow ${resultid} sip);

Код: Выделить всё

mysql> select mobile from numbers where asterisk=2260;
+----------------+
| mobile         |
+----------------+
| 2254-2255-2256 |
+----------------+
Как корректно вытащить в переменные значения ячейки номера, учитывая тот факт, что их может быть как 2 так и 8, 10? Не хочется использовать AGI(Perl c внешним скриптом), уж больно костыльное решение. Кто-нибудь делал нечто подобное?

Re: asterisk mysql выборка

Добавлено: 11 янв 2017, 17:43
ded
Вместо строк

Код: Выделить всё

exten => _2XXX,2,MySQL(Connect connid 192.168.1.ххх USER ПАРОЛЬ BASE)
exten => _2XXX,3,MySQL(Query resultid ${connid} SELECT mobile FROM numbers WHERE asterisk=${EXTEN})
exten => _2XXX,4,MySQL(Fetch foundRow ${resultid} sip);
напишите на РНР agi-скрипт, если не нравится Perl, положите в /var/lib/asterisk/agi-bin
Там же посмотрите примеры. Это будет более правильно.
janetland писал(а):Как корректно вытащить в переменные значения ячейки номера, учитывая тот факт, что их может быть как 2 так и 8, 10?
Используйте преобразования Regexp - регулярные выражения

Re: asterisk mysql выборка

Добавлено: 11 янв 2017, 18:11
janetland
забыл проверить наличие загруженного модуля func_cut.so.... запустил. все взлетело

Re: asterisk mysql выборка

Добавлено: 12 янв 2017, 09:12
virus_net
janetland писал(а):Дошли руки до единого dialplan на базе mysql
Это конечно хорошо. Ну, а какой ответ на вопрос:
зачем ?
В чем конкретно необходимость ?
Ибо как: Вы понимаете что тем самым создаете потенциальную точку отказа системы ?
Посему без ответа на вопрос "зачем?" лучше далее не продолжать.
ded писал(а):Это будет более правильно.
+1
Дабы хотя бы человечий обработчик ошибок создать.

Re: asterisk mysql выборка

Добавлено: 12 янв 2017, 09:38
janetland
Уч
virus_net писал(а):
janetland писал(а):Дошли руки до единого dialplan на базе mysql
Это конечно хорошо. Ну, а какой ответ на вопрос:
зачем ?
В чем конкретно необходимость ?
Ибо как: Вы понимаете что тем самым создаете потенциальную точку отказа системы ?
Посему без ответа на вопрос "зачем?" лучше далее не продолжать.
ded писал(а):Это будет более правильно.
+1
Дабы хотя бы человечий обработчик ошибок создать.
Зачем? 500+ абонентов, 6 площадок (2 ISP канала на каждой), 6 админов, каждый админ модерит свою зону ответственности через веб-морду, а то как недавно - поменяли ext, и пойди разберись кто. Логи со всех площадок (cdr,cel,queues) пишутся в единую mysql, резервная подымается CARPом, так что не вижу тут "узкого места".

Что подразумевается над "человечим обработчиком ошибок"?

Re: asterisk mysql выборка

Добавлено: 12 янв 2017, 09:41
virus_net
Избегайте оверквотинга, т.к. это не нужно.

Ну и пусть модерят, кто ж мешает сделать это без dialplan на базе mysql ? txt dialplan на базе mysql решает эту задачу.
Подразумевается, обработка возникающих ошибок при подключению/выборке из БД.

Re: asterisk mysql выборка

Добавлено: 12 янв 2017, 11:56
ded
janetland писал(а):Зачем? 500+ абонентов, 6 площадок (2 ISP канала на каждой), 6 админов, каждый админ модерит свою зону ответственности через веб-морду, а то как недавно - поменяли ext, и пойди разберись кто.
Был (есть?) такой проект (c Астерисками на каждой площадке, но общей оболочкой, как раз по такой модели -

Изображение
Изображение
Изображение

Всё как у вас - логи со всех площадок (cdr, cel, queues) пишутся в единую mysql.
janetland писал(а):Что подразумевается над "человечим обработчиком ошибок"?
В скрипте РНР можно напихать отладочных echo, менять параметры ответа базы MySQL, без необходимости изменения диал плана, включать agi set debug on & core set verbose 0 чтобы видеть отладку только agi на человечьем языке, не <irony>hex codes</irony>

Re: asterisk mysql выборка

Добавлено: 12 янв 2017, 13:05
janetland
2ded
фото не открываются. Что касается дебага, пока проще в консоли, потом подумаю.

2virus_net
имеете ввиду, скриптом по крону выдергивать значения с базы и парсить локально этот файл?

Re: asterisk mysql выборка

Добавлено: 13 янв 2017, 09:07
virus_net
я имею в виду писать dialplan (extensions.conf) скриптом, основываясь на данных mysql
но в таком случае, если mysql будет недоступен или попрут какие то ошибки, а в скрипте есть нормальный обработчик ошибок, который не перезапишет dialplan при наличии ошибок, то dialplan на сервере останется без изменений, а значит сервис будет продолжать работать.

запускаете вы скрипт кроном, клиент-сервером или иным способом никакого рояля не играет.