Re: звонок к сайта
Я у себя callback в абонотдел сделал через php/expect, т.к. у меня веб сервер стоит на другой машине
Вот черновой php код(тока советую еще сделать проверку по regexp вводимого номера)
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
</HEAD>
<?
if ($_POST['submit']=='Звонить!'){
echo "В течении минуты Вам поступит звонок из нашего абонентского отдела";
flush;
$output = shell_exec("/srv/www/htdocs/call/exp.back ".$_POST['tel_num']."");
}
else {
?>
<FORM action="callback.php" method="POST">
<H1>Звонок с сайта </h1>
<B>Введите Ваш номер телефона:</b><br>
<input name="tel_num" type="text" size="40"><br>
<input name="submit" type="submit" value="Звонить!">
</FORM>
</HTML>
<?
}
Вот код expect'а:
#!/usr/bin/expect -f
set arg1 [lindex $argv 0]
spawn telnet 193.xxx.xxx.xxx 5038
expect "Asterisk Call Manager/1.0"
#expect ".*1.0"
send "Action: login\r"
send "Username: user\r"
send "Secret: xxxxxx\r"
send "Events: off\r"
send "\n"
expect ".*"
send "ACTION: Originate\r"
send "Channel: Zap/g1/6NNNNN\r"
send "Context: call_to_abonotdel\r"
send "Extension: s\r"
send "Priority: 1\r"
send "CallerID: \r"
send "Variable: NUM=$arg1\r"
send "\n"
expect ".*"
send "ACTION: LOGOFF\r"
send "\n"
А вот контекст в Астериске(тоже черновой вариант, помелочи всяких проверок можно наделать):
[call_to_abonotdel]
exten => s,1,Answer
exten => s,2,Set(CALLERID(num)=34NNNNNNNN)
exten => s,3,SayDigits(${NUM})
exten => s,4,Dial(Zap/g1/${NUM})
exten => s,5,Hangup
Соединение двух абонентов так же проблем сделать с помощью AMI и expect не будет.
|