Выполнение скрипта в расширении h в пользовательском контексте

Я хочу выполнить скрипт при завершении вызова, поэтому я создал собственный контекст в extensions_custom.conf, как показано ниже:

[coscon]
exten => **5,1,NoOp()
same => n,Answer()
exten => h,1,System(/usr/local/src/myscript.php)

проблема в том, что расширение h после зависания в этом контексте вообще не выполняется. любой совет?

Обновлять

позвольте мне уточнить это. в файле extensions_custom.conf я включаю контекст coscon. это контекст extensions_custom.conf:

[from-internal-custom]
exten => 1234,1,Playback(demo-congrats)  ; extensions can dial 1234
exten => 1234,2,Hangup()
exten => h,1,Hangup()
include => coscon

[coscon]
exten => **5,1,NoOp()
same => n,Answer()
exten => h,1,System(/usr/local/src/myscript.php)

Теперь, когда я вызываю **5 с софтфона, это вывод командной строки Astrisk:

== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
    -- Executing [**5@from-internal:1] NoOp("SIP/102-00000035", "") in new stack
    -- Executing [**5@from-internal:2] Answer("SIP/102-00000035", "") in new stack
    -- Executing [**5@from-internal:3] Pickup("SIP/102-00000035","5&5@PICKUPMARK") in new stack
[2017-06-13 21:10:39] NOTICE[10676][C-00000035]: app_directed_pickup.c:302 pickup_exec: No target channel found for 5@from-internal.
[2017-06-13 21:10:39] NOTICE[10676][C-00000035]: app_directed_pickup.c:302 pickup_exec: No target channel found for 5@PICKUPMARK.
    -- Executing [**5@from-internal:4] Hangup("SIP/102-00000035", "") in new stack
    == Spawn extension (from-internal, **5, 4) exited non-zero on 'SIP/102-00000035'
    -- Executing [h@from-internal:1] Hangup("SIP/102-00000035", "") in new stack
    == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/102-00000035'

Я думаю, что расширение h по умолчанию для внутреннего контекста выполняется, но я не знаю, как его переопределить.


person PaleBlossom    schedule 13.06.2017    source источник
comment
Где вывод отладки? Так работает, это точно.   -  person arheops    schedule 13.06.2017
comment
Пожалуйста, покажите вывод консоли при тестировании вызова. в нынешнем виде у нас недостаточно (каких-либо) подробностей об ошибках, чтобы помочь вам.   -  person user3788685    schedule 13.06.2017
comment
Я обновил свой вопрос.   -  person PaleBlossom    schedule 14.06.2017


Ответы (1)


Ваша проблема следующая:

Допустим, у вас есть 2 контекста

[a]
exten => h,1,Noop(a)
exten => 1,1,Noop(1)
include => b
[b]
exten => h,1,Noop(b)
exten => 2,1,Noop(2)

Если ваш контекст [a], он включает [b], да. НО, если расширение существует в [a], оно будет выполнено в [a], а не в [b]. Таким образом, расширение h будет выполняться из контекста[a].

если вы хотите эту работу, вы должны сделать так:

   [b]
    exten =>h,1,Noop(b)
    exten => 2,1,Goto(${EXTEN},2); now even if included, you WILL BE in context b
    exten => 2,2,Noop(2);this one alway context b
person arheops    schedule 16.06.2017
comment
Сэр, как вы можете видеть из расширения журнала Asterisk cli **5, выполняется. это не проблема. моя проблема только в расширении h. Я попробовал ваше решение без везения. Спасибо, в любом случае. - person PaleBlossom; 17.06.2017
comment
Я вижу из вашего журнала h@from-internal:1] Hangup(SIP/102-00000035, это означает, что вы контекст a=from-internal выполняете ПЕРВОЕ h-расширение (in from-internal-custom). оно работает так, как ДОЛЖНО, здесь нет проблем. - person arheops; 17.06.2017