Расширение Asterisk Click2Call для Google Chrome
Расширение для 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 при входящем звонке.