2

首先,我已经完成了录制并保存到“.wav”文件,并且我也完成了使用“postfix”通过电子邮件发送“.wav”的脚本,我的问题是当录制完成时自动将“.wav”文件发送到我的电子邮件,例如“gmail”,

我应该怎么办?
脚本是否应该指向extension.conf?
或者我是否需要设置一个 .wav 文件的文件名将连接到我的脚本的变量?

这是我的 extesion.conf 的示例脚本

[outbound]
exten => s,1,Answer()
exten => s,2,Background(silence/1)
exten => s,3,ControlPlayback(/var/example)
exten => s,4,Record(/ var/ ${callfile_name}${STRFTIME(${EPOCH},GMT-8,%m%d%y-%H%M)}.wav,0,5,qxk )
exten => s,5,Hangup( )

这是使用“后缀”通过电子邮件发送给我的 gmail 的脚本

(printf "%s\n" \
"主题:Example_Subject" \
"To: example_email@gmail.com" \
"Content-Type: application/wav" \
"Content-Disposition: attachment; filename= examplewav.wav " \
"内容传输编码:base64" \
""; base64 examplewav.wav ) | 发送邮件“example_email@gmail.com”

4

2 回答 2

1

您可以通过h扩展将文件名设置为变量并在挂断时执行 sendmail。

[outbound]
exten => s,1,Answer()
exten => s,n,Background(silence/1)
exten => s,n,ControlPlayback(/var/example)
exten => s,n,Set(filename=${callfile_name}${STRFTIME(${EPOCH},GMT-8,%m%d%y-%H%M)}.wav)
exten => s,n,Record(/var/${filename},0,5,qxk)
exten => s,n,Hangup()
exten => h,1,System(/opt/scripts/wavmail.sh ${filename} example_email@gmail.com)

/opt/scripts/wavmail.sh(第一个参数是 $1,第二个是 $2,...)

#!/usr/bin/env bash

(printf "%s\n" \
"Subject: Example_Subject" \
"To: $2" \
"Content-Type: application/wav" \
"Content-Disposition: attachment; filename=$(basename $1)" \
"Content-Transfer-Encoding: base64" \
""; base64 $1) | /usr/bin/sendmail "$2"
于 2013-05-01T10:07:03.823 回答
0

推荐的方式:如果 cdr 有该字段,则保存有关发送此文件的位置和使用外部守护程序(使用队列)发送文件的 cdr 信息。这是最可扩展的方式。简单的方法 - 请参阅 pce 的答案。

于 2013-05-01T10:38:13.747 回答