Доброго всем дня! В астериске оч недавно, информации по моему вопросу не нашел.
Диалплан (насколько я понял) завершается после события Hangup, совершенным одной из сторон. Вопрос в следующем: можно ли после того, как на стороне астериска произойдет Hangup, проиграть звонящему звуковой файл, например? Куда смотреть?
бывает два hangup
1) от вызывающего(calling)
2) от вызываемого(called)
в случае 2 работает прекрасно флаг g каманды dial.
в 1 работает h,1, екстеншен. причем работает он в последнем контексте не вызваном через макро. тоесть если у вас вот так
[context1]
exten =>1,1,Goto(context2,1,1)
exten => h,1,Noop(1)
[context2]
exten => 1,1,Macro(doit,${EXTEN})
exten => h,1,Noop(2)
[macro-doit]
exten => s,1,Dial(SIP/${ARG1},,g)
exten => s,2,Playback(thanku)
exten => h,1,Noop(3)
то будет работать строчка во втором контексте это само по себе вызывает кучу нудобств.
ну у вас я так понимаю случай 2), тоесть вам просто надо заюзать g и проиграть следующим приоритетом.проиграть чтото called если был случай 1) не получится без очень сильных извращений.
Есть:
asterisk 1.6.2.22;
макрос с простым local outgoing context'ом:
exten => _1XX,1,Answer
exten => _1XX,(SIP/${EXTEN},15,m)
exten => _1XX,Hangup
exten => h,1,Playback(do-svidaniya)
exten => h,n,Hangup
звонок абонента А абоненту Б (с номера 100 (calling) - абонент А на номер 101 (called) абонент Б) .
Хочется, чтобы после поднятия трубки абонентом Б (так как ему идет звонок) и последующего "отбоя" шло сообщение, например "До свидания" , в случае если "отбой" идет от вызываемого абонента Б, то сообщение было бы у вызывающего абонента А, и наоборот, если "отбой" на стороне вызывающего абонента А, то сообщение слышал бы вызываемый абонент Б. На данный момент сообщение слышит абонент А, при "отбое" абонентом Б, если наоборот, то ошибка:
-- Executing [h@macro-localmacro:1] Playback("SIP/100-00000008", "do-svidaniya") in new stack
[Mar 4 14:48:45] WARNING[47426]: file.c:753 ast_readaudio_callback: Failed to write frame
-- <SIP/100-00000008> Playing 'do-svidaniya.gsm' (language 'ru')
[Mar 4 14:48:45] WARNING[47426]: app_playback.c:471 playback_exec: ast_streamfile failed on SIP/100-00000008 for do-svidaniya
-- Executing [h@macro-localmacro:2] Hangup("SIP/100-00000008", "") in new stack
Как сделать, чтобы при сбросе усановленного соединения вызывающим абонентом А, вызываемый абонент Б тоже слышал сообщение ?
Команда wait(например 10) до Playback или сразу после него не помогает как и параметр g.
P.S. Какими tag' ами выделять context' ы / макросы ?
ты задалбал. я тебе обстоятельно ответил, а ты вопрос удалил. ну и разбирайся теперь сам.чтоб реализовать это нужно EXPERT уровень. реализуется через два звонка в конференцию и отслеживания AMI всего происходящего. получается очень сложный диалплан, для тебя это будет как заклинания.
meral (Mar 5 '12)editнезя это просто написать.в астериске когда А ложит трубку убивается pbx_core и звонка уже нет. реализуется сложно. внешними программами,кучей UserEvents, отслеживанием hangup-ов и на страничку не описывается. говр. ж будет как заклинания и повлечет тысчу пятсот вопросов почему не работает что не так делаю. проще сказть что сделать нельзя.
meral (Mar 5 '12)editЗадан: Mar 5 '12
Просмотрен: 8,917 раз
Обновлен: Mar 05 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
копать в сторону h и g?
imag777 (Mar 5 '12)editи в сторону Asterisk 1.8
Zavr2008 (Mar 5 '12)editто есть на 1.6 вообще никак?
imag777 (Mar 5 '12)editВсе можно.
Просто попробуйте написать простой диалплан и посмотрите откуда что идет и берется. На сколько помню вызывается экстен h тот, который в контексте создания канала. но могу ошибаться. В 1.8 уже вроде все h вызываются по пути следования.
switch (Mar 5 '12)editпонятно. спасибо за ответ!
imag777 (Mar 5 '12)edit