13.08.2013

Расширение Asterisk Click2Call для Google Chrome


English version

Расширение для Google Chrome реализует функционал click2call с использованием сервера Asterisk. После установки расширения пользователь может инициировать звонки из контекстного меню браузера на выделенные мышью телефонные номера.

Шаг 0. Начиная с Asterisk версии 12 в расширении можно выбрать интерфейс по которому будет инициироваться вызов - AMI или ARI. При использовании ARI серверный скрипт не нужен, поэтому можно пропустить шаги 1-3 и начать установку с настройки пользователя ARI.

Шаг 1. Добавляем менеджера в /etc/asterisk/manager.conf

[bitree]
secret=bitree_secret
writetimeout=100
read=system,call,log,verbose,command,agent,user,config,originate
write=system,call,log,verbose,command,agent,user,config,originate

 

Шаг 2. Создаем скрипт, который будет обращаться к Asterisk Manager Interface.

Пример для Perl:

#!/usr/bin/perl
use Asterisk::AMI;
use CGI;
my $q = new CGI;
#the phone number you want to dial
my $phone = $q->param("phone");
#your Asterisk extenstion
my $exten = $q->param("exten");
#replacing +7 with 8
$phone =~ s/^+7/8/;
#cut off non-digit characters;
$phone =~ s/\D//g;
#connecting to asterisk
my $astman = Asterisk::AMI->new(PeerAddr => '127.0.0.1',
                                PeerPort => '5038',
                                Username => 'bitree',
                                Secret => 'bitree_secret'
                                );
        
die "Unable to connect to asterisk" unless ($astman);
#and finally making the call
my $response = $astman->action({Action => 'Originate',
                                Channel => "Local/$exten\@from-internal",
                                Context => 'from-internal',
                                Exten => "$phone", 
                                Priority => 1,
                                WaitTime => 15,
                                Callerid => $phone});

 

Пример для 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.1";

                $socket = fsockopen($asterisk_ip,"5038", $errno, $errstr, $timeout);
                fputs($socket, "Action: Login\r\n");
                fputs($socket, "UserName: bitree\r\n");
                fputs($socket, "Secret: bitree_secret\r\n\r\n");

                $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.
<?}?>

 

Шаг 3. Далее нужно перенести скрипт на веб-сервер, установить правильные разрешения на файл (owner, execute) и проверить его работоспособность запросом:

http://asterisk/amiscript.php?phone=3434343&exten=101

В результате должен зазвонить экстеншн 101, а после ответа на звонок - произойти вызов номера 3434343.

 

Шаг 4. Если все ОК, устанавливаем расширение Chrome.

 

Шаг 5. После этого необходимо настроить расширение - указать экстеншн, с которого будет инициироваться звонок и URL AMI-скрипта.

 

Шаг 6. Расширение готово к работе! Чтобы инициировать звонок - нужно выделить телефонный номер, вызвать контекстное меню Chrome правой кнопкой мыши и выбрать пункт Вызвать.

 

Шаг 7. При желании можно настроить базовую аутентификацию на веб-сервере для защиты скрипта. Используйте поля Username и Password для ввода имени и пароля.

 

Шаг 8. Для замены определенных символов на другие, например +7 на 8, используйте поле Replace characters. Синтаксис следующий +7|8 (заменить все вхождения +7 в номере на 8). Можно указать несколько правил через запятую. Имейте ввиду, что все нечисловые символы будут удалены из номера телефона автоматически, независимо от данной настройки.

 

NEW! Теперь расширение может подсвечивать телефонные номера и преобразовывать их в ссылки.

 

Попробуйте также наше расширение, отображающее CallerID при входящем звонке.



© Битри 2013 - Обслуживание компьютеров, ИТ-аутсорсинг, программные продукты 1С