Страница 1 из 3

Повторная обработка входящего звонка после Hangup

Добавлено: 16 июл 2013, 06:00
Zver
Здравствуйте.

Хочу реализовать CallBack для наших сотрудников. Но * не завершает звонок, а начинает повторно обрабатывать по диалплану. Но во второй раз не определяет CALLERID, и начинают звонить телефоны в офисе.
Логи:

Код: Выделить всё

    -- Starting simple switch on 'DAHDI/13-1'
    -- Executing [s@incoming:1] NoOp("DAHDI/13-1", "Incoming number:-9<Мой номер>4-") in new stack
    -- Executing [s@incoming:2] Set("DAHDI/13-1", "callnum=9<Мой номер>4") in new stack
    -- Executing [s@incoming:3] GotoIf("DAHDI/13-1", "1?:next") in new stack
    -- Executing [s@incoming:4] Answer("DAHDI/13-1", "") in new stack
    -- Executing [s@incoming:5] Hangup("DAHDI/13-1", "") in new stack
  == Spawn extension (incoming, s, 5) exited non-zero on 'DAHDI/13-1'
    -- Hanging up on 'DAHDI/13-1'
    -- Hungup 'DAHDI/13-1'
    -- Starting simple switch on 'DAHDI/13-1'
    -- Executing [s@incoming:1] NoOp("DAHDI/13-1", "Incoming number:--") in new stack
    -- Executing [s@incoming:2] Set("DAHDI/13-1", "callnum=") in new stack
    -- Executing [s@incoming:3] GotoIf("DAHDI/13-1", "0?:next") in new stack
    -- Goto (incoming,s,6)
    -- Executing [s@incoming:6] Dial("DAHDI/13-1", "DAHDI/2&LOCAL/other@incoming,,tm") in new stack
Диалплан:

Код: Выделить всё

exten=>other,1,Wait(20)
exten=>other,n,Dial(DAHDI/3&DAHDI/4&SIP/150)
exten=>s,1,NoOp(Incoming number:-${CALLERID(num)}-)
exten=>s,2,Set(callnum=${CALLERID(num)})
exten=>s,n,GotoIf($["${callnum}"="9<Мой номер>4"]?:next)
exten=>s,n,Answer
exten=>s,n,Hangup
exten=>s,n(next),Dial(DAHDI/2&LOCAL/other@incoming,,tm)
exten=>s,n,Hangup
На мобильном телефоне даже не заметно, что диалплан выполняется повторно. Постоянно идут гудки вызова. Ни как не могу понять почему * не может завершить входящий звонок. И уж тем более почему начинает отрабатывать диалплан повторно.

Re: Повторная обработка входящего звонка после Hangup

Добавлено: 16 июл 2013, 09:25
ded
Почитайте теорию: что означает фраза
== Spawn extension (incoming, s, 5) exited non-zero on 'DAHDI/13-1'
при выполнении диал-плана.
А лучше бы не изобретали велосипед, он уже изобретён. Во всех дистрибутивах есть модуль Callback.

Re: Повторная обработка входящего звонка после Hangup

Добавлено: 16 июл 2013, 10:25
Zver
Мною прочитаны Asterisk: будущее телефонии и всевозможные форумы. Пока я не нашел при каких условиях в логах пишется "Spawn extension". Может подскажите, что это значит. А еще лучше посоветуйте литературу...

Использую Asterisk 1.8.13.1. Не нашел там штатного callback.

Re: Повторная обработка входящего звонка после Hangup

Добавлено: 16 июл 2013, 11:28
ded
Используйте ДИСТРИБУТИВ а не голый Asterisk 1.8.13.1.
Дистрибутив: инсталляционный пакет, включающий в себя Linux, Apache, MySQL, PHP (LAMP) + Asterisk + FreePBX (or something else).

Re: Повторная обработка входящего звонка после Hangup

Добавлено: 16 июл 2013, 12:46
Wapo
После того как вызов завершен выполнение переходит на экстен h

Вот и пропишите:

exten => h,1,NoOp(My callback)
exten => h,n, ......

Re: Повторная обработка входящего звонка после Hangup

Добавлено: 16 июл 2013, 13:55
Zver
to ded

Спасибо за совет, но хочется понять как все работает. И все таки возвращаясь к нашему вопросу. При каких обстоятельствах в логах появляется сообщение "Spawn extension"?

Re: Повторная обработка входящего звонка после Hangup

Добавлено: 16 июл 2013, 16:21
ded
Вы просите помощи клуба? Но это совсем не трудный вопрос. Ответ - в описании работы диал-плана, хотя бы в книге "Будущее телефонии"

Re: Повторная обработка входящего звонка после Hangup

Добавлено: 17 июл 2013, 07:21
Zver
to ded
Я уверен что это не трудный вопрос, иначе я не написал бы его в раздел "Вопросы новичков". В описании этого раздела написано "Новичком считается только что прочитавший «Астериск - будущее телефонии»". Я добросовестно прочитал эту книгу (кстати благодаря Вам вчера пересмотрел ее еще раз) и у меня есть вопрос, который я здесь и задал в надежде, что профессионалы или хотя бы специалисты помогут в изучении этого ПО. Кстати упоминание о "Spawn extension" в книге нет! Прошу Вас больше не играть в кошки-мышки и рассказать где я ошибся.

Для всех остальных.
Вопрос почему канал после выполнения программы Hangup не прерывается, а переходит в начало для меня остается открытым и непонятным. Если кто то знает ответ или знает где об этом можно почитать прошу помочь и рассказать где я ошибся или где об этом почитать.

Re: Повторная обработка входящего звонка после Hangup

Добавлено: 17 июл 2013, 08:27
Zver
to Wapo

Экстеншн h в данном контексте не определен. И как видно канал после Hangup переходит в начало этого же контекста этого же экстеншена, т.е. обрабатывается повторно.

Re: Повторная обработка входящего звонка после Hangup

Добавлено: 17 июл 2013, 08:59
Vlad1983
ни чего там никуда не переходит
вся проблема из-за аналоговой линии
порт платы не понимает что звонка там уже нет, т.к. на линии сохраняется повышенное напряжение