Asterisk не находит звуковые файлы по стандартному пути
например файл pbx-transfer присутствует в трех экземплярах: в ../sounds/; ../sounds/en/; ../sounds/ru/;
при попытке его проиграть астериск выдает:
[Oct 6 15:57:55] WARNING[11607]: file.c:650 ast_openstream_full: File pbx-transfer does not exist in any format
[Oct 6 15:57:55] WARNING[11607]: file.c:956 ast_streamfile: Unable to open pbx-transfer (format 0x4 (ulaw)): No such file or directory
и если воспроизведение приложением playback решается просто указанием полного пути, то как быть со стандартными приложениями minivm, direct, transfer, и т.д., где нельзя явно указать путь?
Отсюда вопрос: как явно задать путь к стандартной папке со звуковыми файлами?
в asterisk.conf
...
languageprefix=yes
...
в sip.conf
...
language=ru
...
в extensions.conf
...
exten => s,1,NoOp()
same => n,Verbose("${CALLERID(num)} вызывает ${EXTEN}")
same => n,Verbose("${CHANNEL(language)}")
same => n,Dial(SIP/linksys_skat,30,rtT)
same => n,Congestion
...
стандартные файлы продублированы в папках "/var/lib/asterisk/sounds/" и "/var/lib/asterisk/sounds/ru/"
при входящем получаю:
203 вызывает s
ru
после соединения пытаюсь перевести звонок и получаю
[Oct 7 11:53:13] WARNING[17513]: file.c:650 ast_openstream_full: File pbx-transfer does not exist in any format
[Oct 7 11:53:13] WARNING[17513]: file.c:956 ast_streamfile: Unable to open pbx-transfer (format 0x4 (ulaw)): Invalid argument
при этом в варианте:
same => n,Dial(SIP/linksys_skat,30,rtTA(/var/lib/asterisk/sounds/pbx-transfer))
файл воспроизводится, а в варианте
same => n,Dial(SIP/linksys_skat,30,rtTA(pbx-transfer))
нет
во многих источниках говорится, что путь к звуковым файлам можно явно задать в файле asterisk.conf, но как именно нигде не сказано...
fs = ast_openstream(chan, filename, preflang);
if (!fs) {
ast_log(LOG_WARNING, "Unable to open %s (format %s): %s\n", filename, ast_getformatname_multiple(fmt, sizeof(fmt), chan->nativeformats), strerror(errno));
//сюда добавить следующую строчку
ast_log (LOG_WARNING, "Debug:%s %s %s", chan, filename, preflang)
return -1;
}
Отсюда будет видно из чего он собирает путь к файлу, а там уже будет понятнее.
а лог он будет писать при ./configure, при компиляции или нужно скомпилировать, установить и попробовать воспроизвести ошибку?
простите за ламерские вопросы... в программировании полный ноль.
[Oct 11 14:31:49] WARNING[13999]: file.c:650 ast_openstream_full: File pbx-transfer does not exist in any format
[Oct 11 14:31:49] WARNING[13999]: file.c:956 ast_streamfile: Unable to open pbx-transfer (format 0x4 (ulaw)): No such file or directory
[Oct 11 14:31:49] ERROR[13999]: app_dial.c:1967 dial_exec_full: error streaming file 'pbx-transfer' to callee
| Code: |
| updatedb |
дождаться завершения команды, затем
| Code: |
| locate pbx-transfer |
покажите вывод
Added after 4 minutes:
еще попробуйте в asterisk.conf languageprefix=no, (не забудьте рестартануть астерсик!)
а также проверьте права на файлы звуков.
_________________
Успехов!
/var/lib/asterisk/sounds/pbx-transfer.wav
/var/lib/asterisk/sounds/en/pbx-transfer.gsm
/var/lib/asterisk/sounds/en/pbx-transfer.wav
/var/lib/asterisk/sounds/ru/pbx-transfer.gsm
/var/lib/asterisk/sounds/ru/pbx-transfer.wav
Права роли не играют
1) Asterisk запускается от root'а
2) Если явно указать путь файл проигрывается
languageprefix=no результата не дал
format_jpeg.so jpeg (joint picture experts group) image 0
format_h264.so Raw H.264 data 0
format_sln16.so Raw Signed Linear 16KHz Audio support (S 0
format_vox.so Dialogic VOX (ADPCM) File Format 0
format_gsm.so Raw GSM data 0
format_siren14.so ITU G.722.1 Annex C (Siren14, licensed f 0
format_wav.so Microsoft WAV format (8000Hz Signed Line 0
format_g723.so G.723.1 Simple Timestamp File Format 0
format_h263.so Raw H.263 data 0
format_siren7.so ITU G.722.1 (Siren7, licensed from Polyc 0
format_ilbc.so Raw iLBC data 0
format_g729.so Raw G729 data 0
format_wav_gsm.so Microsoft WAV format (Proprietary GSM) 0
format_pcm.so Raw/Sun uLaw/ALaw 8KHz (PCM,PCMA,AU), G. 0
format_sln.so Raw Signed Linear Audio support (SLN) 0
format_g726.so Raw G.726 (16/24/32/40kbps) data 0
16 modules loaded
Я думаю если бы кодека не хватало, файл не игрался бы совсем в пределах звонка...
а он гад играется, но только при подстановке абсолютного пути...
_________________
Успехов!
не помню как точно пишется, но суть - отключить компиляцию документации
-- non xml_doc или вроде того...
Переустановил Астериск из пакетов, пользуюсь звуковыми файлами...
Added after 57 minutes:
Всем спасибо за ответы.
Added after 2 hours 6 minutes:
Нет, проблема не хочет меня покидать....
Приложение VoiceMail() и VoiceMailMain() упорно берет файлы озвучки из папки "en"
при том что переменная канала стоит как "ru".
Подскажите, может для голосовой почты нужно язык отдельно указывать, и где?
Консоль
-- Executing [999@phones:4] Answer("SIP/linksys_skat-00000010", "") in new stack
-- Executing [999@phones:5] VoiceMailMain("SIP/linksys_skat-00000010", "@default") in new stack
-- Playing 'vm-login.gsm' (language 'ru')
-- Playing 'vm-password.gsm' (language 'ru')
-- Playing 'vm-youhave.gsm' (language 'ru')
[Oct 20 16:32:56] WARNING[10471]: file.c:650 ast_openstream_full: File digits/2n does not exist in any format
[Oct 20 16:32:56] WARNING[10471]: file.c:953 ast_streamfile: Unable to open digits/2n (format 0x4 (ulaw)): No such file or directory
[Oct 20 16:32:56] WARNING[10471]: file.c:650 ast_openstream_full: File vm-newx does not exist in any format
[Oct 20 16:32:56] WARNING[10471]: file.c:953 ast_streamfile: Unable to open vm-newx (format 0x4 (ulaw)): No such file or directory
Либо я чего-то не понимаю либо одно из двух...
_________________
P4 3.0 + 1Gb CentOS 5.5 Aster 1.8.5
Не люблю gui-сборки: натуральный продукт вкуснее.
Так вот оказывается некоторые приложения, такие как VoiceMail() берут файлы озвучки не из /var/lib/asterisk/sounds, а ищут в /usr/share/asterisk/sounds
Туда кстати у меня из пакета поставилась и стандартная английская озвучка, для исправления ситуации просто удаляем папку
| Code: |
| rm -r /usr/share/asterisk/sounds |
И создаем на ее месте символическую ссылку
| Code: |
| ln -s /var/lib/asterisk/sounds /usr/share/asterisk/sounds |
_________________
Успехов!
В первом случае ставил из исходников.
| RamonSantiago wrote: |
| Так вот оказывается некоторые приложения, такие как VoiceMail() берут файлы озвучки не из /var/lib/asterisk/sounds, а ищут в /usr/share/asterisk/sounds |
у меня там не ищут, это только у вас так. по этой же причине никто носом вас так и не ткнул, так что не удивляйтесь. симлинк это костыль, а хотелось бы всетки первопричину найти. и устранить на корню.
_________________
Успехов!
посмотреть чего в asterisk.conf в [directories] написано ?
[directories]
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astdbdir => /var/lib/asterisk
astkeydir => /var/lib/asterisk
astdatadir => /usr/share/asterisk
astagidir => /etc/asterisk/agi-bin ;/usr/share/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk
Added after 1 minutes:
Единственная строка, которая ссылается в /usr/...
astdatadir => /usr/share/asterisk
astdatadir => /var/lib/asterisk
_________________
Jabber конференция
сервер: conference.jabber.ru
комната: asterisk
А в остальных приложениях типа Dial где пути к звуковым файлам указываются?