да, вы правильно поняли, именно то что мне нужно, спасибо!
imag777 ( 2012-03-05 17:41:08 +0400 )редактироватьнафига. я даже блог не веду. у меня есть чем занятсо.
meral ( 2012-03-05 23:17:20 +0400 )редактироватьДоброго всем дня! В астериске оч недавно, информации по моему вопросу не нашел.
Диалплан (насколько я понял) завершается после события 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) не получится без очень сильных извращений.
да, вы правильно поняли, именно то что мне нужно, спасибо!
imag777 ( 2012-03-05 17:41:08 +0400 )редактироватьнафига. я даже блог не веду. у меня есть чем занятсо.
meral ( 2012-03-05 23:17:20 +0400 )редактироватьЕсть:
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 ( 2012-03-05 16:27:25 +0400 )редактироватьMeral, чего такой злой. :) У меня browser, блин глючит (поставил "быстрый" Chrome) , мой вопрос "ушел" только с 4 попытки, раз 8 потом заходил, ничего не было (ни одного ответа) , и кэш чистил. Если тебе не сложно напиши здесь.
oooo1 ( 2012-03-05 16:35:12 +0400 )редактироватьОк. Будет время, поковыряю. Ошибка из-за особенности работы * или глюк ? В 1.8 версии с этим проще ?
oooo1 ( 2012-03-05 16:37:44 +0400 )редактироватьнезя это просто написать.в астериске когда А ложит трубку убивается pbx_core и звонка уже нет. реализуется сложно. внешними программами,кучей UserEvents, отслеживанием hangup-ов и на страничку не описывается. говр. ж будет как заклинания и повлечет тысчу пятсот вопросов почему не работает что не так делаю. проще сказть что сделать нельзя.
meral ( 2012-03-05 16:38:17 +0400 )редактироватьв 1.8 может еще пройдет Transfer кудато called, но врядли. в 1.6 точно не пройдет.
meral ( 2012-03-05 16:39:38 +0400 )редактироватьнет никакой ошибки. все так и должно работать. ошбка в логах у тебя от того, что он задержку 0.5 сек делает перед убиванием pbx_core.
meral ( 2012-03-05 16:40:35 +0400 )редактироватьЖаль, что с внешними программами, так бы прикольно было - клиент услышал "До свидания" после того, как сотрудник "положил трубку" , вызывающий - сотрудник, вызываемый клиент. Как с этим в 10-ке, не "ковырял" этот момент ?
oooo1 ( 2012-03-05 17:09:44 +0400 )редактировать10ку я вообще не запускал. пусть сами в ней баги ловят. я пока ловлю баги в 1.8. можно достаточно просто реализовать через спецкод.тоесть сотрудник нажимает *7 и клиент слышит досвиданья потом дисконнект. смотрите features.conf
meral ( 2012-03-05 23:19:00 +0400 )редактироватьесли ваше "прикольно" стоит испорченой статистики и большой сумы наличных - обратитесь к експерту. иначе прийдется долго учится чтоб так работало.
meral ( 2012-03-05 23:20:00 +0400 )редактироватьЗадан: 2012-03-05 13:55:26 +0400
Просмотрен: 8,900 раз
Обновлен: Mar 05 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
копать в сторону h и g?
imag777 ( 2012-03-05 14:01:36 +0400 )редактироватьи в сторону Asterisk 1.8
Zavr2008 ( 2012-03-05 14:04:29 +0400 )редактироватьто есть на 1.6 вообще никак?
imag777 ( 2012-03-05 14:07:03 +0400 )редактироватьВсе можно.
Просто попробуйте написать простой диалплан и посмотрите откуда что идет и берется. На сколько помню вызывается экстен h тот, который в контексте создания канала. но могу ошибаться. В 1.8 уже вроде все h вызываются по пути следования.
switch ( 2012-03-05 14:23:55 +0400 )редактироватьпонятно. спасибо за ответ!
imag777 ( 2012-03-05 14:31:59 +0400 )редактировать