如何记录通话数据
How to log data of a call
我想记录星号命令行的数据。但标准是我想分别记录调用的数据,即我想在单独的文件中记录每个调用的数据。
有办法吗?
如果 asterisk 中没有内置功能可以做到这一点,这里有一个 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
未测试
它应该被用来获得解决这个问题的想法。
正则表达式:正常:/\[(C\d{8})\]/
。遗憾的是我不知道 bash 中的语法。对不起。你必须自己将它转换成 bash-syntax.
想法是:记住日志文件中由 bash 脚本处理的最后一行。检查日志文件的行数。如果有更多的行,那么记住的行:遍历新行并在每行的开头提取呼叫 ID(格式:C********(* 是数字)。换句话说:后面是 C 8 位数字)。现在将整行附加到日志文件的末尾。文件的名称是提取的 callid。
EDIT 来电显示信息(不要与来电显示混淆):https://wiki.asterisk.org/wiki/display/AST/Unique+Call-ID+Logging
我想记录星号命令行的数据。但标准是我想分别记录调用的数据,即我想在单独的文件中记录每个调用的数据。
有办法吗?
如果 asterisk 中没有内置功能可以做到这一点,这里有一个 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
未测试
它应该被用来获得解决这个问题的想法。
正则表达式:正常:/\[(C\d{8})\]/
。遗憾的是我不知道 bash 中的语法。对不起。你必须自己将它转换成 bash-syntax.
想法是:记住日志文件中由 bash 脚本处理的最后一行。检查日志文件的行数。如果有更多的行,那么记住的行:遍历新行并在每行的开头提取呼叫 ID(格式:C********(* 是数字)。换句话说:后面是 C 8 位数字)。现在将整行附加到日志文件的末尾。文件的名称是提取的 callid。
EDIT 来电显示信息(不要与来电显示混淆):https://wiki.asterisk.org/wiki/display/AST/Unique+Call-ID+Logging