Real time call listening 
When talking about IP telephony control, we can easily differentiate the need for quality control (how good is my voice) from content control (what is said on the call). For the last need, we can either save conversation content in audio files in order to listen these afterwards, or listen to call in real time : this last one is call “spying” in the Asterisk world.
This solution is tightly associated with individual liberty and one should be sure to have the appropriate authorisation to put such spying solution in place, this is not the main topic here, let’s talk about the technical aspects.
In order to listen to a specific running call, this one should be already engaged. The functional need can be a supervisor listening to one agent call for training purpose or in order to analyse the exchange quality for an evaluation of the customer service. Most of the time1 a bip is inserted to the audited phone in order for this agent to be informed.
Two different applications can be used for spying: ChanSpy which can be used to listen to any engaged call and ExtenSpy allowing to focus on a specific call, targeting an agent for example.
ChanSpy
The ChanSpy application allows to spy any engaged call, one at a time, with a way to switch from one to the other. We should specify the kind of channel to listen to, SIP for example.
A typical configuration for the listener could be like:
exten => 630,1,Chanspy(SIP)
Each time a # is pressed, the current spied line is left behind and the next in the engaged list is spied. In order to limit the list of call that can be spied, we can filter upon the ${SPYGROUP} variable. In this case, it is required to set the variable prior to the Dial, like in the following configuration sample:
;; before pushing the call to the agent located on the
;; SIP/213 phone, we set the SPYGROUP
;; variable to the audit value
exten => s,1,Set(SPYGROUP=audit)
exten => s,2,Dial(SIP/213,20)
;; here is the extension to spy the calls from the phones
;; with the audit filter activated
exten => 630,1,Chanspy(SIP,g(audit))
In this case, the engaged communication on the SIP/213 phone is spy-able. ChanSpy allows also some interaction with the listened channel2, this can be used to enhance the information provided to the customer by the agent, this mode is called the whisper mode3. Be careful to inform the employees if the country regulation requires it.
ExtenSpy
The ExtenSpy application command usage is simpler; the phone to spy is passed as an argument, any channel on this one could be spied, the whisper mode can also be specify if required. This application can only be used on well known phone, for example:
exten => _631.,1,Set(CHANNEL(language)=fr)
exten => _631.,2,ExtenSpy(${EXTEN:3})
Here, the extension 631XXX allows us to listen to any channel activated on the phone with extension XXX. For security reason, it could be a good policy to authenticate the access to the 631XXX extension, for example with a code.
Outgoing calls
When used in a call centre targeting customer with outbound calls, the spying process should be reversed by filtering prior the Dial command and setting the SPYGROUP variable, like below:
exten => _.,1,GotoIf($["${CALLERID(num)}" == "213"]?2:3)
exten => _.,2,Set(SPYGROUP=audit)
exten => _.,3,Verbose(“call routing”)
Here, the SIP/213 phone could be spied on for any of its ougoing calls.
Conclusion
This application is totally different from a monitor of each call for a delayed listening but could be useful in some case, especially for training purposes.
|
Posted by: Alexandre Chauvin-Hameau, on 05/30/2007 Trackback | Popularity: 22% tagged 1.4, asterisk and security |
|




(3 votes, average: 4.67 out of 5)
