ЛР 3.2 - запрос звонка через AMI

Asterisk Manager Interface (AMI) — это интерфейс системного мониторинга и управления системой, предоставляемый Asterisk. Он позволяет осуществлять живой мониторинг событий, происходящих в системе, а также разрешать запросам к Asterisk выполнять некоторые действия. Доступные действия широко распространены и включают такие вещи, как возврат информации о статусе и появлении новых вызовов. Многие приложения используют AMI в качестве основного интерфейса для взаимодействия с Asterisk.

  1. В manager.conf включите использование AMI и создайте пользователя:
[general]
enabled = yes
...

[tux]
secret=specialist123
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1
read = system,call,log,verbose,command,agent,user,config,originate
write = system,call,log,verbose,command,agent,user,config,originate
  1. В extensions.conf создайте контекст callback:
[callback]
exten => _[78]XXXXXXXXXX,1,Dial(SIP/myprovider/7${EXTEN:1})
  1. Установите веб-сервер:
    apt install apache2 php libapache2-mod-php

  2. На локальном веб-сервере разместите скрипт callback.php.

<?php
$strHost = "127.0.0.1";
$strUser = "tux";
$strSecret = "specialist123";
$strChannel = "SIP/101";
$strContext = "callback";
$strWaitTime = "60000";
$strPriority = "1";
$strExten = $_POST['txtphonenumber'];
$strCallerId = "Callback to <$strExten>";
$length = strlen($strExten);

if (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);

?>
<?php
}
else
{
?>
<br>
<br>
Enter your number<br>
<br>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" size="20" maxlength="12" name="txtphonenumber" placeholder="70001234500"><br>
<input type="submit" value="Call me">
</form>
<?php
}
?>
  1. Откройте скрипт в браузере и введите номер телефона, на который необходимо инициировать звонок.