Asterisk - пример обращения от АТС
Материал из BiTel WiKi
Dog (Обсуждение | вклад) (Новая страница: «Простой пример, обработки обращения от АТС к CRM. Данный пример описывает ситуацию, когда оп…») |
Dog (Обсуждение | вклад) (→Asterisk) |
||
Строка 10: | Строка 10: | ||
создаем скрипт, которым АТС будет обращаться к динамическому классу CRM (http://docs.bitel.ru/pages/viewpage.action?pageId=6193591). входящий параметр АОН звонящего. | создаем скрипт, которым АТС будет обращаться к динамическому классу CRM (http://docs.bitel.ru/pages/viewpage.action?pageId=6193591). входящий параметр АОН звонящего. | ||
- | /var/lib/asterisk/agi-bin/dndoperator.php | + | <source> |
+ | #/var/lib/asterisk/agi-bin/dndoperator.php | ||
+ | </source> | ||
+ | |||
<source lang="php"> | <source lang="php"> | ||
#!/usr/bin/php | #!/usr/bin/php | ||
Строка 25: | Строка 28: | ||
в Asterisk создаем Dialplan Injection, который собственно будет обращаться к скрипту dndoperator.php | в Asterisk создаем Dialplan Injection, который собственно будет обращаться к скрипту dndoperator.php | ||
- | # /etc/asterisk/extensions_additional.conf | + | <source> |
+ | #/etc/asterisk/extensions_additional.conf | ||
+ | </source> | ||
<source lang="php"> | <source lang="php"> | ||
Строка 80: | Строка 85: | ||
Собственно говоря, на этом у нас есть готовый инструмент, которым мы можем оповещать звонящего о чем то и ожидать его действий. В нашем случае мы ссылаемся на эту IVR в очереди операторской линии как IVR Break Out Menu: | Собственно говоря, на этом у нас есть готовый инструмент, которым мы можем оповещать звонящего о чем то и ожидать его действий. В нашем случае мы ссылаемся на эту IVR в очереди операторской линии как IVR Break Out Menu: | ||
- | # /etc/asterisk/queues_additional.conf | + | <source> |
+ | #/etc/asterisk/queues_additional.conf | ||
+ | </source> | ||
+ | |||
<source lang="php"> | <source lang="php"> | ||
[999] | [999] |
Версия 21:01, 28 июля 2015
Простой пример, обработки обращения от АТС к CRM. Данный пример описывает ситуацию, когда операторская очередь сильно загружена и предлагает клиенту ожидающему ответа оператора заказать CALLBACK. При этом, в CRM открывается процесс, куда передается АОН звонящего.
Описание среды
- Asterisk + PHPAGI + модуль Dialplan Injection
- BGCRM
Asterisk
создаем скрипт, которым АТС будет обращаться к динамическому классу CRM (http://docs.bitel.ru/pages/viewpage.action?pageId=6193591). входящий параметр АОН звонящего.
Указан неподдерживаемый язык.
Вы должны указать язык следующим образом: <source lang="html">...</source>
Поддерживаемые языки:
abap, actionscript, ada, apache, applescript, asm, asp, autoit, bash, basic4gl, blitzbasic, bnf, c, c_mac, caddcl, cadlisp, cfdg, cfm, cpp, cpp-qt, csharp, css, d, delphi, diff, div, dos, dot, eiffel, fortran, freebasic, genero, gml, groovy, haskell, html4strict, idl, ini, inno, io, java, java5, javascript, latex, lisp, lua, m68k, matlab, mirc, mpasm, mysql, nsis, objc, ocaml, ocaml-brief, oobas, oracle8, pascal, per, perl, php, php-brief, plsql, python, qbasic, rails, reg, robots, ruby, sas, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, vb, vbnet, vhdl, visualfoxpro, winbatch, xml, xpp, z80
#!/usr/bin/php <? require_once "phpagi.php"; $agi = new AGI(); $phone = isset($argv[1])? strval(trim($argv[1])) : ""; $json = file_get_contents("http://127.0.0.1:9088/admin/dynamic.do?action=runDynamicClass&class=ru.bgcrm.dyn.utils.asterisk.AsteriskIn&sub=dndoperator&aon=$phone&authToSession=0&j_username=USERNAME&j_password=USERPWD"); $data = json_decode($json,true);
в Asterisk создаем Dialplan Injection, который собственно будет обращаться к скрипту dndoperator.php
Указан неподдерживаемый язык.
Вы должны указать язык следующим образом: <source lang="html">...</source>
Поддерживаемые языки:
abap, actionscript, ada, apache, applescript, asm, asp, autoit, bash, basic4gl, blitzbasic, bnf, c, c_mac, caddcl, cadlisp, cfdg, cfm, cpp, cpp-qt, csharp, css, d, delphi, diff, div, dos, dot, eiffel, fortran, freebasic, genero, gml, groovy, haskell, html4strict, idl, ini, inno, io, java, java5, javascript, latex, lisp, lua, m68k, matlab, mirc, mpasm, mysql, nsis, objc, ocaml, ocaml-brief, oobas, oracle8, pascal, per, perl, php, php-brief, plsql, python, qbasic, rails, reg, robots, ruby, sas, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, vb, vbnet, vhdl, visualfoxpro, winbatch, xml, xpp, z80
[injection-1] include => injection-1-custom exten => _.,1,Noop(Entering Injection: DNDoperators) exten => _.,n,AGI(dndoperator.php,${CALLERID(name)}) exten => _.,n,Goto(app-blackhole,hangup,1) exten => h,1,Macro(hangupcall,) ;--== end of [injection-1] ==--;
там же создаем IVR, которая будет наговаривать предупреждающий текст и реагировать на нажатие кнопки "1" по которой будет происходить обращение к Dialplan Injection. Структура IVR в данном случае подогнана под требования следующего пункта настройки АТС
[ivr-1] ; DNDoperator include => ivr-1-custom exten => s,1,Set(_IVR_CONTEXT_${CONTEXT}=${IVR_CONTEXT}) exten => s,n,Set(_IVR_CONTEXT=${CONTEXT}) exten => s,n,Set(__IVR_RETVM=) exten => s,n,GotoIf($["${CDR(disposition)}" = "ANSWERED"]?skip) exten => s,n,Answer exten => s,n,Wait(1) exten => s,n(skip),Set(IVR_MSG=custom/IVR_DND_OPERATORS) exten => s,n(start),Set(TIMEOUT(digit)=3) exten => s,n,ExecIf($["${IVR_MSG}" != ""]?Background(${IVR_MSG})) exten => s,n,WaitExten(0,) exten => 1,1,Macro(blkvm-clr,) exten => 1,n,Set(__NODEST=) exten => 1,n(ivrsel-1),Goto(injection-1,${EXTEN},1) exten => i,1,Playback(sorry-youre-having-problems) exten => i,n,Goto(hang,1) exten => t,1,Playback(sorry-youre-having-problems) exten => t,n,Goto(hang,1) exten => return,1,Set(_IVR_CONTEXT=${CONTEXT}) exten => return,n,Set(_IVR_CONTEXT_${CONTEXT}=${IVR_CONTEXT_${CONTEXT}}) exten => return,n,Set(IVR_MSG=custom/IVR_DND_OPERATORS) exten => return,n,Goto(s,start) exten => h,1,Hangup exten => hang,1,Playback(vm-goodbye) exten => hang,n,Hangup ;--== end of [ivr-1] ==--;
Собственно говоря, на этом у нас есть готовый инструмент, которым мы можем оповещать звонящего о чем то и ожидать его действий. В нашем случае мы ссылаемся на эту IVR в очереди операторской линии как IVR Break Out Menu:
Указан неподдерживаемый язык.
Вы должны указать язык следующим образом: <source lang="html">...</source>
Поддерживаемые языки:
abap, actionscript, ada, apache, applescript, asm, asp, autoit, bash, basic4gl, blitzbasic, bnf, c, c_mac, caddcl, cadlisp, cfdg, cfm, cpp, cpp-qt, csharp, css, d, delphi, diff, div, dos, dot, eiffel, fortran, freebasic, genero, gml, groovy, haskell, html4strict, idl, ini, inno, io, java, java5, javascript, latex, lisp, lua, m68k, matlab, mirc, mpasm, mysql, nsis, objc, ocaml, ocaml-brief, oobas, oracle8, pascal, per, perl, php, php-brief, plsql, python, qbasic, rails, reg, robots, ruby, sas, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, vb, vbnet, vhdl, visualfoxpro, winbatch, xml, xpp, z80
[999] announce-frequency=30 announce-holdtime=yes announce-position=yes timeout=30 timeoutpriority=app timeoutrestart=yes context=ivr-5 periodic-announce=custom/IVR_DND_OPERATORS
- тут только значимые для задачи параметры настройки очереди