Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Есть ли жизнь после Hangup?

0

Доброго всем дня! В астериске оч недавно, информации по моему вопросу не нашел.

Диалплан (насколько я понял) завершается после события Hangup, совершенным одной из сторон. Вопрос в следующем: можно ли после того, как на стороне астериска произойдет Hangup, проиграть звонящему звуковой файл, например? Куда смотреть?

удалить закрыть спам изменить тег редактировать

спросил 2012-03-05 13:55:26 +0400

imag777 Gravatar imag777
37 6 1 9

Comments

копать в сторону 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 )редактировать

2 Ответа

2

бывает два 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) не получится без очень сильных извращений.

ссылка удалить спам редактировать

ответил 2012-03-05 16:06:26 +0400

meral Gravatar meral flag of Ukraine
21228 24 19 169
http://pro-sip.net/

Comments

да, вы правильно поняли, именно то что мне нужно, спасибо!

imag777 ( 2012-03-05 17:41:08 +0400 )редактировать

meral, пора тебе свою книгу написать!!!

Zavr2008 ( 2012-03-05 21:35:28 +0400 )редактировать

нафига. я даже блог не веду. у меня есть чем занятсо.

meral ( 2012-03-05 23:17:20 +0400 )редактировать
0

Есть:

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' ы / макросы ?

ссылка удалить спам редактировать

ответил 2012-03-05 16:25:17 +0400

oooo1 Gravatar oooo1
1 5 2 6

обновил 2012-03-05 16:41:41 +0400

meral Gravatar meral flag of Ukraine
21228 24 19 169
http://pro-sip.net/

Comments

ты задалбал. я тебе обстоятельно ответил, а ты вопрос удалил. ну и разбирайся теперь сам.чтоб реализовать это нужно 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 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2012-03-05 13:55:26 +0400

Просмотрен: 4,435 раз

Обновлен: Mar 05 '12

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.