VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

выборка из mysql базы dialplan

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

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

Ответить
janetland
Сообщения: 43
Зарегистрирован: 24 авг 2016, 15:11

выборка из mysql базы dialplan

Сообщение janetland »

Доброго вечера всем, коллеги.
Возможно, изобретаю колесо, есть рабочий код по выдергиванию данных из базы mysql. Не нравится статус deprecated в модулях, но и только.
Код соответственно усложняется, если необходимо проверять 2 поля, скажем, из 4х значений. А если их там будет больше?...

Задача: есть группа звонков, у нее ряд номеров, номера в группе и их кол-во могут меняться юзерами (все в базе). Номера в группе могут быть мобильные и локальные и на другой атс(признак транка), группы от дня недели - номерами меняются. Как можно логично управлять всем этим, не выстраивая дикие конструкции через GotoIf.. ?

Конфиг рабочий, для базы мобильных в базе

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

;
;;; connect to mysql database of mobile numbers ;;;
;
exten => _XXX,1,MySQL(Connect connid 192.168.1.1 asterisk Q1W2e# asterisk);
exten => _XXX,n,GotoIf($["${connid}" = ""]?error);
exten => _XXX,n,MySQL(Query resultid ${connid} SELECT location1, mobile1, mobile2, mobile3, timeout1, timeout2, timeout3 timeout4 FROM numbers WHERE phone=${EXTEN});
exten => _XXX,n,MYSQL(Fetch fetchid ${resultid} location1 mobile1 mobile2 mobile3 timeout1 timeout2 timeout3 timeout4);
exten => _XXX,n,MYSQL(Clear ${resultid});
exten => _XXX,n,MYSQL(Disconnect ${connid});
;
;;; record phone call
;
exten => _XXX,n(call),Set(filename=${UNIQUEID});
exten => _XXX,n,MixMonitor(/usr/rec/${filename}.wav,a);
exten => _XXX,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes);
;
;;;mobile number (1,2,3) verification
;
exten => _XXX,n,GotoIf(${LEN(${mobile1})}>0?yes1:local);
exten => _XXX,n(yes1),GotoIf(${LEN(${mobile2})}>0?yes2:localmobile1dial);
exten => _XXX,n(yes2),GotoIf(${LEN(${mobile3})}>0?:localmobile2dial);
;
;;;call to local & 3 mobile numbers
;
exten => _XXX,n,Dial(SIP/${EXTEN},${timeout1},Tt);
exten => _XXX,n,Dial(SIP/asteriskcallcenter/9${mobile1},${timeout2},Tt);
exten => _XXX,n,Dial(SIP/asteriskcallcenter/9${mobile2},${timeout3},Tt);
exten => _XXX,n,Dial(SIP/asteriskcallcenter/9${mobile3},${timeout3},Tt);
exten => _XXX,n,HangUP();
exten => _XXX,n(busy),Playback(en/allbusy);
exten => _XXX,n,HangUP();
;
;;;call to only local (mobile 1,2,3 are empty)
;
exten => _XXX,n(local),Dial(SIP/${EXTEN},${timeout1},Tt);
exten => _XXX,n,HangUP();
;
;;;call to local & mobile 1
;
exten => _XXX,n(localmobile1dial),Dial(SIP/${EXTEN},${timeout1},Tt);
exten => _XXX,n,Dial(SIP/asteriskcallcenter/9${mobile1},${timeout2},Tt);
exten => _XXX,n,HangUP();
;
;;;call to local & mobile 1,2
;
exten => _XXX,n(localmobile2dial),Dial(SIP/${EXTEN},${timeout1},Tt);
exten => _XXX,n,Dial(SIP/asteriskcallcenter/9${mobile1},${timeout2},Tt);
exten => _XXX,n,Dial(SIP/asteriskcallcenter/9${mobile2},${timeout3},Tt);
exten => _XXX,n,HangUP();
;
exten => _XXX,n,Dial(SIP/${EXTEN},,Tt);
exten => _XXX,n,HangUP();
; 
ded
Сообщения: 15619
Зарегистрирован: 26 авг 2010, 19:00

Re: выборка из mysql базы dialplan

Сообщение ded »

Вам надо не в диалплан встраивать MySQL(Connect connid
а написать внешний скрипт на РНР, и вызывать его в диалплане через AGI
exten => _XXX,1,AGI(myscript.php)
1g0r
Сообщения: 126
Зарегистрирован: 25 ноя 2013, 16:56

Re: выборка из mysql базы dialplan

Сообщение 1g0r »

Судя по SQL запросу... табличка то оч избыточна... но это к теме не относится )
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH