无法保存名称为当前时间的录制文件



我正在使用星号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()

my cli show

 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

我认为在":"之后的星号搜索文件格式,所以文件名与当前时间正在产生问题。是否有办法将当前时间保存为记录的文件名。提前致谢

你可以这样做:

Record(${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}.wav)

你的想法是对的。您需要将time中的":"替换为文件系统友好的字符。你有两种方法;一种是使用带有SED的SHELL进程来完成工作。或者,您可以使用AST中的REPLACE命令。

以下代码示例未经过测试。你需要阅读包含的链接和调整。我希望这能帮到你。

[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开始,分隔记录格式的":"被"。"取代。

推荐阅读:

  • http://www.voip-info.org/wiki/view/Asterisk + func +替换

  • http://www.voip-info.org/wiki/view/Asterisk + cmd +记录

wav文件前不使用逗号。如果你想用当前日期时间保存文件,那么使用这个变量${STRFTIME(${EPOCH},,%d-%m-%Y %H:%M:%S)}.wav

文件名不能有空格,否则星号解析错误

wav(format)前也要加逗号

相关内容

  • 没有找到相关文章

最新更新