Сторона А(caller) звонит стороне Б(callee).
Дальше есть есть G и Б(callee) ложит трубку, звонок переходит на следующий за dial приоритет
g: Proceed with dialplan execution at the next priority in the current
extension if the destination channel hangs up.
кроме того есть F(если А(caller) ложит трубку), только с 1.8+
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.
Екстеншен h вызывается после завершения звонка(при отсутвии F,g или после полного выполнения диалплана). В екстеншене h вы уже не можете сделать проигрывания файлов,wait или чегото другого похожего(поскольку оба абонента УЖЕ откулючены). Также очень не рекомендуется выполнять какието операции длящиеся больше секунды в этом екстеншене, поскольку это может привести к зависанию астериска. Если надо длительные операции - маркируете в базе необходимость и выполняете внешним скриптом.
Екстеншен h выполняется в том контексте, в который пришел звонок или в который было сделано goto, НЕ работает если контекст включен include.
Все три опции - костыли внесенные людьми, которые не могли сделать без них(особенно h).
Есть нативная(не такая костыльная) опция hangup handler. Позволяет запустить несколько обработчиков одновременно и не заморачиваться последствиями от переходов по диалплану.
https://wiki.asterisk.org/wiki/display/AST/Hangup+Handlers
ответил
2016-04-13 06:42:14 +0400
meral 23347 ● 24 ● 20 ● 177
http://pro-sip.net/