Playback для нескольких файлов.
Добавлено: 25 июл 2020, 19:22
Здравствуйте.
Есть желание переключать язык сообщений.
Звуковые файлы лежат в каталоге /var/lib/asterisk/sounds соответственно в подкаталогах en и ua.
Все файлы в нужном формате, проверены - астериск успешно воспроизводит каждый.
Набор номеров начинется здесь:
Потом сюда:
Звонок инициирует web-сервер командой Originate с опцией Variable: var1=sp&2,var2=en
Asterisk 1.8.32.3
Переменная var2 может принимать значение или ua или en.
В Asterisk по умолчанию ua.
Если в переменной var1 только один файл (var1=sp) - то все отлично, пользователю звучит файл в той language, которую астериску передал web-сервер.
Если в переменной var1 несколько файлов через амперсанд (var1=sp&2) - то если пользователь выбрал ua - тоже все отлично, но если пользователь выбрал en, то только первый файл играет с каталога en, все остальные - с каталога ua.
Вот выхлов в консоли в момент звонка:
Первый файл вижу что Playing 'sp.slin' (language 'en'), а второй уже Playing '2.slin' (language 'ua').
Знаю, что еще много не дочитал, но подскажите в какую сторону копать ?)
Есть желание переключать язык сообщений.
Звуковые файлы лежат в каталоге /var/lib/asterisk/sounds соответственно в подкаталогах en и ua.
Все файлы в нужном формате, проверены - астериск успешно воспроизводит каждый.
Набор номеров начинется здесь:
Код: Выделить всё
[gsm-test]
exten => _0[9][678]XXXXXXX,1,Noop(KS-067-8)
same => n,Set(CHANNEL(language)=${var2})
same => n,Dial(SIP/GoIP208-1/1${EXTEN})
same => n,HangUp()
Код: Выделить всё
[answer_user]
exten => saysmsint,1,NoOp(1 version)
same => n,Set(CHANNEL(language)=${var2})
same => n,Answer()
same => n,Playback(${var1})
same => n,HangUp()
Asterisk 1.8.32.3
Переменная var2 может принимать значение или ua или en.
В Asterisk по умолчанию ua.
Если в переменной var1 только один файл (var1=sp) - то все отлично, пользователю звучит файл в той language, которую астериску передал web-сервер.
Если в переменной var1 несколько файлов через амперсанд (var1=sp&2) - то если пользователь выбрал ua - тоже все отлично, но если пользователь выбрал en, то только первый файл играет с каталога en, все остальные - с каталога ua.
Вот выхлов в консоли в момент звонка:
Код: Выделить всё
-- <Local/0976118441@gsm-out-000089a0;1> Playing 'sp.slin' (language 'ua')
-- Executing [0989999999@gsm-test:1] NoOp("Local/0989999999@gsm-test-000089a1;2", "KS-067-8") in new stack
-- Executing [0989999999@gsm-test:2] Set("Local/0989999999@gsm-test-000089a1;2", "CHANNEL(language)=en") in new stack
-- Executing [0989999999@gsm-test:3] Dial("Local/0989999999@gsm-test-000089a1;2", "SIP/GoIP208-1/10989999999") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/GoIP208-1/10989999999
-- SIP/GoIP208-1-00010e90 is making progress passing it to Local/0989999999@gsm-test-000089a1;2
-- SIP/GoIP208-1-00010e90 answered Local/0989999999@gsm-test-000089a1;2
> Channel Local/0989999999@gsm-test-000089a1;1 was answered.
-- Executing [saysmsint@answer-user:1] NoOp("Local/0989999999@gsm-test-000089a1;1", "1 version") in new stack
-- Executing [saysmsint@answer-user:2] Answer("Local/0989999999@gsm-test-000089a1;1", "") in new stack
-- Executing [saysmsint@answer-user:3] Set("Local/0989999999@gsm-test-000089a1;1", "CHANNEL(language)=en") in new stack
-- Executing [saysmsint@answer-user:4] Playback("Local/0989999999@gsm-test-000089a1;1", "sp&2") in new stack
-- <Local/0989999999@gsm-test-000089a1;1> Playing 'sp.slin' (language 'en')
== Spawn extension (gsm-test, 0989999999, 3) exited non-zero on 'Local/0989999999@gsm-test-000089a1;2'
-- <SIP/GoIP208-1-00010e90> Playing '2.slin' (language 'ua')
-- Executing [saysmsint@answer-user:5] Hangup("SIP/GoIP208-1-00010e90", "") in new stack
== Spawn extension (answer-user, saysmsint, 5) exited non-zero on 'SIP/GoIP208-1-00010e90'
Знаю, что еще много не дочитал, но подскажите в какую сторону копать ?)