web-dev-qa-db-ja.com

アスタリスク自動通話録音

8ポートFXOでアスタリスクを実行しています。 FXOは古いPBX(Samsung Office Serv 100)に接続します。

ここで、FXOを介してルーティングされたすべての通話を記録します(外部にダイヤルされた場合、または外部から着信した場合)。

これが図です

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

これを行う簡単な方法はありますか?

13
Manjoor

プレーンなアスタリスクを実行していますか?その場合は、ダイヤルプランを変更して、通話を録音するチャネルの「監視」を開始できます。

モニターコマンドのドキュメント: 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()

明らかに、私のコードに変更を加える必要がありますが、うまくいけば、それはあなたに良い考えを与えるでしょう。

24
rdegges

実際の例は

 
 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を使用するのが常に最善です-モニターはインバウンドまたはアウトバウンドのオーディオのみを記録します-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()
 ... 
 

この例では、ボイスメールインタラクションの録音を停止します。

これが問題にいくらかの光をもたらすことを願っています。

9
nmirceac

Asteriskボックスの仕様によっては、このハックも役立つ場合があります。かなり大きなRAMディスクを作成し、それに/ var/boost/asterisk/monitorをマウントします。そうすれば、Asteriskはディスクではなくメモリに記録します。次に、cronの下にスクリプトを記述して、記録を15〜30分ごとに永続ストレージに移動します。

5
vbcrlfuser