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

SIPPER

Добавлено: 28 фев 2017, 12:47
evros
Добрый день.
Есть два астера соединенных IAX2 транками. На обоих сиповые аккаунты.
На одном астере номера 1ХХХ, на втором 2ХХХ.
В диалплане второго:
exten=>_1XXX,1,Answer()
exten=>_1XXX,n,Dial(IAX2/Trunk/${EXTEN},30,t)
exten=>_1XXX,n,Hangup()

Захотелось на втором проигрывать занятость номера, недоступность и т.д., сделал так:
exten=>_1XXX,1,Answer()
exten=>_1XXX,n,GotoIf($["${SIPPEER(${EXTEN},status)}"=""]?:chkOK)
exten=>_1XXX,n,Playback(/var/lib/asterisk/sounds/ru/incorect-number)
exten=>_1XXX,n,Hangup()
exten=>_1XXX,n(chkOK),GotoIf($["${SIPPEER(${EXTEN},status):0:2}"!="OK"]?:nnext)
exten=>_1XXX,n,Playback(/var/lib/asterisk/sounds/ru/the-number-u-dialed)
exten=>_1XXX,n,Playback(/var/lib/asterisk/sounds/ru/T-is-not-available)
exten=>_1XXX,n,Hangup()
exten=>_1XXX,n(nnext),Set(GROUP()=${EXTEN})
exten=>_1XXX,n,Set(CALLS=${GROUP_COUNT(${GROUP()})})
exten=>_1XXX,n,GotoIf($[${CALLS}>1]?bbusy)
exten=>_1XXX,n,Dial(IAX2/Trunk/${EXTEN},30,t)
exten=>_1XXX,n,GotoIf($["${DIALSTATUS}"="BUSY"]?bbusy)
exten=>_1XXX,n,Hangup()
exten=>_1XXX,n(bbusy),Playback(/var/lib/asterisk/sounds/ru/number)
exten=>_1XXX,n,Playback(/var/lib/asterisk/sounds/ru/zanjat)
exten=>_1XXX,n,Busy
exten=>_1XXX,n,Hangup()

Но данная конструкция не работает, при попытке звонка сразу голос - не правильно набран номер.
Что делаю не так.
Заранее спасибо.

Re: SIPPER

Добавлено: 28 фев 2017, 14:35
ded
В консоль Астериска заглядывать пробовали?
evros писал(а): при попытке звонка сразу голос - не правильно набран номер.
Всё согласно директиве
Playback(/var/lib/asterisk/sounds/ru/incorect-number)

Re: SIPPER

Добавлено: 28 фев 2017, 17:52
evros
== Using SIP RTP CoS mark 5
-- Executing [1270@IT:1] Answer("SIP/2080-00000399", "") in new stack
-- Executing [1270@IT:2] GotoIf("SIP/2080-00000399", "1?:chkOK") in new stack
-- Executing [1270@IT:3] Playback("SIP/2080-00000399", "/var/lib/asterisk/sounds/ru/incorect-number") in new stack
-- <SIP/2080-00000399> Playing '/var/lib/asterisk/sounds/ru/incorect-number.slin' (language 'ru')
-- Executing [1270@IT:4] Hangup("SIP/2080-00000399", "") in new stack
== Spawn extension (IT, 1270, 4) exited non-zero on 'SIP/2080-00000399'

Re: SIPPER

Добавлено: 28 фев 2017, 18:35
ded
-- Executing [1270@IT:1] Answer("SIP/2080-00000399", "") in new stack
-- Executing [1270@IT:2] GotoIf("SIP/2080-00000399", "1?:chkOK") in new stack - - - тут ожидался переход на метку chkOK,
exten=>_1XXX,n(chkOK),GotoIf($["${SIPPEER(${EXTEN},status):0:2}"!="OK"]?:nnext)
потому что статус не был пустым?
а вместо этого прошло дальше на третий шаг -
-- Executing [1270@IT:3] Playback("SIP/2080-00000399", "/var/lib/asterisk/sounds/ru/incorect-number") in new stack ???

