1

FreePBX:10.13.66-12/ISO 安装

星号:13.12.2

星号插件:最新

用户报告无法查看/下载来自 UCP 的点播录音。然而,调用正在被记录,/var/spool/asterisk/monitor 充满了文件,这些文件应该已经移动到适当的日期目录。例如 2016 年 12 月 15 日。我已经设置了一个在 FreePBX 中设置的通话后录音脚本,这也没有运行。只是看看它是否被调用,附加到文件中。

-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

我尝试过更改权限、重新安装星号插件以及许多其他事情。有什么想法吗?

4

2 回答 2

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

下一步是监视记录目录中已写入的任何文件。

作为星号用户编辑 incrontab

incrontab -e

添加以下与上述脚本的位置和名称

/var/spool/asterisk/monitor/ IN_CLOSE_WRITE /bin/bash /home/asterisk/move_recordings.sh $#

这是基于一个非常通用的 FreePBX 设置。可能有更好的方法可以做到这一点,但这对我来说一直有效。

于 2017-02-03T01:01:58.433 回答
-1

正确的解决方案 - 将文件写入应在的位置,即 2016/12/15

不可能猜出你做错了什么(没有提供脚本,配置等),但我可以建议你有 selinux 或权限问题。

于 2016-12-16T23:17:53.267 回答