First time here? Check out the FAQ!

Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Прошу помощи Asterisk - AGI

0

Нужно по окончанию звонка запускать скрипт, в который передавать переменную 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?

Заранее спасибо!

спросил Aug 9 '13

sergkzntsv Gravatar sergkzntsv
1 2 3

обновил Aug 9 '13

Comments

$chan - что это и откуда взялось?

zzuz (Aug 9 '13)edit

Спасибо откликнувшимся! Скрипт запустился, переменную поймали. но появилась следующая проблема:

При исходящем звонке запись в базу 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 (Aug 26 '13)edit

И что? Не работает?

zzuz (Aug 26 '13)edit
exten = _X,1,Read(${UNIQUEID}) 
exten
= _X.,n,Hangup()

Два разных экстеншена.

zzuz (Aug 26 '13)edit

3 Ответа

1

Попробуйте использовать готовую библиотеку для phpagi, например из состава freepbx. Трудно сказать без лога что у вас там. Попробуйте отладку AGI включить (agi set debug)

ссылка удалить спам редактировать

ответил Aug 9 '13

switch Gravatar switch
8334 11 7 92
http://lynks.ru/
0

Вот ссылка : AGI переменные канала Надеюсь поможет.

ссылка удалить спам редактировать

ответил Aug 10 '13

boffart Gravatar boffart flag of Russian Federation
61 3 2 5
http://www.telefon1c.ru/
0

Как вариант:

в директории скрипта

создать файл 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");
ссылка удалить спам редактировать

ответил Aug 9 '13

octopas Gravatar octopas
111 5 1 3

обновил Aug 9 '13

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: Aug 9 '13

Просмотрен: 979 раз

Обновлен: Aug 10 '13

Похожие вопросы:

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.