Разбираясь с AGI для Asterisk
AGI - это встроенный в Asterisk метод выполнения внешних скриптов (по аналогии с CGI для http серверов), который может расширить функциональность asterisk при помощи других языков программирования. Таких, как: Perl, PHP, C, Pascal, Bourne Shell - все зависит от Вашего желания и умения.
Разбирался на днях с PHP - AGI забавная скажу вам штукенция.
сама библиотека phpagi тут(в исправленном мною варианте), в чем состоит само исправление, напишу ниже.
Первое что пришло на ум это рулетка. Тоесть поступает звонок и система отправляет его на произвольный телефон из списка.
Реальзовалось очень просто:
в файлик counter.txt пишется на какой номер откуда и во сколько скрипт перебросил клиента.
Следующий пример который хотелось бы привести, это научить астериску разговаривать. Для этого есть функция text2wave. PHP-AGI умеет работать с Festival(система перевода текста в речь). Но в PHP-AGI реализована возможность только английской речи. поэтому пришлось вызов фестиваля переписать с английской речи на русскую. Для того чтобы заставить сам фестиваль разговаривать по русски, есть в Debian пакетик festvox-ru.
Ну и сам пример реализации такой функции, с распознаванием звонящего.
Разбирался на днях с PHP - AGI забавная скажу вам штукенция.
сама библиотека phpagi тут(в исправленном мною варианте), в чем состоит само исправление, напишу ниже.
Первое что пришло на ум это рулетка. Тоесть поступает звонок и система отправляет его на произвольный телефон из списка.
Реальзовалось очень просто:
set_time_limit(0);
require('phpagi.php'); # специальная библиотека для удобства работы с AGI
$numbers = array(103, 109, 106, 111, 108, 102, 103); # массив с номерами
shuffle($numbers); # тщательно перемешиваем
$agi = new AGI();
$number=$numbers[1];
$cid = $agi->request['agi_callerid'];
for ($i=0;$i<=1;$i++)
{
$rand_keys = array_rand($numbers);
$num=$numbers[$rand_keys]; # ну и для пущщей уверенности достаем произвольный элемент нашего перемешанного массива.
//-----------------------------------------------------
$date_today = date("m.d.y"); //присвоено 03.12.01
$today = date("H:i:s"); //присвоит элементу 17:16:17
$fp = fopen("/var/lib/asterisk/agi-bin/counter.txt", "a"); // Открываем файл в режиме записи
$mytext = $date_today.";".$today.";".$cid.";".$num."rn"; // Исходная строка
fwrite($fp, $mytext); // Запись в файл
fclose($fp); //Закрытие файла
//-----------------------------------------------------
$agi->exec_dial("SIP","$num","5,Tt"); # ну и собственно звонок произвольному манагеру
}
в файлик counter.txt пишется на какой номер откуда и во сколько скрипт перебросил клиента.
Следующий пример который хотелось бы привести, это научить астериску разговаривать. Для этого есть функция text2wave. PHP-AGI умеет работать с Festival(система перевода текста в речь). Но в PHP-AGI реализована возможность только английской речи. поэтому пришлось вызов фестиваля переписать с английской речи на русскую. Для того чтобы заставить сам фестиваль разговаривать по русски, есть в Debian пакетик festvox-ru.
Ну и сам пример реализации такой функции, с распознаванием звонящего.
#!/usr/bin/php -q
set_time_limit(0);
require('phpagi.php');
$agi = new AGI();
$cid = $agi->request['agi_callerid'];
if ($cid==8312332369) {
$agi->text2wav("Привет, Егор.");
$agi->hangup();
}
→ Разбираясь с AGI для Asterisk
Оставить комментарий
Все что так или иначе связано с железом и ПО для него)
линуксойды, видузятники, цисководы и многие другие.
welcome! =)
линуксойды, видузятники, цисководы и многие другие.
welcome! =)

