Внимание!
Эта wiki об устаревших версиях
Документация к актуальной версии интеграции 1С и телефонии доступна по ссылке

Инструменты пользователя

Инструменты сайта


astpanel:ats:asterisk:getcontext_v6

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
astpanel:ats:asterisk:getcontext_v6 [2013/11/26 06:27]
apor [Описание]
astpanel:ats:asterisk:getcontext_v6 [2018/06/08 09:15] (текущий)
apor [PHP AGI скрипт]
Строка 3: Строка 3:
  
 ===== Описание ===== ===== Описание =====
 +<note important>​**В этой статье описан алгоритм работы**. Пример реализации описан в [[http://​wiki.miko.ru/​astpanel:​dialplan_miko_ajam | статье]] </​note> ​
 В плане набора должен быть описан контекст **miko_ajam**.\\ В плане набора должен быть описан контекст **miko_ajam**.\\
 В контексте miko_ajam определяется extension с номером ** 10000109**.\\ В контексте miko_ajam определяется extension с номером ** 10000109**.\\
Строка 15: Строка 16:
   * number - номер пользователя,​ который инициировал originate (пример 101)   * number - номер пользователя,​ который инициировал originate (пример 101)
   * tehnology - технология (SIP / IAX / DAHDI)   * tehnology - технология (SIP / IAX / DAHDI)
- 
 ===== Действие ===== ===== Действие =====
 Приложение должно выполнить команду плана набора **UserEvent** и передать настройки:​ Приложение должно выполнить команду плана набора **UserEvent** и передать настройки:​
-<​code>​exten => 10000109,​n,​UserEvent(GetContest, ​Channel: ${tehnology}/​${number}, ​context: ${1c_context})</​code>​ +<​code>​exten => 10000109,​n,​UserEvent(GetContest, ​chan1c: ${tehnology}/​${number}, ​peercontext: ${1c_context})</​code>​
  
 ===== Описание параметров ===== ===== Описание параметров =====
Строка 36: Строка 35:
  
 ==== PHP AGI скрипт ==== ==== PHP AGI скрипт ====
-<​code>#​!/​usr/​bin/​php -q+<​code ​>#​!/​usr/​bin/​php -q
 <?php <?php
 // Получение переменной AGI канала // Получение переменной AGI канала
Строка 56: Строка 55:
   ​   ​
 if($tehnology == '​SIP'​){ if($tehnology == '​SIP'​){
- $result = exec("​asterisk -rx\"​sip show peer $exten\"​ | grep Context | awk -F'​[:​]+[ ]+' ' { print $2  } '",​$output); ​   +    ​$result = exec("​asterisk -rx\"​sip show peer $exten\"​ | grep Context | awk -F'​[:​]+[ ]+' ' { print $2  } '",​$output); ​  
-    $agi->​exec("​UserEvent",​ "​GetContest,​SIP:​SIP"​);​+
 }elseif($tehnology == '​DAHDI'​){ }elseif($tehnology == '​DAHDI'​){
     $result = exec("​asterisk -rx\"​dahdi show channel $exten\"​ | grep Context | awk -F'​[:​]+[ ]+' ' { print $2  } '",​$output); ​   ​     $result = exec("​asterisk -rx\"​dahdi show channel $exten\"​ | grep Context | awk -F'​[:​]+[ ]+' ' { print $2  } '",​$output); ​   ​
-    $agi->​exec("​UserEvent",​ "​GetContest,​DAHDI:​DAHDI"​);​ 
 }elseif($tehnology == '​IAX'​){ }elseif($tehnology == '​IAX'​){
-    $result = exec("​asterisk -rx\"​iax2 show peer $exten\"​ | grep Context | awk -F'​[:​]+[ ]+' ' { print $2  } '",​$output); ​    +    $result = exec("​asterisk -rx\"​iax2 show peer $exten\"​ | grep Context | awk -F'​[:​]+[ ]+' ' { print $2  } '",​$output); ​  ​
-    $agi->​exec("​UserEvent",​ "​GetContest,​iax2:​iax2"​);​+
 } }
- 
 $agi->​exec("​UserEvent",​ "​GetContest,"​ $agi->​exec("​UserEvent",​ "​GetContest,"​
-                       ​."​Channel:​$tehnology/​$exten,"​ +                       ​."​chan1c:​$tehnology/​$exten,"​ 
-                       ​."​context:​$result"​);​+                       ​."​peercontext:​$result"​);​
  
 // отклюаем запись CDR для приложения // отклюаем запись CDR для приложения
Строка 77: Строка 72:
  
 ?></​code>​ ?></​code>​
 +
 +=== Для проверки можно использовать следующий скрипт ===
 +<​code>#​!/​bin/​sh
 +dir_script='/​tmp/';​
 +# каталог из asterisk.conf
 +astspooldir='/​var/​spool/​asterisk';​
 +#
 +call_text="​Channel:​ SIP/104
 +Context: miko_ajam
 +Extension: 10000109
 +Callerid: Alexey<​104>​
 +Setvar: number=104
 +Setvar: tehnology=SIP";​
 +
 +echo "​$call_text"​ > /​tmp/​file.call;​
 +mv '/​tmp/​file.call'​ "​$astspooldir/​outgoing/";​
 +
 +asterisk -rvvv;
 +</​code>​
 +
 +Вывод в консоли:​
 +<​code> ​   -- AGI Script Executing Application:​ (UserEvent) Options: (GetContest,​Channel:​SIP/​104,​context:​from-internal)</​code>​
 +
 +Вывод в AMI
 +<​code>​
 +Event: UserEvent
 +Privilege: user,all
 +UserEvent: GetContest
 +Uniqueid: 1412097801.8
 +Channel:​SIP/​104
 +context:​internal
 +</​code>​
 +
 +[[astpanel:​ats:​asterisk_v6|Обратно к основной инструкции...]]
 +===== Комментарии =====
 +~~DISQUS~~
astpanel/ats/asterisk/getcontext_v6.1385447228.txt.gz · Последние изменения: 2014/11/14 22:32 (внешнее изменение)