Virtual hotline service: work in progress

status update on the project: Hotline routing works as described below. Yet to be done: self-service menu for the engineers.

The XEN server is upgraded to 768MB RAM. Now there’s enough memory for everything: the basic website, the ticketing system, the FreeSWITCH, and also few more things in the future: the SMS gateway and file sharing application.

FreeSWITCH is great, although it takes time to learn everything. Also it comes with a default configuration which contains lots of examples and unused features. It takes about a day to clean up all unneeded parts.

Also quite time-consuming is the debugging of codec negotiations between various endpoints. It requires lots of calls and wiresharking.

FreeSWITCH provides a great capability to build complex IVR dialogues. Also out of the box, it can call multiple endpoints at the same time, and ask them to press a digit to take the call. This allows us to send the hotline emergency calls to as many phones as we like, regardless of their individual timeouts or voicemail. The fiollowing code inside an extension does the trick:

      <action application="set" data="call_timeout=40"/>
      <action application="set" data="group_confirm_file=phrase:press_one_to_answer"/>
      <action application="set" data="group_confirm_key=1"/>
      <action application="set" data="hangup_after_bridge=true"/>
      <action application="bridge" data="${group_call(hunt_$1@${domain_name}+A)}"/>

Pity that there’s no ready-to-use audio file that would tell “press 1 to answer the call“. Out of the stock audio files in FreeSWITCH, I managed to compose “Press 1 to hear screaming monkeys“.  As  my internal colleagues are supposed to hear this when the customer calls… probably I’ll keep that 🙂

Here’s the planned workflow for the hotline number:

  • Welcome message
  • PBX enters an IVR loop that requests the customer PIN
  • PBX tries to route the call to the current support engineer for 40 seconds. It rings all available phones, and once picked up, the engineer hears “Press 1 to hear screaming monkeys“. The firs phone where 1 is dialed is taking the call.
  • If unsuccessful, forward the call to the Hotline voice mail
  • Voicemail takes the recording, and sends it as attachment to the ticketing system in a high-priority queue
  • Ticketing system creates a new ticket and sends SMS to all engineers
  • Every 15 minutes, the ticketing system sends SMS to all engineers until the ticket is assigned and opened
  • If a ticket remains unassigned and unopened for more than 90 minutes, SMS messages are sent to whomever may help

The PBX will keep the current on-call engineer’s ID in FreeSWITCH internal database. Then there will be a self-service IVR menu for them as follows:

  • Enter PIN
  • Press 1 to assign Max as the on-call engineer
  • Press 2 to assign Greg as the on-call engineer
  • … and so on

As a result, there will always be a human which receives the calls, unlike the standard FIFO queue which may not have any agents logged in.


, , , ,

  1. Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: