Intercettazioni telefoniche in Asterisk con ChanSpy
August 21, 2011 — 1:55

Author: f0ff0 | Category: Asterisk VoIP | Tags: , , , | Comments: 0

Se possibile muniti di buon senso, abbiamo la possibilità di “spiare” le conversazioni attive sul nostro server asterisk (bridged calls) servendoci della funzione chanspy().

Il caso più classico dove questa funzionalità trova applicazione è nei sistemi per call center, dove il supervisore ha la necessità di interagire con l’operatore principalmente al fine di:

- Controllare la qualità: Il supervisore monitorizza il servizio che l’operatore offre al cliente.
- Training: Il supervisore interagisce con l’operatore al fine di aiutarlo ad offrire un buon servizio telefonico (whisper mode).

Asterisk implementa la funzione chanspy(). Analizziamo il seguente esempio per capire come funziona:

[macro-spy]
exten => s,1,Answer(1)
exten => s,n,Authenticate(1234)
exten => s,n,ChanSpy(SIP/${ARG1}|o)
exten => s,n,Hangup

In questo esempio, la macro “spy” viene protetta con password (1234) grazie alla funzione Authenticate di Asterisk. L’accesso alle funzionalità di monitoraggio quindi rimane ristretta a tutti coloro che conoscono la chiave d’accesso.
La macro “spy” si aspetta un valore ${ARG1} che risulta essere l’estensione che si desidera ascoltare.
Nel dialplan associato alle estensioni del centralino telefonico aggiungiamo una linea simile alla seguente:

exten => _*666X.,1,Macro(spy,${EXTEN:4})

Il supervisore quindi, semplicemente digita *666 seguito dall’estensione, digiterà la password e potrà iniziare l’ascolto telefonico.

La funzione ChanSpy ha differenti opzioni. Riportiamo le principali e più utili:
- b: Si spia solo i canali attivi su bridged calls.
- r([basename]): Registra la sessione di monitorizzazione nella directory spool di asterisk nel caso non sia presente un basename differente.
- w: ‘whisper’, il supervisore può parlare con l’agente che si sta spiando.
- W: ‘private ‘whisper’, il supervisore può parlare con l’agente che si sta spiando ma non può ascoltare il cliente.

Asterisk va in ferie: giorni festivi e voicemenu
December 27, 2010 — 23:38

Author: admin | Category: Asterisk | Tags: , , , , , , , | Comments: 0

Mentre si pensa alla configurazione di un IVR, nasce spesso l’esigenza di dover fornire un menu vocale differente solo in alcune occasioni specifiche, come ad esempio durante i giorni festivi. La soluzione più semplice e facilemente applicabile a sistemi di dimensioni ridotte consiste nell’utilizzare il database interno di asterisk per immagazzinare le date, per poi limitarsi ad eseguire un check nel dialplan di asterisk.

Database: per aggiungere una data “bankholiday” al database asterisk si utilizzerà il comando ‘database’ come nell’esempio sottostante, sostiuendo la YYYYMMDD (key) con il giorno desiderato (es. 20101225):


asterisk -rx 'database put bankholiday YYYYMMDD 1'

Dialplan: la funzione DB_EXISTS restituirà valore 1 se la chiave YYYYMMDD esiste. Nel esempio sottostante il dialplan continuerà l’esecuzione della macro “reception” se il  giorno risulta non essere nel database, mentre salterà al menu vocale “menu-reception” durante i giorni festivi presenti nel db interno.


[macro-reception]
include = default
exten => s,1,GotoIf(${DB_EXISTS(bankholiday/${STRFTIME(${EPOCH},,%Y%m%d)})}?closed,1)
...
exten => closed,1,NoOp("closed")
...