So what’s going on outside the Core Contact Center

I happened to be watching a few documentaries on how Einstein and other Key Scientists discovered their contributions for which they are now known for… I looked back at my work and see a plethora or technologies, buzzwords and jargons thrown around everywhere and I started thinking if it was possible to bring all of them under one logical roof. What I noticed was that the core contact center gets a lot of attention but the surrounding soft processes and technologies outside the core has been ignored. Let me first explain what I mean by the core:

It has three primary components:

  1. The Connect Services – Focus is on Expanding the ways by which the Customer is able to connect with the Contact center. Nowadays this extends to finding ways how agents also can perform their service from multiple channels other than the rather traditional phone + pc method.
  2. Self Service Services – These Focus on Diverting the Interaction from Human to Machine. The Motivations can be many but bottom-line it’s a machine doing the human’s job. Again the rant of IVR Hell is the most popular slogan in every CC Sales person’s narration and continues to the Rise of the Bots in service of Humanity and the best bots being from their garages.
  3. Automation Services – These Focus on Ensuring that the Customer gets serviced by the right agent or bot based on information collected during the interaction or history.

All of these are fundamental to any contact center solution for longer than the past 2 decades and hence I never got myself to blog on the various transformations happening here. What could happen outside the core is however never discussed and hence the key subject of this blog.

Let’s visualize this Core Thingy

So the Experience Gained by Customer when Interacting with the Connect services, we call “Customer Experience” aka “CX”. Similarly, the Experience the Core Gives to Agents becomes the “Agent Experience” aka “AX” … Right?

Wrong… Let’s see why…

Let’s focus on the Customer and see what actually is driving their CX… I hear your mind voice…you just thought about the new term “Omni-Channel” …. And Something Else is coming up… “Customer Engagement” …. Ah now I hear something else … Ok Stop… I’m here to tell my opinion …not Yours!

In my opinion Customer Experience is governed by three key activities

  1. Engineering – This is where the Engineers tirelessly build the core and associated solutions block by block. After crossing the mindless desert of bureaucracy, the storm of politics and whirlpools of bugs, the Engineers brings solutions to production. This used to consist of lifelong projects in the SDLC era but now has been cut short using DevOps so engineers have to cross smaller obstacles than larger ones before…
  2. Experience – Once the Solutions are brought to production the customer happens to use the solution and hence you get “Customer Experience”. Thankfully there are tools which are able to Quantitatively measure these customer experiences using DataOps. This used to be a laborious manual task in the past but nowadays has become automatic to a large extent letting the Data Engineers to focus on Insights
  3. Insight – The Insights is the activity performed typically by Supervisors but now slowly business managers and marketing managers are also getting into these tools to gain insights to better their side of business. These Insights result in Stories which in turn fuels the next round of Engineering.

Now let’s visualize what I’m talking about …

Now in Traditional Environments, this whole cycle would happen every month at max but the way things are moving in the Digital Economy, it actually moved on to Events based model thanks to AI ….

On a similar note the same cycle goes on in the Agent Side as well contributing and improving the “Agent Experience” and “Agent Engagement”

So What else could be happening here… All the Engineering activity happen mostly on the CC Platform and the Data about Customer and Agent Experiences and Interaction Histories are stored in Data Stores

So Let’s bring them all together:

So Let’s look at this new box called Platform we just added… It’s basically the core of the contact center exposed to Developers and Infrastructure Engineers.

The AppOps Team would use Observability Tools to understand the Services’ performance and bottlenecks.

The AIOps on the other hand use Experience Monitoring Solutions and Uptime Monitoring Solutions with Automated Remediation Solutions.

For the Developer there is the DevOps Stack with the Code Repository to store their configurations and code. Continuous Integration Ensures that the ready to release software/configuration gets Tested functionally and for Security Vulnerabilities as well, before landing on the platform.

So this is how all this would look like:

So the Platform has a lot of real-time and historical data in the Data Store… Let’s see what the Data Folks do with it…

So If you have a real Data Engineering Minded Org then the Data Engineers and Scientists would like to have their own layer of lakes to handle the processed data in their useable form.

Most Orgs would use prebuilt Analytics solutions to serve business metrics to Business Managers and Contact Metrics to Supervisors…

There could and should be more outside the core that typically gets ignored in most orgs… If you know anything I missed please do let me know

Call Flow Manager for Skype For Business Server

Another Tool that I’m sure other too have been waiting for but not delivered from Microsoft

Andrew Morpeth’s blog about this upcoming tool that gives the Powershell + non-Intuitive LCP a bye bye…

I wish he is able to come up with the Routing Group Designer and IVR Designer for Skype for Business successfully…

In its current screen shots shown in his blog the RGS part is definitely greatly simplified than the native options…IVR Does have to catch up with the capabilities provided by Avaya/Cisco and Genesys…For now the Lync/S4B community needs such tools to move Lync into the Contact Center Space that currently is filled with expensive solutions which have more unused features than needed

Twillio Cloud IVR Experiment Day-2

Looking around I found some new feature called ‘TwiML Endpoints‘ under the SIP menu. The TwiML Endpoint solution basically adds some basic IP Blocking Capabilities and Credential Management.

I don’t want to get bogged down by security right now and hence I’m going to proceed with the PHP Side as it is more powerful but in enterprise situations the TwiML Hybrid solution would be a better fit to offload load on customer’s Script Hosting Server. Second reason being that even in PHP Script the instructions sent back to Twillio are in TwiML, hence there is no double learning here.

So here is what I’m going to focus on building today…

