Asterisk 星号自动通话录音

Asterisk 星号自动通话录音,asterisk,Asterisk,我们使用8端口FXO运行星号。FXO连接到我们的旧PBX(三星Office Serv 100) 现在我们要记录通过FXO路由的所有呼叫(如果是拨到外部的或从外部进行的) 这是图表 |------|--------------------------------- | |--------------24 Lines ---------- Other clasic Phones PRI------ | PBX |---------------

我们使用8端口FXO运行星号。FXO连接到我们的旧PBX(三星Office Serv 100)

现在我们要记录通过FXO路由的所有呼叫(如果是拨到外部的或从外部进行的)

这是图表

           |------|---------------------------------
           |      |--------------24 Lines ---------- Other clasic Phones
PRI------  | PBX  |---------------------------------
           |      |
           |      |
           |      |-----------|---------|
           |      |--8 lines--|         |---------         
           |      |-----------|Asterisk |---------- 50 SIP phone
           |------|           |         |----------
                              |---------|----------

有没有一种简单的方法可以做到这一点?

您运行的是纯星号吗?如果是这样,您可以修改拨号计划以开始“监控”频道,该频道将记录通话

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()

显然,您必须对我的代码进行更改,但希望这能给您一个好主意。

根据星号框的规格,您可能会发现此破解也很有用。创建一个相当大的ramdisk并将/var/spool/asterisk/monitor装入其中。这样星号记录到内存而不是磁盘。然后在cron下编写脚本,每隔15-30分钟左右将录制内容移动到永久存储

现实生活中的一个例子是

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() 扩展=>87X,1,NoOp() extn=>87X,n,MixMonitor(${UNIQUEID}.wav,ab) 扩展=>87X,n,拨号(SIP/${exten},45) extn=>87X,n,StopMixMonitor() 扩展=>87X,n,挂起() 始终使用NoOp是一种很好的做法-第一条规则必须以1开头,这样您就可以按照任何方式将规则与n步交换

最好使用MixMonitor,而不是Monitor-Monitor仅记录入站或出站音频-MixMonitor同时使用这两种方法

另外,wav作为一种格式是一个不错的选择——我还使用脚本在一天结束时将wav文件转换为OGG——这是大小/质量和许可问题之间的最佳折衷

关于论点

a是附加的 b是桥接器(适用于生产-仅在接听电话时记录-不适用于调试)

关于StopMixMonitor(),我只是说得很透彻,但例如,在某些情况下,您希望停止录制,例如:

... 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() ... ... extn=>39[5-9],n,拨号(SIP/${extn},45) 扩展名=>_39[5-9],n,GotoIf($[“${DIALSTATUS}”=“BUSY”]?BUSY:不可用) extn=>39[5-9],n(忙),NoOp() extn=>_39[5-9],n,StopMixMonitor() extn=>39[5-9],n,语音信箱(${extn},u) extn=>39[5-9],n,Hangup() extn=>_39[5-9],n(不可用),NoOp() extn=>_39[5-9],n,StopMixMonitor() extn=>39[5-9],n,Hangup() ... 在本例中,您将停止语音邮件交互的录制


希望这能为此事带来一些启示。

是的,请查看以下链接:嗯。。有在生产环境中运行ramdisk的经验吗。?我真的对这个想法很感兴趣绝对,如果没有它,我们将无法同时录制我们目前所做的那样多的频道/通话,而不需要对硬盘进行重击,60多个同时通话记录没有任何问题,但直接到磁盘会杀死server@radu094,对于ramdisk(它工作得很好),您所需要的只是“TMPFS/VAR/SPOLL/星号/监视器TMPFS默认值,大小=1024M 1 1”在您的/ETC/FSTAB中。您还应该考虑将记录移动到持久存储的CrOnWork,但别忘了只移动文件,其中MTIME小于当前时间戳,从该时间戳中减去2-3分钟。(确保您没有移动当前正在写入的录制)。希望这能有所帮助……5年后……你如何在脚本中将wav文件转换为OGG?提前谢谢!嘿@Ben--有很多工具可用,但一个现成的工具是SOX---/usr/bin/nice-n19/usr/bin/SOX-e签名整数-b16-t原始-R8000源文件路径.wav目标路径.OGG--制作一个脚本,它将为您设置源文件路径,并确保其mtime过去为2-3分钟-这样您就不会开始转换未完成的录制。如果SOX转换成功,您可以删除.wav。