如何记录呼叫数据

时间:2015-08-11 13:39:11

标签: asterisk freepbx

我想记录星号命令行的数据。但标准是我希望单独调用日志数据,即我想在单独的文件中记录每个调用的数据。

有办法吗?

1 个答案:

答案 0 :(得分:0)

如果星号中没有inbuild功能,这是一个bash解决方案:

#!/bin/bash
echo "0" >/tmp/numberoflines
IFS=''
pathToLogFile = /path/to/log/file
while [ 1 ]
do
    NUMBER=$(cat /tmp/numberoflines)
    LINECOUNT=$(wc -l < $pathToLogFile)
    DIFFERENCE=$(($LINECOUNT-$NUMBER))

    if [ $DIFFERENCE != 0 ]; then
        lines=($(tail -n $DIFFERENCE $pathToLogFile))
        for line in $lines; do
            callID = `expr "$line" : 'CALLID_REGEX (see below)'`
            $(echo "$line" >> /path/to/log/directory/$callID)
        done
    fi

sleep 5;
echo "$LINECOUNT" >/tmp/numberoflines
done

<强>未测试

应该用它来解决这个问题。

正则表达式:normaly:/\[(C\d{8})\]/。遗憾的是我不知道bash中的语法。对不起你必须将它自己转换成bash语法。

这个想法是:记住bash脚本处理的日志文件中的最后一行。检查日志文件的行数。如果有更多行,那么记住的行:遍历新行并在每行的开头提取调用id(格式:C ********(*是数字)。在单词中:a C跟随用8位数字)。现在将整行附加到日志文件的末尾。文件的名称是提取的callid。

编辑有关来电ID的信息(不要将其与来电显示错误):https://wiki.asterisk.org/wiki/display/AST/Unique+Call-ID+Logging

相关问题