Asterisk Web Callback (звонок с сайта)

Данное решение позволит клиентам ввести свой телефонный номер в форму на Вашем веб-сайте, а Asterisk установит соединение.
Требования к системе

  • Asterisk
  • Веб-сервер с поддержкой PHP

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

# 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";

где <fc #ff0000>from-script-n</fc> - контекст который будет использован для вызова.

/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))

В данном примере <fc #ff0000>$length == 11</fc> 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
}
?>

скрипт

скрипт php 53

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/

  • artikle/asterisk_web_callback.txt
  • Последние изменения: 2018/03/12