Это старая версия документа!
В плане набора должен быть описан контекст miko_ajam.
В контексте miko_ajam определяется extension с номером 10000111.
[miko_ajam] exten => 10000111,1,NoOP(Settings Asterisk)
При начале работы, “Панель телефонии Asterisk” выполняет AMI команду originate.
Параметры originate
Переменные канала
Приложение должно выполнить команду плана набора UserEvent и передать настройки:
exten => 10000111,n,UserEvent(AsteriskSettings,Channel: ${v1},FaxSendUrl: ${FaxSendUrl},GhostScriptVer: ${GSVER},DefaultContext: ${DefaultContext},SkypeContext: ${SkypeContext},DialplanVer: ${DialplanVer})
Далее приложение должно оповестить о завершении работы:
exten => 10000111,n,UserEvent(HintsEnd,Channel: ${v1})
Пример “56080/1c/upload.php”
После выполнения UserEvent приложение должно ответить на звонок и отбить его.
exten => 10000111,n,Answer() exten => 10000111,n,Hangup()
[miko_ajam] exten => 10000111,1,NoCDR() exten => 10000111,n,Noop(internal calling application: 10000111 1С_SetupEnv) exten => 10000111,n,AGI(1C_SetupEnv.php) exten => 10000111,n,Hangup
#!/usr/bin/php -q <?php require_once('phpagi.php'); $agi = new AGI(); $Chan = GetVarChannnel($agi, "v1");; $DialplanVer = "1.0.0.6"; $GSVER = "8.70"; $FaxSendUrl = "80/admin/1c/upload/index.php"; $Statistic = "user:pass"; $SkypeContext = "context_for_skype_call"; $DefaultContext = ""; $agi->exec("UserEvent", "AsteriskSettings" .",Channel:$Chan" .",FaxSendUrl:$FaxSendUrl" .",DefaultContext:$DefaultContext" .",SkypeContext:$SkypeContext" .",DialplanVer:$DialplanVer" .",autoanswernumber:**" .",Statistic:$Statistic" .",GhostScriptVer:$GSVER"); // $agi->exec("UserEvent", "HintsEnd,"."Channel:$Chan"); // отклюаем запись CDR для приложения $agi->exec("NoCDR", ""); // ответить должны лишь после выполнения всех действий $agi->answer(); ?>
Выполните в консоли Asterisk:
CLI> dialplan reload CLI> dialplan show 10000111@miko_ajam [ Context 'miko_ajam' created by 'pbx_config' ] '10000111' => 1. NoCDR() [pbx_config] 2. Noop(internal calling application: 10000111 1С_SetupEnv) [pbx_config] 3. AGI(1C_SetupEnv.php) [pbx_config] 4. Hangup() [pbx_config] -= 1 extension (4 priorities) in 1 context. =-
#!/bin/sh dir_script='/tmp/'; # каталог из asterisk.conf astspooldir='/var/spool/asterisk'; # call_text="Channel: SIP/104 Context: miko_ajam Extension: 10000111 Set: v1=SIP/104"; echo "$call_text" > /tmp/file.call; mv '/tmp/file.call' "$astspooldir/outgoing/"; asterisk -rvvv;
Скрипт формирует call файл.
-- Executing [10000111@miko_ajam:1] NoCDR("SIP/104-00000000", "") in new stack -- Executing [10000111@miko_ajam:2] NoOp("SIP/104-00000000", "internal calling application: 10000111 1С_SetupEnv") in new stack -- Executing [10000111@miko_ajam:3] AGI("SIP/104-00000000", "1C_SetupEnv.php") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/1C_SetupEnv.php -- AGI Script Executing Application: (UserEvent) Options: (AsteriskSettings,Channel:SIP/104,FaxSendUrl:80/admin/1c/upload/index.php,DefaultContext:,SkypeContext:,DialplanVer:1.0.0.6,autoanswernumber:**,Statistic:,GhostScriptVer:8.70) -- AGI Script Executing Application: (UserEvent) Options: (HintsEnd,Channel:SIP/104) -- <SIP/104-00000000>AGI Script 1C_SetupEnv.php completed, returning 0 -- Executing [10000111@miko_ajam:4] Hangup("SIP/104-00000000", "") in new stack == Spawn extension (miko_ajam, 10000111, 4) exited non-zero on 'SIP/104-00000000'