Domanda

Ci sono in esecuzione asterisco con 8 porte FXO. FXO collega al nostro vecchio PBX (Samsung Ufficio Serv 100).

Ora vogliamo registrare tutte le chiamate instradate attraverso FXO (se è stato selezionato al di fuori o comming dall'esterno).

Ecco lo schema

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

C'è un modo semplice per fare questo?

È stato utile?

Soluzione

Stai utilizzando Asterisk pianura? Se è così è possibile modificare il piano di numerazione per iniziare a 'monitoraggio' del canale, che registrerà la chiamata.

La documentazione del comando del monitor: http: //www.voip-info .org / wiki / view / Asterisk + cmd + monitorare

Solo per il gusto di completamento, ecco la documentazione:

[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.

Ed ecco un modo di esempio si può utilizzare:

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

Ovviamente sarebbe necessario apportare modifiche al mio codice, ma si spera che ti dà una buona idea.

Altri suggerimenti

Un esempio di vita reale è

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

E 'buona norma avere sempre NoOp - la prima regola deve iniziare con 1, in questo modo è possibile intercambiare le regole con il passo n qualsiasi modo si desidera

.

E 'sempre meglio usare MixMonitor al contrario di Monitor - Monitor registra solo audio entrata o in uscita -. MixMonitor utilizza sia

Anche wav è piuttosto una buona scelta come un formato - Io uso anche uno script per trasformare i file wav a OGG, alla fine della giornata -. Il miglior compromesso tra problemi di dimensione / qualità e di licenza

Per quanto riguarda gli argomenti

a è accodare b è ponte (buono per la produzione - sarà registrare solo quando si risponde alla chiamata - non va bene per il debug)

Per quanto riguarda StopMixMonitor (), sto solo essere approfondita, ma per gli esempi ci sono casi in cui si desidera interrompere la registrazione, ad esempio:

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

In questo esempio, è necessario interrompere la registrazione dell'interazione vocale.

Spero che questo porterà po 'di luce sulla questione.

A seconda delle specifiche del contenitore di Asterisk si potrebbe trovare questo hack utile anche. Creare una piuttosto grande ramdisk e montare / var / spool / asterisco / monitor ad esso. Che registra modo asterisco per non memoria del disco. Poi scrivere uno script sotto cron per spostare le registrazioni di stoccaggio permanente ogni 15-30 minuti o giù di lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top