Перейти к содержимому


Фотография
* * * * * 1 Голосов

Звонки из браузера Asterisk Click 2 call


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 Demonik

Demonik

    Учусь Linux

  • Администраторы
  • 43 сообщений

Отправлено 28 Март 2018 - 04:09

Звоним из браузера с помощью правого клика мышки

 
Все ниже перечисленное работает следующим образом. В браузере мы выделяем номер, нажимаем правую клавишу мыши и выбираем "позвонить". Расширение в браузере отправляет данные в скрипт, тот Asterisk-у, а станция уже вызывает внутреннего абонента (кто звонит) и если он взял трубку - внешнего (кому звоним).
 
1. Создадим небольшой скрипт, опубликуем его через вэб сервер и настроим Asterisk в /etc/asterisk/manager.conf :
 
Создаем файл:

touch click2call.php

Заполним файл:

<?if (!empty( $_REQUEST['phone'])   && !empty( $_REQUEST['exten']  ) )
{
        $num = $_REQUEST['phone'];
        $ext = $_REQUEST['exten'];
        $num = preg_replace( "/^\+7/", "8", $num );
        $num = preg_replace( "/\D/", "", $num );

        if ( ! empty( $num ) )
        {
                echo "Dialing $num\r\n";

                $timeout = 10;
                $asterisk_ip = "127.0.0.01";

                $socket = fsockopen($asterisk_ip,"5038", $errno, $errstr, $timeout);
                fputs($socket, "Action: Login\r\n");
                fputs($socket, "UserName: LoginAMI\r\n");
                fputs($socket, "Secret: PassAMI\r\n\r\n");
                sleep (1);
                $wrets=fgets($socket,128);

                echo $wrets;

                fputs($socket, "Action: Originate\r\n" );
                fputs($socket, "Channel: Local/$ext@from-internal\r\n" );
                fputs($socket, "Exten: $num\r\n" );
                fputs($socket, "Context: from-internal\r\n" );
                fputs($socket, "Priority: 1\r\n" );
                fputs($socket, "Async: yes\r\n" );
                fputs($socket, "WaitTime: 15\r\n" );
                fputs($socket, "Callerid: $num\r\n\r\n" );

                $wrets=fgets($socket,128);
                echo $wrets;
        }
        else
        {
                echo "Unable to determine number from (" . $_REQUEST['phone'] . ")\r\n";
        }
}
else
{?>Please enter a number to dial.
<?}?>

Скрипт принимает два обязательных параметра: phone — куда звоним и exten — откуда звоним. Проверить его работоспособность можно, набрав в адресной строке запрос 

http://asterisk_ip/click2call.php?phone=3434343&exten=101

В результате должен зазвонить экстеншн 101, а при ответе на него — произойти вызов телефонного номера, переданного в параметре phone. Если позволяют правила наборов — в exten можно передавать и внешний номер, например мобильный. Контекст в скрипте выставлен дефолтный "from-internal" смените на свой если требуется. Желательно ограничить доступ к скрипту извне.

 
Настроим manager.conf в Asterisk

[general]
enabled = yes
webenabled = yes

port = 5038
bindaddr = 127.0.0.1

allowmultiplelogin = yes
displayconnects = yes

[LoginAMI]         ; Это и есть логин 
secret = PassAMI   ; Пароль
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/24
displayconnects = yes

read = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate,all
write = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate,all

Серверная часть закончена.
 
2. Установка расширения в браузер Google Chrome и его настройка.
 
Качаем расширение по ссылке и устанавливаем в браузер (Asterisk Click2Call), так же можно скачать из магазина расширений.
При запуске расширения нужно его настроить указав ваш экстеншн (внутренний номер) и путь к скрипту опубликованному и доступному на вэб сервере.
 
Теперь вы можете звонить на выделенный номер с любой страницы в Chrome правым кликом мыши.
 
Информация использовалась со статьи https://habrahabr.ru/sandbox/70020/


Есть вопросы или пожелания? demonik.0789@gmail.com

Сайт: https://asteriskperm.ru/

Группа ВК: ССЫЛКА (Заходим и вступаем! ;D)