AGI

Материал из Xgu.ru

Перейти к: навигация, поиск


AGI (Asterisk Gateway Interface) — интерфейс к программной АТС Asterisk, предназначенный для интеграции её с внешними программными модулями и расширения с их помощью её функциональности.

AGI-скрипт взаимодействует с Asterisk через стандартные потоки ввода вывода, поэтому AGI-скрипты могут быть написаны на любом языке программирования, который умеет работать со стандартными потоками. Существуют готовые библиотеки для работы с AGI для языков программирования Perl, Python, Ruby, PHP, Haskell и ряда других.

[править] Пример AGI-скрипта

#!/usr/bin/perl

use Asterisk::AGI;
use File::Basename;
use Digest::MD5 qw(md5_hex);

$AGI = new Asterisk::AGI;

my %input = $AGI->ReadParse();
my ($text)=@ARGV;
my $hash = md5_hex($text);
my $sounddir = "/var/lib/asterisk/sounds/tts";
my $wavefile = "$sounddir/"."tts-$hash.wav";
my $t2wp="";

unless (-f $wavefile) {
        open(fileOUT, ">$sounddir"."/say-text-$hash.txt");
        print fileOUT "$text";
        close(fileOUT);

        my $execf=$t2wp."text2wave $sounddir/say-text-$hash.txt -F 8000 -o $wavefile";
        system($execf);
       unlink($sounddir."/say-text-$hash.txt");
}
$wavefile =~ s/.wav//;
$AGI->exec('tts/'.basename($wavefile,".wav"));

[править] Дополнительная информация


Источник — «http://xgu.ru/wiki/AGI»
На других языках