题
我们正在使用8个端口FXO运行星号。 FXO连接到我们的旧PBX(三星办公室服务100)。
现在,我们想记录通过FXO路由的所有呼叫(如果将其拨打到外部或从外部拨打)。
这是图
|------|---------------------------------
| |--------------24 Lines ---------- Other clasic Phones
PRI------ | PBX |---------------------------------
| |
| |
| |-----------|---------|
| |--8 lines--| |---------
| |-----------|Asterisk |---------- 50 SIP phone
|------| | |----------
|---------|----------
有什么简单的方法吗?
解决方案
您正在跑步通俗的星号吗?如果是这样,您可以修改拨号计划以启动“监视”频道,以记录呼叫。
监视器命令的文档: http://www.voip-info.org/wiki/view/asterisk+cmd+monitor
只是为了完成,以下是文档:
[root@localhost ~]# asterisk -rx 'core show application monitor'
-= Info about application 'Monitor' =-
[Synopsis]
Monitor a channel
[Description]
Monitor([file_format[:urlbase],[fname_base],[options]]):
Used to start monitoring a channel. The channel's input and output
voice packets are logged to files until the channel hangs up or
monitoring is stopped by the StopMonitor application.
file_format optional, if not set, defaults to "wav"
fname_base if set, changes the filename used to the one specified.
options:
m - when the recording ends mix the two leg files into one and
delete the two leg files. If the variable MONITOR_EXEC is set, the
application referenced in it will be executed instead of
soxmix and the raw leg files will NOT be deleted automatically.
soxmix or MONITOR_EXEC is handed 3 arguments, the two leg files
and a target mixed file name which is the same as the leg file names
only without the in/out designator.
If MONITOR_EXEC_ARGS is set, the contents will be passed on as
additional arguments to MONITOR_EXEC
Both MONITOR_EXEC and the Mix flag can be set from the
administrator interface
b - Don't begin recording unless a call is bridged to another channel
i - Skip recording of input stream (disables m option)
o - Skip recording of output stream (disables m option)
By default, files are stored to /var/spool/asterisk/monitor/.
Returns -1 if monitor files can't be opened or if the channel is already
monitored, otherwise 0.
这是您可以使用它的示例方法:
; This fake context records all outgoing calls to /var/spool/asterisk/monitor in wav format.
[fake-outgoing-context]
exten => s,1,Answer()
exten => s,n,Monitor(wav,,b)
exten => s,n,Dial(DAHDI/g0/${EXTEN})
exten => s,n,Hangup()
显然,您必须对我的代码进行更改,但希望这给您一个好主意。
其他提示
现实生活中的例子是
exten => _87X,1,NoOp() exten => _87X,n,MixMonitor(${UNIQUEID}.wav,ab) exten => _87X,n,Dial(SIP/${EXTEN},45) exten => _87X,n,StopMixMonitor() exten => _87X,n,Hangup()
最好总是拥有noop - 第一个规则必须以1开头,这样您就可以随心所欲地与N步骤互换规则。
最好使用MixMonitor来使用Monitor -Monitor -仅记录入站或出站音频 - MixMonitor都使用了两者。
另外,WAV是一个格式的一个不错的选择 - 我还使用脚本将WAV文件转换为OGG在一天结束时 - 大小 /质量和许可问题之间的最佳妥协。
关于论点
A IS Append B IS Bridge(对生产有利 - 仅在接听电话时才记录 - 不适合调试)
关于streepmixmonitor(),我只是彻底,但是例如,在某些情况下,您想停止录制:例如:
... exten => _39[5-9],n,Dial(SIP/${EXTEN},45) exten => _39[5-9],n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavailable) exten => _39[5-9],n(busy),NoOp() exten => _39[5-9],n,StopMixMonitor() exten => _39[5-9],n,Voicemail(${EXTEN},u) exten => _39[5-9],n,Hangup() exten => _39[5-9],n(unavailble),NoOp() exten => _39[5-9],n,StopMixMonitor() exten => _39[5-9],n,Hangup() ...
在此示例中,您将停止录制语音邮件交互。
希望这将为此事带来一些启示。
根据您的星号盒的规格,您可能会发现此hack也很有用。为其创建一个相当大的ramdisk和Mount/var/spool/sterisk/Monitor。这样,星号记录到内存而不是磁盘。然后在Cron下写一个脚本,将录音移至每15-30分钟左右的永久存储空间。
不隶属于 StackOverflow