[global] ; глобальные переменные ;контексты - где искать правило для обработки звонка берется из параметра контекст [my] exten => шаблон, приор, приложение '' ; _89 \\ ; X от 0-9\\ ; N 2-9\\ ; [2-9] [1-3,5-7]\\ ; . - любой \\ '' примеры _89N _89X _89N. _89X. # exten => _8911X. , 1, приложение exten => _8911X. , 2, приложение exten => _8911X. , 3, приложение exten => _8921X.,1, same => _8921X.,n, same => _8921X.,n, разрешить 100 звонить на номер exten => _8911X./100,1,_________ приложения Playback проигрование без учета нажатий exten => 999,1,PlayBack(hello-world&tt-monkey Background проигрование с учетом нажатий Dial Answer Hangup NOOP Verbose Goto Macro Cosub Wait WaitExten SayDigits справка по командам core show application Playback exten => 999,1,PlayBack(hello-world&tt-monkeys) exten => 888,1,Background(tt-monkeys) exten => 5,1,SayNumber(5455523) ; обработка некорректного символа exten => i,1,SayAlpha(dfdfa) После настроики перезагрузить dialplan dialplan reload екстеншены служебные i - не корректно t - таймаут exten => 888,1,Background(vm-review) same => n,WaitExten(5) exten => t,1,SayDigits(123456789) Приложение read многозначный добаваочный приложение Dial Dial(SIP/100,5) - звонок на конечный телефон таймаут 5 с переменные ${} - взять значение ${EXTEN} Звонок нескольким абонентам (кто первый возьмет) exten => 777,1,Dial(SIP/501&SIP/502) фоновая мелодия exten = _5XX,1,Answer same => n,Dial(SIP/${EXTEN},15,m) same => n,Playback(tt-monkeys) опция tT переадресация T - звоняший может переводить t - тот кому позвонили может переводить манипуляция с цифрами exten => 0000,1,Dial(SIP/10${EXTEN}10) exten => 0000,1,Dial(SIP/10${EXTEN:3}) откинуть первые три цифры exten => 00000,1,Dial(SIP/10${EXTEN:3:2}) отступить 3 цифры и взять 2 последующие exten => _989X.,1,Dial(SIP/provider/${EXTEN:1},15,mTt) как звонить Dial(SIP/${EXTEN}) Dial(sip/ast2/200) Dial(sip/${exten}@ast1) Подключение контекста [out_mgmn] exten => _8X.,1,Dial(sip/op/${EXTEN}) exten => _8911X.,1,Dial(sip/op2/${EXTEN}) [support] exten => _XXX,1,Dial(sip/${EXTEN}) [Boss] exten => _XXX,1,Dial(Sip/${EXTEN}) include => out_mgmn Показать диалплан dialplan show my1 NOOP - вывести в консоль астериска exten => 1,1,NOOP(bla-bla) same=> n,Hangip exten =>777,1,NOOP(YOU are LUCKEY) same => n,NOOP(${CALLERID(num)}) same => n,NOOP(${CHANNEL(language)}) same => n,NOOP(WE ARE HERE) same => n,NOOP(USER CALLED ${EXTEN}) same => n,Playback(tt-monkeys) Установка значений переменных exten = _5XX,1,NOOP( WE ARE START, MY CALLERID = ${CALLERID}) same => n,Set(CALLERID(NAME)=PUTIN) same => n,Set(CHANNEL(Language)=ru) same => n,Set(CALLERID(num)=666) same => n,Dial(sip/${EXTEN}) exten => _[1-4]XX,1,Dial(sip/ast${EXTEN:0:1}/${EXTEN}) Работ с каналом core show channels verbose core show channel SIP/500-0000003 hangup request SIP/ast3-0000002a Проверка логических условий $[условие] exten => 000,1,Answer same => n,Gotoif($[${CALLERID(num)}=500]?ok:no) same => n(ok),Playback(hello-world) same => n(no),Playback(tt-monkeys) exten => 000,1,Answer same => n,Gotoif($[${CALLERID(num)}=500]?my,000,ok:no) same => n(ok),Playback(hello-world) same => n(no),Playback(tt-monkeys) exten => 000,1,Answer same => n,Gotoif($[${CALLERID(num)}=500]?test,1:no) same => n(ok),Playback(hello-world) same => n(no),Playback(tt-monkeys) exten => test,1,Playback(hello-world) exten => 000,1,Answer same => n,Gotoif($[${CALLERID(num)}=500]?test,1:no) same => n(ok),Goto(test,1) same => n(no),Playback(tt-monkeys) exten => test,1,Playback(hello-world) приложение gotoiftime(9:00-10:00,*,*,*?worktime:unwork,1) изучить макросы - группировка екстеншенов в блоки exten => 001,1,Macro(test,1024,${EXTEN}) переменные передеются в ARG0 ,ARG1 ... [macro-test] exten => s,1,Answer same=> n,SayDigits(${ARG1}) same=> n,SayNumber(${ARG2}) приложение gosub exten => 002,1,Answer same =>n,GoSub(subtest,start,1()) same => n, Playbask(vm-goodbye) [subtest] exten => start,1,sayPhonetic(monkey) same => n,return ; возврат с передачей аргумента. exten => 002,1,Answer same =>n,GoSub(subtest,start,1(test)) same => n, Playbask(vm-goodbye) [subtest] exten => start,1,sayPhonetic(${ARG1}) same => n,return ; возврат запись exten => 003,1,Set(RECOD_FILE = record%d.wav) same => n,Record(${RECORD_FILE}) запиь пойдет /var/spool/lib/monitor 1 приветствиее повторение по таймауту 1если вы хотиие связаться с внутеренним обоненном - жми 1 2 если знаете внеутр номер обонента - 2 введите внутрений 3значный номер сообщение вы ввели не верный номер повеситт трубку 3 - техподдержка - все телефоны 4 - если вы хотите связаться с отделом продаж нажмине 4 - перевод по 10 сек Реализация меню exten => 1001,1,Answer same => n(b),Playback(helo) same => n,Waitexten(10) exten => 1,1,Dial(sip/1000) exten => 2,1,Gotosub(SubButton,start,1()) exten => 3,1,Dial(sip/100&sip/101&sip/102) exten => 4,1,Dial(sip/1001,10,tr) exten => t,1,Goto(b) exten => t,1,Goto(b) [SubButton] exten => start(b),1,Playback same =>n,Waitexten(10) exten => t,1,Goto(b) exten => i,1,Goto(b) exten => _X. ,1 Goto(b) Обработка входящих (waitexten, read, ) должна осуществляться в контексте не имеющем выхода в город. (macro,gosub) макрос возвращает управление, gosub только при использование return [my] exten => 2402040,1,Macro(ivr) запись звонков monitor и mixmonitor exten => _5XX,1,Mixmonitor same => n,Dial(sip/${EXTEN}) универсальная запись exten => _500,1,Set(M=${STRTIME(${EPOCH},,%d.%m.%Y-%H.%M%S)}) same => n,Mixmonitor(${M}.wav) same => n,Dial(sip/${EXTEN}) ldconfig переменная с 2 подчеркиваниями - глобальная