Нужно по окончанию звонка запускать скрипт, в который передавать переменную UNIQUEID (уникальный номер звонка). Как не крутили - переменная не передается. Что делаю:
extensions.conf
..... exten => h,1,Read(${UNIQUEID})
exten => h,n,AGI(test.php,${UNIQUEID})
exten => _X.,n,Hangup()
test.php:
#!/usr/bin/php-cgi -q
$file="text.txt";
if( !file_exists($file)) {
$fp = fopen($file, "w");
fwrite($fp, $chan);
fclose ($fp);
}
?>
Этот скрипт отрабатывает и все хорошо. т.е. астериск по окончанию звонка его запускает.
Подскажите как мне выдернуть из астериска переменную UNIQUEID?
Заранее спасибо!
Вот ссылка : AGI переменные канала Надеюсь поможет.
Как вариант:
в директории скрипта
создать файл composer.json
{
"require" : {
"php" : ">=5.3",
"marcelog/pagi" : "dev-master"
},
"repositories": [
{
"type": "pear",
"url": "http://pear.apache.org/log4php/"
}]
}
$ curl -sS https://getcomposer.org/installer | php
$ php composer.phar install
в той-же директории test.php
<?php
require_once dirname(__FILE__)."/vendor/autoload.php";
$agi = PAGI\Client\Impl\ClientImpl::getInstance();
$uniqueid = $agi->getVariable("UNIQUEID");
Попробуйте использовать готовую библиотеку для phpagi, например из состава freepbx. Трудно сказать без лога что у вас там. Попробуйте отладку AGI включить (agi set debug)
Задан: 2013-08-09 12:31:08 +0400
Просмотрен: 952 раз
Обновлен: Aug 10 '13
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
$chan - что это и откуда взялось?
zzuz ( 2013-08-09 14:03:50 +0400 )редактироватьСпасибо откликнувшимся! Скрипт запустился, переменную поймали. но появилась следующая проблема:
При исходящем звонке запись в базу MySQL проходит, видимо, сразу после Hangup().
Соответственно скрипт в базе запись не находит.
Изначально делалось все для того, чтоб подсчитать стоимость звонков.
Планировалось запускать скрипт после каждого звонка и записывать значение в таблицу CDR о стоимости каждого звонка. в личном кабинете можно було бы все удобно смотреть почти в реальном времени.
Вопрос в следующем. Как сделать так, чтоб скрипт запустился после Hangup()
На данный момент сейчас настроено так:
exten => _X,1,Read(${UNIQUEID})
exten => h,1,AGI(/var/www/localhost/htdocs/asterisk/test.php,${UNIQUEID})
exten => h,n,Noop(end)
exten => _X.,n,Hangup()
При такой конструкции скрипт не запускается:
exten => _X,1,Read(${UNIQUEID})
exten => _X.,n,Hangup()
exten => h,1,AGI(/var/www/localhost/htdocs/asterisk/test.php,${UNIQUEID})
exten => h,n,Noop(end)
sergkzntsv ( 2013-08-26 12:13:57 +0400 )редактироватьИ что? Не работает?
zzuz ( 2013-08-26 12:36:01 +0400 )редактироватьДва разных экстеншена.
zzuz ( 2013-08-26 12:37:38 +0400 )редактировать