Asterisk Web Callback (звонок с сайта)
Данное решение позволит клиентам ввести свой телефонный номер в форму на Вашем веб-сайте, а Asterisk установит соединение.
Требования к системе
- Asterisk
- Веб-сервер с поддержкой PHP
Настройки Asterisk
manager.conf
[general] enabled = yes port = 5038 bindaddr = 0.0.0.0 ;или реальный IP вашего сервера Asterisk [your_name] secret=your_secret deny=0.0.0.0/0.0.0.0 permit=0.0.0.0/0.0.0.0 ;или ip вашего веб-сервера read = system,call,log,verbose,command,agent,user,config,originate write = system,call,log,verbose,command,agent,user,config,originate
PHP скрипт
# IP адрес Asterisk
$strHost = "Asterisk IP Address";#назначьте используемое имя пользователя (пользователь назначенный в файле /etc/asterisk/manager.conf)
$strUser = "your_name";#назначьте пароль
$strSecret = "your_secret";#канал который будет принимать звонки #e.g. SIP/XXX, IAX2/XXXX, DAHDI/XXXX, etc
$strChannel = "SIP/107";или:
$strChannel = "Local/s@from-script-n";
где from-script-n - контекст который будет использован для вызова.
/etc/asterisk/extensions_custom.conf
[from-script-n] exten = s,1,Goto(from-internal,600,1)Где 600, например, номер Ring Grousво FreePBX
#контекст из которого будет совершаться вызов
Защитите себя от нежелательных звонков.
$strContext = "from-script";/etc/asterisk/extensions_custom.conf
[from-script] exten => _8ZXXXXXXXXX,1,Dial(SIP/trunk/${EXTEN},30,)
#определите длину номера
Длина вводимого номера
if ($length == 11 && is_numeric($strExten))
В данном примере $length == 11 11 знаков
<table width="300" border="1" bordercolor="#630000" cellpadding="3" cellspacing="0"> <tr><td> <font size="2" face="arial,georgia" color="#630000">Введите Ваш номер 812XXXXXXX.</font> <form action="<? echo $_SERVER['PHP_SELF'] ?>" method="post"> <input type="text" size="20" maxlength="11" name="txtphonenumber"><br> <input type="submit" value="Позвонить!"> </form> </td></tr> </table>
ScripT
<?php $strHost = "127.0.0.1"; $strUser = "test"; $strSecret = "test2"; $strChannel = "Local/s@from-script-n"; $strContext = "from-script"; $strWaitTime = "60000"; $strPriority = "1"; $strExten = $_POST['txtphonenumber']; $strCallerId = "n <$strExten>"; $length = strlen($strExten); if ($length == 11 && is_numeric($strExten)) { $oSocket = fsockopen($strHost, 5038, $errnum, $errdesc) or die("Connection to host failed"); fputs($oSocket, "Action: login\r\n"); fputs($oSocket, "Events: off\r\n"); fputs($oSocket, "Username: $strUser\r\n"); fputs($oSocket, "Secret: $strSecret\r\n\r\n"); fputs($oSocket, "Action: originate\r\n"); fputs($oSocket, "Channel: $strChannel\r\n"); fputs($oSocket, "Timeout: $strWaitTime\r\n"); fputs($oSocket, "CallerId: $strCallerId\r\n"); fputs($oSocket, "Exten: $strExten\r\n"); fputs($oSocket, "Context: $strContext\r\n"); fputs($oSocket, "Priority: $strPriority\r\n\r\n"); fputs($oSocket, "Action: Logoff\r\n\r\n"); sleep (1); fclose($oSocket,128); ?> <p> <table width="300" border="1" bordercolor="#630000" cellpadding="3" cellspacing="0"> <tr><td> <font size="2" face="verdana,georgia" color="#630000">Производится вызов. Подождите пока Ваш телефон зазвонит!<br>Если телефон не позвонил в течении минуты, попробуйте ещё раз.<br><a href="<?php echo $_SERVER['PHP_SELF'] ?>">Ещё раз</a>$ </td></tr> </table> </p> <?php } else { ?> <p> <table width="300" border="1" bordercolor="#630000" cellpadding="3" cellspacing="0"> <tr><td> <font size="2" face="verdana,arial,georgia" color="#630000">Введите Ваш номер ( 87XXXXXXXXX ).</font> <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"> <input type="text" size="20" maxlength="12" name="txtphonenumber"><br> <input type="submit" value="Позвонить!"> </form> </td></tr> </table> </p> <?php } ?>
<?php $strHost = "127.0.0.1"; $strUser = "webcb"; $strSecret = "webcb1webcb"; $strChannel = "Local/s@from-webcb-n"; $strContext = "from-webcb"; $strWaitTime = "60000"; $strPriority = "1"; $strExten = $_POST['txtphonenumber']; $CidName = $_POST['txtname']; $strCallerId = "$CidName <$strExten>"; $length = strlen($strExten); if ($length == 4 && is_numeric($strExten)) { $oSocket = fsockopen($strHost, 5038, $errnum, $errdesc) or die("Connection to host failed"); fputs($oSocket, "Action: login\r\n"); fputs($oSocket, "Events: off\r\n"); fputs($oSocket, "Username: $strUser\r\n"); fputs($oSocket, "Secret: $strSecret\r\n\r\n"); fputs($oSocket, "Action: originate\r\n"); fputs($oSocket, "Channel: $strChannel\r\n"); fputs($oSocket, "Timeout: $strWaitTime\r\n"); fputs($oSocket, "CallerId: $strCallerId\r\n"); fputs($oSocket, "Exten: $strExten\r\n"); fputs($oSocket, "Context: $strContext\r\n"); fputs($oSocket, "Priority: $strPriority\r\n\r\n"); fputs($oSocket, "Action: Logoff\r\n\r\n"); sleep (1); fclose($oSocket,128); ?> <p> <table width="300" border="1" bordercolor="#630000" cellpadding="3" cellspacing="0"> <tr><td> <font size="2" face="verdana,georgia" color="#630000">Производится вызов. Подождите пока Ваш телефон зазвонит!<br>Если телефон не позвонил в течении минуты, попробуйте ещё раз.<br><a href="<?php echo $_SERVER['PHP_SELF'] ?>">Ещё раз</a>$ </td></tr> </table> </p> <?php } else { ?> <p> <table width="300" border="1" bordercolor="#630000" cellpadding="3" cellspacing="0"> <tr><td> <font size="2" face="verdana,arial,georgia" color="#630000">Введите номер и имя </font> <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"> <input type="text" size="20" maxlength="12" name="txtphonenumber" Value="номер"><br> <br> <input type="text" size="20" maxlength="20" name="txtname" Value="имя"><br><br> <input type="submit" value="Позвонить!"> </form> </td></tr> </table> </p> <?php } ?>
https://github.com/davetroy/astmanproxy
http://www.xtelsio.com/hlp/en/ast/ast/asterisk_manager_proxy.htm
https://www.gonzalomarcote.com/2011/como-instalar-y-configurar-astmanproxy/