Saturday, January 26, 2019

Trick asterisk to behave like a softphone

I suppose this is less of a trick, and more of a technique.  Use an asterisk box to register against another asterisk box as the extension devices.  

Scenario:

The Issabel CC system needs to be able to handle remote agents using their landline or mobile phone device.


At time of writing this (2019) Issabel CC system has some problems with this.  This issues isn't with asterisk application itself (remote PSTN agent in an asterisk queue has been a feature for 2 decades), but Issabel Call Center application does some custom code to make "at home" agents work

When using Issabel Call Center to send calls to remote agents over PSTN lines, I encountered login issues and call control issues with the calls through their interface.  I tried a variety of different techniques using call forwarding, follow-me, along with a variety of configuration tricks.  Some worked, but all seemed to require admins to manually modifying dialplan code, not something I wanted avoid if possible.

I needed something relatively easy to implement, easy to administer, wouldn't confuse call reporting in the Call Center and would allow all agent desktops at home or at the office to continue to show screen pops and allow updated customer information.

In order to satisfy the (current) needs of the CC system and the PSTN requirement we needed to deliver a call (no voip), a way is needed for Issabel Call Center queue to send a call to a PSTN user that would ensure the call was always in control.  Normally asterisk can handle a remote agent, but with some of the designs of the ISSABEL contact center system, it can't handle the remote agent on a PSTN connection very well (at time of writing)

I came up with a method to have a second asterisk box that acted as a register service for the at home agents, and then itself would register against the issabel cc, appear as if its a full softphone connecting.  The "register" server tricks the issable that actual sip phones are registered, even though the at home agent is fullying using their landline/mobile phone.  I registered an individual trunk connection for each extension from PBX02 to the CC asterisk system.  This gave the appearance to the CC's Asterisk that a SIP hardset/softset extensions were now registered.


When an agent is "ready" in the GUI, the CC would send the call to this SIP connection as it normally would.

On regiseter pbx, the call arrives as a DID being their 4 digit extension.  I send each DID to a unique MISC DESTINATION, which had their PSTN number in it.  This would cause PBX02 to place a call to the agents device.  

When the agent answers, this get passed by PBX02 to the CC system (PBX01) and the customer was connected to the agent.  Metrics were proper and the screen information was still delivered.

Configuration:

Assumptions, 2 Issabel asterisk box'es installed and functional, one configured as the call center, the other one going to be this pstn 'gateway' of sorts.  This document revolves around Issabel, but the concepts apply to asterisk in general.  I wont' be getting into the details of setting up a CC in this document, i'll have to assume you already know how to do that.

Trunk

Each trunk on PBX02 has a name that reflected the 4 digit extension number that we'll register against on PBX01, but the outgoing/incoming context is left blank.  On each trunk, in the incoming section at the bottom there is a registration string.  The syntax is as follows:

Trunk Name (description): 4 digit extension number 
Trunk Name (PEER Details): 4 digit extension number|
PEER DETAILS and USER DETAIL - Completely blank

Register String
extension:password@CallCenterServerIP/extension

Example:
1009:password@10.1.100.50/1009

Submit and Apply the changes

This registration is what PBX01 is expecting from a softphone device authenticate it and be able to handle call flow with it.

The log in the Issabel Call Center computer will show something like the following, showing PBX01 responding to PBX02's registration as Extension 1001


Now, on PBX02 server, go to MISCELLANEOUS DESTINATIONS

Create a MD for each extension, and put in the destination number you want to have for that user

This example is the mobile number for Extension 1001
Save your changes

Go to
INBOUND ROUTES

Create an inbound route
DESCRIPTION and DID Number are the extensions number you are using
Set the MISC Destination to the same extension 

Submit and Apply your changes.

Make sure you have the appropriate outbound and trunks configured for calls leaving this server to get out to the PSTN network.  Depending on your setup, you can send the calls BACK to the CC server to go out your PSTN connection

Now login to your Call Center user

We'll logon our AGENT "Maria Jones" with agent #9500 on Extension 1001 on the GUI

When we attempt to logon, the system will call "SIP/1001"

Here you'll see the system has called SIP 1001, which is sent to the IP registration on PBX02


Now PBX02 the extension 1001 call comes in


PBX02 receives the call and then dials the PSTN/MOBILE number of the agent

Agent answers, puts in their agent ID password.  They are now logged in and hearing music in their device.



Here's PBX02 showing call out PSTN network to agent


I've placed a call to the QUEUE 7777, agent 9500 on SIP/1001 belongs to, with their call being done on their mobile device

Here's their GUI showing the call from "1002" (my test extension)

Agent stats work perfectly



OTHER USES:

Whats cool about this, is this isn't limited to agents at home.  This feature can utilized to merge call centers together under a single umbrella.  As long as the Issabel CC can dial a remote device, it can (mostly) know that state of that phone.  







No comments:

Post a Comment

Feel free to leave a comment! If you have any information that you think should be included, please do so here and I'll get it added in.