Синтаксис поправьте.
У Вас условия выглядят по разному -
status)}"=""]?:chkOK)
$[${CALLS}>1]?bbusy)

Re: SIPPER

Добавлено: 28 фев 2017, 18:49
virus_net
ded писал(а):потому что статус не был пустым?
да 100% что не был, т.к.
exten=>_1XXX,n,GotoIf($["${SIPPEER(${EXTEN},status)}"=""]?:chkOK)
-- Executing [1270@IT:2] GotoIf("SIP/2080-00000399", "1?:chkOK")
Условие истина. Логично, что * не переходит на метку chkOK.

Называется - давайте научим траблшуту:
exten=>_1XXX,1,Answer()
exten=>_1XXX,n,NoOp(SIPPEER status is ${SIPPEER(${EXTEN},status)})
exten=>_1XXX,n,GotoIf($["${SIPPEER(${EXTEN},status)}"=""]?:chkOK)
...etc..

Re: SIPPER

Добавлено: 01 мар 2017, 10:49
evros
Сорри, конструкцию не я писал, не совсем въезжаю.
Выставил exten=>_1270,n,GotoIf($["${SIPPEER(${EXTEN},status)}"="1"]?:chkOK)
Отладка показывает, что не может получить статус? (1270 был в этот момент занят)
-- Executing [1270@IT:1] Answer("SIP/2080-000003ff", "") in new stack
-- Executing [1270@IT:2] NoOp("SIP/2080-000003ff", "SIPPEER status is ") in new stack
-- Executing [1270@IT:3] GotoIf("SIP/2080-000003ff", "0?:chkOK") in new stack
-- Goto (IT,1270,6)
-- Executing [1270@IT:6] GotoIf("SIP/2080-000003ff", "1?:nnext") in new stack
-- Executing [1270@IT:7] Playback("SIP/2080-000003ff", "/var/lib/asterisk/sounds/ru/the-number-u-dialed") in new stack
-- <SIP/2080-000003ff> Playing '/var/lib/asterisk/sounds/ru/the-number-u-dialed.slin' (language 'ru')
-- Executing [1270@IT:8] Playback("SIP/2080-000003ff", "/var/lib/asterisk/sounds/ru/T-is-not-available") in new stack
-- <SIP/2080-000003ff> Playing '/var/lib/asterisk/sounds/ru/T-is-not-available.slin' (language 'ru')
-- Executing [1270@IT:9] Hangup("SIP/2080-000003ff", "") in new stack
== Spawn extension (IT, 1270, 9) exited non-zero on 'SIP/2080-000003ff'

Re: SIPPER

Добавлено: 01 мар 2017, 10:54
ded
evros писал(а):Сорри, конструкцию не я писал, не совсем въезжаю.
Мопед не мой, я только объяву разместил (с)

Вам надо изучать язык диалплана и написать свою конструкцию, или обратиться к тому, кто написал эту конструкцию. Обучаться программированию на форуме - не очень хорошая идея.

Re: SIPPER

Добавлено: 01 мар 2017, 11:06
evros
Понимаю, поэтому и попросил помощи, а слышу только тыканье в RFC и всё такое.
Повторюсь для локальных сиповых номеров данная конструкция работает, мне просто не понятно почему не работает, когда звонок идет от сипового аккаунта через IAX2 транк сиповому аккаунту на другой асет.

Re: SIPPER

Добавлено: 01 мар 2017, 11:39
Samael28
Потому что SIPPEER работает, исходя из названия, с SIP. А вы пытаетесь работать через IAX. Так что послание к книжке - не совсем плохая идея.

Re: SIPPER

Добавлено: 01 мар 2017, 11:48
virus_net
evros писал(а): а слышу только тыканье в RFC и всё такое
А что вы ожидали ? Что все сделают за вас ? В этом разделе нужно читать/изучать/вникать/пробовать/траблшутить самостоятельно. Направление вам подсказно.
А "за вас" это уже другой раздел -> "Бизнес". Вот там сделают за ваши деньги и за вас.