Добрый день. Подскажите, плз, по такому вопросу. Задача: сделать созыв конференции с определенным количеством абонентов при нажатии кнопки на IP-телефоне (Linksys SPA-252G). Директор хочет несколько конференций с разными участниками на разных кнопках получить. Такое вообще возможно? Натолкните, плз, на путь правильный :) Спасибо.
[from-internal-custom]
exten => STARTMEETME,1,MeetMe(${MEETME_ROOMNUM},${MEETME_OPTS},${PIN})
exten => STARTMEETME,n,Hangup
exten => h,1,Hangup
exten => 8001,1,Macro(user-callerid,)
exten => 8001,n,Set(MEETME_ROOMNUM=8001)
exten => 8001,n,Set(MEETME_RECORDINGFILE=${ASTSPOOLDIR}/monitor/meetme-conf-rec-${MEETME_ROOMNUM}-${UNIQUEID})
exten => 8001,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?READPIN)
exten => 8001,n,Answer
exten => 8001,n,Wait(1)
exten => 8001,n,Set(PINCOUNT=0)
exten => 8001,n(READPIN),Read(PIN,enter-conf-pin-number,,,,)
exten => 8001,n,GotoIf($[x${PIN} = x1111]?USER)
exten => 8001,n,GotoIf($[x${PIN} = x7777]?ADMIN)
exten => 8001,n,Set(PINCOUNT=$[${PINCOUNT}+1])
exten => 8001,n,GotoIf($[${PINCOUNT}>3]?h)
exten => 8001,n,Playback(conf-invalidpin)
exten => 8001,n,Goto(READPIN)
;exten => 8001,n(ADMIN),Set(MEETME_OPTS=aAIr)
exten => 8001,n,Goto(STARTMEETME,1)
exten => 8001,n(USER),Set(MEETME_OPTS=Ir)
exten => 8001,n,AGI(makecall.sh)
exten => 8001,n,Goto(STARTMEETME,1)
exten => 8001,hint,MeetMe:8001
[meet3]
exten => STARTMEETME,1,MeetMe(${MEETME_ROOMNUM},${MEETME_OPTS},${PIN})
exten => STARTMEETME,n,Hangup
exten => h,1,Hangup
exten => 8001,1,Macro(user-callerid,)
exten => 8001,n,Set(MEETME_ROOMNUM=8001)
exten => 8001,n,Set(MEETME_RECORDINGFILE=${ASTSPOOLDIR}/monitor/meetme-conf-rec-${MEETME_ROOMNUM}-${UNIQUEID})
exten => 8001,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?READPIN)
exten => 8001,n,Answer
exten => 8001,n,Wait(1)
exten => 8001,n,Set(PINCOUNT=0)
exten => 8001,n(READPIN),Read(PIN,enter-conf-pin-number,,,,)
exten => 8001,n,GotoIf($[x${PIN} = x1111]?USER)
exten => 8001,n,GotoIf($[x${PIN} = x7777]?ADMIN)
exten => 8001,n,Set(PINCOUNT=$[${PINCOUNT}+1])
exten => 8001,n,GotoIf($[${PINCOUNT}>3]?h)
exten => 8001,n,Playback(conf-invalidpin)
exten => 8001,n,Goto(READPIN)
;exten => 8001,n(ADMIN),Set(MEETME_OPTS=aAIr)
exten => 8001,n,Goto(STARTMEETME,1)
exten => 8001,n(USER),Set(MEETME_OPTS=Ir)
exten => 8001,n,Goto(STARTMEETME,1)
exten => 8001,hint,MeetMe:8001
В /var/lib/asterisk/agi-bin ложиш 2 файла:
makecall_conf.agi
<?php
$sys_ip = "XXX";
$User_str = "XXX";
$Secret_str = "XXX";
$oSocket = fsockopen($sys_ip, 5038, $errnum, $errdesc) or die("Connection to host failed");
fputs($oSocket, "Action: login\r\n");
fputs($oSocket, "Username: $User_str\r\n");
fputs($oSocket, "Secret: $Secret_str\r\n\r\n");
fputs($oSocket, "Events: off\r\n\r\n");
fputs($oSocket, "Action: originate\r\n");
fputs($oSocket, "Channel: SIP/%ЕКСТЕНШИН%\r\n");
fputs($oSocket, "Exten: 8001\r\n");
fputs($oSocket, "Context: meet3\r\n");
fputs($oSocket, "Priority: 1\r\n\r\n");
fclose($oSocket);
?>
И makecall.sh
#!/bin/sh
php < /var/lib/asterisk/agi-bin/makecall_conf.agi
Может и криво, но на скорую руку.
Я так и предполагал.... А вот как такой диалплан написать? есть идеи?
в теории да:
Задан: 2011-03-21 13:02:44 +0400
Просмотрен: 956 раз
Обновлен: Mar 21 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.