FreePBX / Asterisk Recorded呼叫未移动到正确的位置

时间:2016-12-16 22:05:31

标签: asterisk freepbx

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

我尝试过更改权限,重新安装星号插件以及许多其他内容。那里有什么想法吗?

2 个答案:

答案 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或权限问题。