2016-03-01 1 views
0

Я хочу выполнить скрипт AGI для вызывающей стороны после того, как вызываемая сторона повесится. Например, для проведения опроса для клиентов я собираюсь запустить скрипт AGI после того, как агент зависает. К сожалению, когда скрипты AGI запускают отладочный вывод agi, он говорит: «511: команда не может быть выполнена на мертвом канале» Я использую такие команды, как «ANSWER» или «STREAM FILE» в моем скрипте agi, которому нужен канал для запуска на. Я знаю, что вызывающий канал зависает, как только вызываемая сторона зависает. Я попробовал DeadAGI вместо AGI, а также опцию «g» в команде набора, но ни одна из них не работает. Итак, я думаю, что мне нужно найти решение, которое поддерживает вызывающий канал, чтобы я мог запустить свой сценарий. Любое предложение, пожалуйста?Продолжить вызов канала после того, как вызываемый канал зависает в Asterisk

ответ

0

Вы не должны использовать параметр «g» для этого случая, потому что это зависание CALLER. Вы должны использовать «F»

F([[context^]exten^]priority): When the caller hangs up, transfer 
    the *called* party to the specified destination and *start* execution 
    at that location. 
    NOTE: Any channel variables you want the called channel to inherit 
    from the caller channel must be prefixed with one or two underbars ('_'). 
    F: When the caller hangs up, transfer the *called* party to the next 
    priority of the current extension and *start* execution at that location. 
    NOTE: Any channel variables you want the called channel to inherit 
    from the caller channel must be prefixed with one or two underbars ('_'). 
    NOTE: Using this option from a Macro() or GoSub() might not make 
    sense as there would be no return points. 
    g: Proceed with dialplan execution at the next priority in the current 
    extension if the destination channel hangs up. 
+0

На самом деле я хочу сделать этот сценарий для входящих вызовов, поэтому я хочу сделать что-то для внешнего звонящего после того, как внутри вызываемого абонента зависает. как вы упомянули здесь, опция «F» предназначена для разблокировки звонящего. Это другое – Amir

+0

Нет проблем, если CALLED party hangup. Вариант g и аналогичные параметры для очередей работают нормально, см. Пример в файле extensions.conf.sample Вероятно, вы просто ничего не делаете. – arheops

+0

Я работаю с elastix 2.3. Я написал очень простой код: '[test] exten => 22,1, dial (sip/100) exten => h, 1, воспроизведение (до свидания)' Он должен воспроизводить звук прощания после 100 зависаний, но он не делает .Это действительно странно – Amir

0

Наконец-то я нашел ответ. Проблема в том, что нам не нужно выполнять скрипт agi в h-расширении, иначе мы получим ошибку для некоторых функций, таких как answer или streamfile в agi. мы должны перенаправить вызов на некоторое расширение до расширения h, и для этого в elastix мне пришлось изменить extensions.conf.