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

Прошу помощи 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?

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

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

спросил 2013-08-09 12:31:08 +0400

sergkzntsv Gravatar sergkzntsv
1 2 2

обновил 2013-08-09 12:31:50 +0400

Comments

$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 )редактировать
exten = _X,1,Read(${UNIQUEID}) 
exten = _X.,n,Hangup()

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

zzuz ( 2013-08-26 12:37:38 +0400 )редактировать

3 Ответа

1

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

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

ответил 2013-08-09 12:37:19 +0400

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

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

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

ответил 2013-08-10 22:14:17 +0400

boffart Gravatar boffart flag of Russian Federation
51 3 1 4
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");
ссылка удалить спам редактировать

ответил 2013-08-09 14:30:39 +0400

octopas Gravatar octopas
111 5 1 3

обновил 2013-08-09 14:31:36 +0400

Ваш ответ

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 ленту новостей

Статистика

Задан: 2013-08-09 12:31:08 +0400

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

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

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

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