Разбираясь с AGI для Asterisk

Егоркин09.07.2012 в 15:55
AGI - это встроенный в Asterisk метод выполнения внешних скриптов (по аналогии с CGI для http серверов), который может расширить функциональность asterisk при помощи других языков программирования. Таких, как: Perl, PHP, C, Pascal, Bourne Shell - все зависит от Вашего желания и умения.

Разбирался на днях с 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();
  }





Оставить комментарий

Вы не зарегистрированы, решите арифметическую задачу на картинке,
введите ответ прописью
(обновить картинку).