#asterisk #voip #audio-recording
#asterisk #voip #аудиозапись
Вопрос:
Я использую asterisk 11.9.0 и пытаюсь записать голос пользователя, но не могу сохранить запись пользователя с именем в качестве текущего времени, например (2014-06-19 14:40:04.wav) мой код
[record]
exten => _X.,1,NoOp(----------Record-----------)
exten => _X.,n,Answer()
exten => _X.,n,set(__START=${CDR(start)})
exten => _X.,n,Playback(hello-world)
exten => _X.,n,Wait(1)
exten => _X.,n,Record(${START}:wav)
exten => _X.,n,Wait(1)
exten => _X.,n,Hangup()
мой cli показывает
Executing [4759500@record:5] Record("DAHDI/i1/8826093338-18fe", "2014-06-19 14:40:04:wav") in new stack
-- <DAHDI/i1/8826093338-18fe> Playing 'beep.gsm' (language 'yes')
[Jun 19 14:40:07] WARNING[19525]: file.c:1181 ast_writefile: No such format '40:04:wav'
[Jun 19 14:40:07] WARNING[19525]: app_record.c:320 record_exec: Could not create file 2014-06-19 14
-- Executing [4759500@record:6] Wait("DAHDI/i1/8826093338-18fe", "2") in new stack
-- Executing [4759500@record:7] Hangup("DAHDI/i1/8826093338-18fe", "") in new stack
Я думаю, что поиск asterisk для формата файла после «:», поэтому имя файла с текущим временем создает проблему.Есть ли какой-либо способ сохранить текущее время в качестве имени записанного файла.Заранее спасибо.
Ответ №1:
Вы можете сделать это:
Record(${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}.wav)
Ответ №2:
У вас правильная идея. Вам нужно заменить «:» во времени символом, удобным для файловой системы. Вы можете сделать это одним из двух способов; один из них — использовать процесс оболочки с SED для выполнения работы. Или вы можете использовать команду REPLACE из AST.
Следующий пример кода не протестирован. Вам нужно будет прочитать включенные ссылки и настроить. Я надеюсь, что это поможет вам в вашем пути.
[record]
exten => _X.,1,Verbose(2,----------Record-----------)
same => n,Answer()
same => n,set(__START=$[REPLACE(:,${CDR(start)}),-])
same => n,Playback(hello-world)
same => n,Wait(1)
same => n,Record(${START}.wav)
same => n,Wait(1)
same => n,Hangup()
Обратите внимание, что начиная с Ast 1.2, «:» для обозначения формата записи заменяется на «.».
Рекомендуемое чтение:
Ответ №3:
Не используйте запятую перед файлом wav. Если вы хотите сохранить файл с текущей датой и временем, используйте эту переменную ${STRFTIME(${EPOCH},,%d-%m-%Y %H:%M:%S)}.wav
Ответ №4:
Вы должны использовать имена файлов без пробелов, иначе asterisk неправильно их проанализирует.
Вы также должны использовать запятую перед wav (формат)