AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Циклы, переходы и экстеншены. Помогите написать программу на астериске.

Newbies/FAQ Forum 4 сообщений -
#1

Всем привет. Озадачили меня электронной секретаршей на Астериск. Худо-бедно начал работу - но на перспективу хотелось выбирать голос гида и начал так:

Код:

exten => s,n,set(VB=../custom/ivr-D/)
exten => s,n,set(VN=0leg);Если закомментировать блок ниже - то голос выбирается по этой переменной.

exten => s,n(SelectVoice),background(${VB}/0leg)
exten => s,n,background(${VB}/oleg)
exten => s,n,waitexten(10)
exten => 1,1,set(VN=0leg)
exten => 1,n,GoTo(s,Start)
exten => 2,1,set(VN=oleg)
exten => 2,n,GoTo(s,Start)
exten => s,n,GoTo(s,SelectVoice)

exten => s,n(Start),NoOp()
exten => s,n,background(${VB}/${VN}/0-0)


Звоню на номер, запускается диалплан и предлагает выбрать гололс. Выбираю и тишина...
в консоли вижу:

Код:

== Using SIP RTP CoS mark 5
-- Executing [5555@local:1] Goto("SIP/113int-00000384", "ivr-D,s,1") in new
stack
-- Goto (ivr-D,s,1)
-- Executing [s@ivr-D:1] BackGround("SIP/113int-00000384", "beep") in new st
ack
> 0x7fc230021f90 -- Probation passed - setting RTP source address to 192.168.1.135:16388
-- Playing 'beep.slin' (language 'ru')
-- Executing [s@ivr-D:2] Answer("SIP/113int-00000384", "") in new stack
-- Executing [s@ivr-D:3] Set("SIP/113int-00000384", "try=0") in new stack
-- Executing [s@ivr-D:4] Set("SIP/113int-00000384", "VB=../custom/ivr-D/") in new stack
-- Executing [s@ivr-D:5] Set("SIP/113int-00000384", "VN=0leg") in new stack
-- Executing [s@ivr-D:6] BackGround("SIP/113int-00000384", "../custom/ivr-D//0leg") in new stack
-- Playing '../custom/ivr-D//0leg.slin' (language 'ru')
-- Executing [s@ivr-D:7] BackGround("SIP/113int-00000384", "../custom/ivr-D//oleg") in new stack
-- Playing '../custom/ivr-D//oleg.slin' (language 'ru')
-- Executing [1@ivr-D:1] Set("SIP/113int-00000384", "VN=0leg") in new stack
-- Executing [1@ivr-D:2] Goto("SIP/113int-00000384", "s,Start") in new stack
[Jun 7 11:14:25] NOTICE[16929][C-000002f4]: pbx.c:2917 pbx_extension_helper: No such label 'Start' in extension 's' in context 'ivr-D'
[Jun 7 11:14:25] WARNING[16929][C-000002f4]: pbx.c:8597 pbx_parseable_goto: Priority 'Start' must be a number > 0, or valid label
== Spawn extension (ivr-D, 1, 2) exited non-zero on 'SIP/113int-00000384'


Если комментирую блок инструкций в середине то слышу голос 0leg. Как мне добиться выставления переменных и перейти на логику использующую эти переменные?

Как правильно решить мою задачу?

Есть Путь 1 - там живут файлы 1 голоса и Путь 2 с такими же файлами другого голоса.
Вначале голос 1 просит нажать 1 чтобы выбрать его
Голос 2 просит нажать 2 чтобы выбрать его и соответственно VN должна получить нужный подкаталог. Ну а потом все файлы говорятся как ${VB}/${VN}/файл

_________________
Всех благ,
0лег.
o.frolkov@ya.ru +7(999)110-2146


Последний раз редактировалось: 0лег (Ср Июн 07, 2017 13:04)
#2

Ну вам же пишет почти по русски: No such label 'Start' in extension 's' in context 'ivr-D'

Когда вставляете код -- оформляйте его в тег
Код:
[code][/code]

Иначе мы не видим многого, что было бы видеть полезно
#3

xelas @ Ср Июн 07, 2017 12:33 писал(а):
Ну вам же пишет почти по русски: No such label 'Start' in extension 's' in context 'ivr-D'

Когда вставляете код -- оформляйте его в тег
Код:
[code][/code]

Иначе мы не видим многого, что было бы видеть полезно
А это что? :exten => s,n(Start),NoOp() - Я подозревал что это Переменная Start в эксте s Того самого контекста. Конечно не полностью привёл файл. Несколькими строками выше как раз и был [ivr-D]

_________________
Всех благ,
0лег.
o.frolkov@ya.ru +7(999)110-2146
#4

Вставте код так, что бы мы видели где у вас какой контекст.
По вашим логам, я вижу, что ivr-D это блок который вы вставили первым. Никакой метки Start там нет.

Added after 1 minutes:

Или это у вас все в одном контексте? Тогда вообще все не правильно.
Где первый приоритет? Почему в середине s вдруг 1?
Оформите все правильно.