This call flow should quickly help me to understand voice prompts (Both mp3 and tts, Call Related variable information collection, menu presentment, call recording, recording playback, call external number and finally disconnection. Lets start:

First I created the PhP for the Introduction menu (JFtest_intro.php):


    header(“content-type: text/xml”);

    echo “<?xml version=\”1.0\” encoding=\”UTF-8\”?>\n”;

$name = $_REQUEST[‘From’];



    <Say>Hello <?php echo $name ?>.</Say>



It’s a simple code that collects the CLI stored in the global variable ‘from’ into a local variable name and then play it back using tts

It then calls the main menu (JFtest_mainmenu.php)


    <Say>You have reached Main Menu.</Say>

    <Gather numDigits=”1″ action=”JFtest_mainmenu_handle.xml” method=”POST”>


            To speak with a monkey, press 1.

            Press 2 to Check Your Voice.

             Press 3 to call Julian Frank.

Press 4 to Disconnect the call..




This code initiates the dialed digit collection and specifies the ‘handle’ script to be used to handle any entries…This is a simple one…the handle Script (JFtest_mainmenu_handle.php) has more action


    header(‘Content-type: text/xml’);

    echo ‘<?xml version=”1.0″ encoding=”UTF-8″?>’;

    echo ‘<Response>’;

    # @start snippet

    $user_pushed = (int) $_REQUEST[‘Digits’];

    # @end snippet

    if ($user_pushed == 1)

    {    echo ‘<Say>Transfering call to Monkey</Say>

     <Play></Play>&#8217;;    }

    elseif ($user_pushed == 2) {

    echo ‘<Say>Record your Voice after the beep. Press # or * to stop recording</Say>

    <Record maxLength=”10″ action=”JFtest_voicecheck.php” />’;


elseif ($user_pushed == 3) {

    echo ‘    <Say>Calling Julian. Leave a voicemail.</Say>



elseif ($user_pushed == 4) {

    echo ‘ <say>Bye Bye</say>



echo ‘<Redirect>JFtest_mainmenu.php</Redirect>’;

    echo ‘</Response>’;


That’s a lot of code…but nothing complicated….

The code $User_Pushed picks the digits dialed into $User_Pushed….This is then used to select the option we want to perform.

Options 1: Its simple…It just does a TTS and then plays the mp3 hosted in twilio site

Option 2: This is interesting . I wanted the user to speak for 10 seconds and then speak it back….Looks like I cant do it in the same script and need a handler script ‘JFtest_voicecheck.php’ to handle the recorded voice. Will provide that code later.

Option 3 : Simple ..Dial my Google Voice number …You can leave me a voicemail…Be Kind though J

Option 4: Disconnects the call using <Hangup/> code.

The JFtest_voicecheck.php handler doesn’t do much in my test


    header(“content-type: text/xml”);

    echo “<?xml version=\”1.0\” encoding=\”UTF-8\”?>\n”;



    <Say>Thanks for howling… take a listen to what you howled.</Say>

    <Play><?php echo $_REQUEST[‘RecordingUrl’]; ?></Play>




It just thanks and plays back the recorded content stored in temporary Global variable ‘RecordingUrl’. I could extend this to store in some location to make this a voicemail application. Twillio also seems to have DB Integration capabilities…Gotto try it out but later…Till then I’ll try to survive all the Smog created by Diwali crackers here..

My First Twillio App

Its been a bit depressing week and I was wondering what to put in blog and there I came across Twillio…I felt adventurous and gave it a try.

Open an Account and DID

Opening an Account is simple, Online and hence fast. The free account gives you a US based DID number for free that can be used to make & Take calls from the grand old PSTN and also send & receive SMS. Its not unlimited …there is a credit limit of $30…Good enough to try this Cloud Solution.

I wanted to first try out a Cloud IVR Solution and hence focused on the inbound settings.

I went under Numbers->Twillio Numbers and there is the DID assigned to me and the URIs to which it has been configured to handle the call.

I Clicked on the number and it shows the detailed configuration and the default for Voice is some test URL pointing to a site which has a simple app that does nothing but read out the sentence given in the URL itself. I Changed the Text and then from my Deskphone called the DID…It gives a short message and then after keypress reads out the sentence I had configured using Text-to-Speech.

Now the DID portion is tested and ready.

Host IVR Application

In Practical scenarios a Simple message is not what I would want to play to the caller but rather provide a menu and based on the option selected either transfer call to another number or take a voicemail. This would not fit into a single line and hence the option is to host the IVR Application in third party servers and configure to call them from Twillio. Further the Application can be PHP, Java, ,Net, Python or Ruby…But need to host these in a site and in my case for FREE J

Now where do I go to get a free site..A brief googling around pointed me to this site called It’s a very conservative free no-ads site which allows free PHP hosting for a mighty 1.5MB of code. We usually hear GBs and TBs normally and 1.5MB may sound tiny but remember we are going to keep PHP code with zero media.

Great …I Registered and got a * account. I activated the Site using the URL sent to my email and was shown a neat page with URL to the Admin Center and all details of MySql that also gets configured by default.

I logged into the administration center using the URL provided and zeroed into the “Online File Manager”. In this site no uploads are allowed in the root folder and instead need to be uploaded into the “/htdocs” folder. I simply navigated to this folder and created a test.php file using the text editor provided in the site itself. I started testing the code given under different versions of code provided by twillio in The code in the 1.4 folder is the most complex and funniest…try it yourself to know why J

Great! That was something to cheer up on an otherwise gloomy week. Next going to read more of the documentation on how to make more complex IVR Applications as per my design…Will blog if I discover anything interesting.