LINUX.ORG.RU
ФорумAdmin

Multi language

 ,


0

1

В главном меню на трех языках сообщается, что если вы говорите на английском нажмите 1, если на русском 2 и т.д. Соотвественно, создал директории в папке sounds:

# tree sounds
sounds
├── en_My
│   ├── departament.wav
│   └── queue-callswaiting.wav
├── md_My
│   ├── departament.wav
│   └── queue-callswaiting.wav
├── ru_My
│   ├── departament.wav
│   └── queue-callswaiting.wav
└── xx_My
    ├── welcome.gsm
    └── welcome.wav

4 directories, 8 files

и реализовал диалплан:

[menu_lang] ;; Меню
exten=> s,1(timeout),Answer
exten=> s,n,Set(CHANNEL(language)=xx_My)
exten=> s,n,Background(welcome);
exten=> s,n,Read(var,,1,,2)
exten=> s,n,GotoIf($["${var}" == ""]?timeout)
exten=> 1,1,Set(CHANNEL(language)="md_My")
exten=> 1,n,Goto(menu_dep,s,1)
exten=> 2,1,Set(CHANNEL(language)="en_My")
exten=> 2,n,Goto(menu_dep,s,1)
exten=> 3,1,Set(CHANNEL(language)="ru_My")
exten=> 3,n,Goto(menu_dep,s,1)

но он не работает.

★★★★★

Последнее исправление: petav (всего исправлений: 2)

Скинь лог того что происходит

Кстати, а почему ты перехватываешь нажатие как сделал, а не через WaitExten?

Ниже пример с просторов сети

exten => s,1,Wait(1)			; Wait a second, just for fun
exten => s,n,Answer			; Answer the line
exten => s,n,Set(TIMEOUT(digit)=5)	; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10)	; Set Response Timeout to 10 seconds
exten => s,n(restart),BackGround(demo-congrats)	; Play a congratulatory message
exten => s,n(instruct),BackGround(demo-instruct)	; Play some instructions
exten => s,n,WaitExten			; Wait for an extension to be dialed.

exten => 2,1,BackGround(demo-moreinfo)	; Give some more information.
exten => 2,n,Goto(s,instruct)

exten => 3,1,Set(CHANNEL(language)=fr)		; Set language to french
exten => 3,n,Goto(s,restart)		; Start with the congratulations

А, ну так точн. У тебя ж оно сделано через разные экстеншены. Оно так вроде как вообще никуда не перейдет

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 3)
Ответ на: комментарий от upcFrost

Кстати, а почему ты перехватываешь нажатие как сделал, а не через WaitExten?

Внутренние меню WaitExten используют. Это я «накретивить» решил.

Скинь лог того что происходит

ok

petav ★★★★★
() автор топика
Ответ на: комментарий от upcFrost

Скинь лог того что происходит

Взял, заведомо «исправный» файл beep, переименовал его в beep222 и разместил в папке xx_My

  == Begin MixMonitor Recording SIP/79308423937-00000000
       > 0x7f3a54006010 -- Probation passed - setting RTP source address to 193.221.249.29:16920
    -- Executing [s@menu_lang:2] Set("SIP/79308423937-00000000", "CHANNEL(language)="xx_My"") in new stack
    -- Executing [s@menu_lang:3] NoOp("SIP/79308423937-00000000", ""xx_My"") in new stack
    -- Executing [s@menu_lang:4] BackGround("SIP/79308423937-00000000", "beep222") in new stack
[Feb 22 09:29:07] WARNING[11084][C-00000000]: file.c:701 ast_openstream_full: File beep222 does not exist in any format
[Feb 22 09:29:07] WARNING[11084][C-00000000]: file.c:1017 ast_streamfile: Unable to open beep222 (format (alaw)): No such file or directory
[Feb 22 09:29:07] WARNING[11084][C-00000000]: pbx.c:11463 pbx_builtin_background: ast_streamfile failed on SIP/79308423937-00000000 for beep222
не играет. Выводы:

  • Переменная канала language устанавливается
  • Данная переменная не используется проигрывателем.

А вот так «beep222» играет:

exten=> s,n,Background(beep222,,${CHANNEL(language)});

petav ★★★★★
() автор топика
Последнее исправление: petav (всего исправлений: 1)
Ответ на: комментарий от petav

под рукой нет вм для теста, но зад чует что проблема вот тут:

"CHANNEL(language)="xx_My""

Сравни с https://issues.asterisk.org/jira/browse/ASTERISK-8928. По ссылке товарисч ставит лишнюю скобку. У меня есть подозрение что ты ставишь лишние кавычки, и в итоге он ищет директорию "xx_My" вместо xx_My

либо если кавычки ставит сам астер - возможно ему не нравится underscore в названии, попробуй сменить на xxMy

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от upcFrost

под рукой нет вм для теста, но зад чует что проблема вот тут

Я тоже чувствительный. Это я первым исключим.

возможно ему не нравится underscore в названии, попробуй сменить на xxMy

Ок. Черкну себе заметочку, что бы оттестить...

petav ★★★★★
() автор топика
Последнее исправление: petav (всего исправлений: 1)
Ответ на: комментарий от upcFrost

Кстати, а почему ты перехватываешь нажатие как сделал, а не через WaitExten

Переписал с использвоание WaitExten. Background + Read рвало если нажимать пока Background непроболтал сообщение.

petav ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.