FreePBX:10.13.66-12 / ISO install
Asterisk:13.12.2
asterisk-addons:最新
用户报告无法从UCP查看/下载按需录制内容。但是,正在记录调用,/ var / spool / asterisk / monitor中充满了文件,应该已将文件移动到相应的日期目录中。 例如二〇一六年十二月十五日。 我已经设置了一个在FreePBX中设置的Post Call Recording脚本,这也不会运行。只是看它是否被调用,附加到文件。
-rw-rw-r-- 1 asterisk asterisk 120364 Dec 15 17:20 1481858418.2722.wav
-rw-r--r-- 1 asterisk asterisk 147884 Dec 16 10:02 1481918523.4964.wav
运行fwconsole chown
后,顶级文件权限已更改。这让我觉得星号没有正确的权限。
这是MixMonitor
的调试日志细分[2016-12-15 17:03:14] VERBOSE[20476] app_mixmonitor.c: Begin MixMonitor Recording SIP/200-00000125
[2016-12-15 17:03:24] VERBOSE[20476] app_mixmonitor.c: MixMonitor close filestream (mixed)`
[2016-12-15 17:03:24] VERBOSE[20476] app_mixmonitor.c: End MixMonitor Recording SIP/200-00000125
[2016-12-15 17:03:24] VERBOSE[20476] app_mixmonitor.c: Copying recordings for Mixmonitor SIP/200-00000125 to voicemail recipients
[2016-12-15 17:03:24] WARNING[20476] format_wav.c: Unable to set write file size
我尝试过更改权限,重新安装星号插件以及许多其他内容。那里有什么想法吗?
答案 0 :(得分:0)
回答我自己的问题。
这是digium手机和freepbx的问题。 Digium使用他们自己的技术来记录和保存呼叫。 https://wiki.asterisk.org/wiki/display/DIGIUM/Phone+Features+by+Environment
有一个解决方案可以在CDR和用户门户中显示呼叫,但涉及对系统的更改。 自担风险。
创建属于星号用户的可执行脚本,我将其保存在星号用户主目录中。
#!/bin/bash
#this script is run from an incrontab
MONITOR=/var/spool/asterisk/monitor/
if [ -d "$MONITOR$1" ]; then
exit
fi
if [ ! -f "$MONITOR$1" ]; then
echo "$(date): Failed to move a recording. \"$MONITOR$1\" does not exist." >> /var/log/asterisk/moved_recording_log
exit
fi
filename=$1
uid=${filename%.*}
if [ $(sed -e "s/^.wav//I" <<< "${filename##*.}") != "wav" ]; then
exit
fi
CONF=/etc/asterisk/res_odbc_additional.conf
user=$(awk -F"=>" '/username=>/ {print $2}' ${CONF})
password=$(awk -F"=>" '/password=>/ {print $2}' ${CONF})
db=$( mysql asteriskcdrdb -u $user -p$password -se "SELECT cnum, calldate as date FROM cdr WHERE uniqueid = \"$uid\";" 2>/dev/null )
ext=$(echo $db | awk '{print $1}')
read -r -a dbd <<< "$db"
IFS="-" read -r -a dbdate <<< "${dbd[1]}"
if [ -z "${dbdate[0]}" ] || [ -z "${dbdate[1]}" ] || [ -z "${dbdate[2]}" ]; then
exit
fi
dir="/var/spool/asterisk/monitor/${dbdate[0]}/${dbdate[1]}/${dbdate[2]}/"
mkdir -p $dir
name="ondemand-${dbd[0]}-${dbd[0]}-${dbdate[0]}${dbdate[1]}${dbdate[2]}-${dbd[2]//:}-$filename"
db=$(mysql asteriskcdrdb -u $user -p$password -se "UPDATE cdr SET recordingfile=\"$name\" WHERE uniqueid = \"$uid\";")
mv $MONITOR$filename $dir$name
exit
下一步是监视录制目录中是否有已写入的文件。
asterisk用户编辑incrontab
incrontab -e
使用上述脚本的位置和名称添加以下内容
/var/spool/asterisk/monitor/ IN_CLOSE_WRITE /bin/bash /home/asterisk/move_recordings.sh $#
这是基于非常通用的FreePBX设置。可能有一个更好的方法来做到这一点,但这一直在为我工作。
答案 1 :(得分:-1)
正确的解决方案 - 将文件写入应有的位置,即2016/12/15
无法猜测你做错了什么(没有提供脚本,配置等),但我可以建议你有selinux或权限问题。