Membership notification system using AWS Pinpoint SMS!

The Challenge!

We had a voice notification system setup to alert member of our “club” about meetings and special events.  It consisted of a Dynamodb table that listed the phone numbers of the club membership; several lambda functions to access and update the database and an Amazon Connect instance to drive the telephone network requirements.   It worked well and got the job done.   Administrators would call up the application, enter a security authorization code, reset the database, record a new greeting and have a message delivered to every member within minutes.  The only complaint was having to maintain the membership database.  Members came and went and someone had to keep the database updated!

The Solution

Text had an interesting advantage!  Members would be able to add or delete themselves from the database themselves.  You would add yourself to the notification list by texting the work JOIN to the published notification number.  If you wanted to leave the list, simply send the word STOP to the same number and you would be removed.     This seem like a perfect solution, creating a self healing application that  would free if not eliminate the need for administrators.

AWS Pinpoint SMS to the rescue

Some of the components we used in the voice notification system were still required.  The dynamodb table and lambda were still critical components.  We did not need to use Amazon Connect for the telephone interface as AWS Pinpoint had an SMS interface.  We also needed to add SNS so that an incoming SMS message would trigger the lambda function to parse the message.     Pinpoint at the time we implemented the first version of the product did not have a facility for testing the application.   SMS spam has become such an issue, that you are now required to register your “campaign” and have the carrier approve it before you can send your fist text message.  There is now a newer version of Pinpoint SMS that has a test facility, but you are still required to obtain approval for your planned usage of the SMS functionality by carrier.   The process is frustrating and may take more than 30 days to complete, so be forewarned!

Bells and Whistle Options

Members would send the word JOIN to be added to the notification list, but who could send messages to the list?  The goal was to eliminate dependence on an administrator to send SMS messages that might originate from different parts of the organization.   To accomplish this, we created a SEND option!  We defined an environmental parameter that was the “secret password” and if this word was the first word in the incoming text message, Lambda would strip it off and forward the rest of that incoming message to the membership list.  (How kool is that)?   In our next version, we added the ability to customize the JOIN message to include firstName and lastName.




DrVoIP Amazon Connect Tech Tip – LEX Bot Versions!

Well, it is the 21st century and though we still drag around fax machines, we do seem to be getting away from Touch Tone Call Tree IVR systems!  Really, are you not tired of “Press 1 for this and Press 2 for that”?   I know I am at every opportunity to replace a DTMF IVR with a speech recognition I jump on it!  “Thanks for calling how can I route your call” is a lot more like what you would imagine we would have in the era of Artificial Intelligence and natural language speech processing.   Thanks to the ever expanding ecosystem found in the AWS, we can add this technology to an Amazon Connect Call Center with ease and economy.  Long gone are the outrageous “per-port” license fees historically charged for speech recognition technology.

We have other tutorials on our YouTube Channel that deal with configuration of LEX, the AWS speech recognition capable BOT!   In this tech tip we review the process of “versioning” you LEX bot and we explore the concept of “Alias” publications.  This is often a misunderstood concept and hopefully this tutorial will help eliminate or reduce the mystery of this subject matter!    Keep those cards and letters coming –


The ROI of the Dextr Dashboard for Amazon Connect Call Centers!

Amazon Connect the Call Center!

Amazon Connect allows you to tap the very rich library of AWS Services including AI, Natural Language Processing, text to speech, transcriptions and translations!   Your Amazon Connect instance is scalable, resilient and fully redundant in the most widely respect cloud on the planet.  If you can “dream”  it, you can create a call center that meets your exact requirements.   Amazon Connect enables even a non-technical professional the simplicity of configuring an inbound call flow, attaching a phone number, defining agents and operating hours and in less than an hour, you are taking phone calls. Given that every call center has some kind of database integration required to pop screens, or route callers, you do need some software engineering and consulting services to get to the next level of feature sets and functionality.

That is why we think the Dextr Dashboard, at less than a penny a minute all but pays for itself.

Lets look at some feature examples:

Assume you would like to add “Holiday Schedules” and “Ad-hoc closings” to your Amazon Connect feature set.  Out of the box, Amazon Connect does not have Holiday schedules.   This is not a very complex feature set to implement if your are a software engineer.  Add Amazon DynamoDB as the database engine to store you Holiday list and Amazon Lambda to be the code that checks  to see if “Today Is a Holiday” is a TRUE value, returning that result to to your Amazon Connect Contact Flow.  If it is true that today is in fact a holiday, we want to route you to some options for handling your call while we the call center is closed!

As a Supervisor you may want to close your Customer Service Queue (CSQ) to hold a team meeting.    You will want to do this yourself without having to fill out a service request for the Admin team.   Ideally you will want to identify the meeting as “technical support team weekly update”, set the date and time of the meeting and even create a custom prompt to be played to the caller if they reach this CSQ during the time the meeting is taking place.   Again, given the library of AWS services available this is relatively straight forward for an implementation engineer.  You will use the same tools as the above Holiday schedule but you will need to add in Poly for text to speech to get that custom prompt.

AgentUser Interface or “dashboard”?

Then again there is the issue of how do you interface with Amazon Connect to implement those simple features?   You are going to have to create some user friendly graphical interface that simplifies this magic and makes it easy for the Supervisor to do this on their own without technical support from the IT or Admin team.    In fact, you will most likely want to have a user interface that can stand the test of time as you continue to enhance your Amazon Connect feature set!   This graphical user interface should also work on multiple devices in addition to your desktop computer.  Devices like smart phones and pads for mobile supervisors and remote agents!

How much does feature development cost?

So using the two features above as an example, Holiday Schedules and Ad-hoc closings, let’ look at the cost of design, deployment, training and ongoing support.    First, you would contract with a competent, experienced and Amazon certified development resource.    Let’s assume that you contracted with DrVoIP, a certified Amazon Connect Service Delivery partner.    You would expect a written statement of work (SOW) and a budget.   This might look something like this:

  1. Holiday Schedule – Enables the creation of a holiday list that indicates the date and time during which specific customer service queues may be closed.   The application should enable both full day and half day closings.   The application should allow for different schedules to be applied to different customer service queues.   The contact flows for each of the affected customer service queues will be modified to incorporate this functionality. – 40 hours
  2. Ad-hoc  closing with custom prompt- Enables an individual with Supervisor permissions to configure and close a customer service queue.  The Supervisor must be able to set the time and date. the date must also be able to be for multiple days.  Additionally, the Supervisor should be able to create a new prompt to be played to the caller during the closed period.The contact flows for each of the affected customer service queues will be modified to incorporate this functionality. 40 hours
  3. Front End GUI – Develop a simple administrative user interface to enable the configuration and management of the above  two features.  Assure that the interface has growth potential to enable the addition of new functionality as it is developed. – 40 hours
  4. User Training and “go live” support.  – 5 hours
  5. Project budget for DrVoIP Virtual Implementation model  125  hours at the already ridiculously low price of $135 an hour = $16,875

Why Dextr is “almost free”!

The Dextr Dashboard includes this basic functionality.   Dextr has a price of less than 1 penny a logged in minute (e.g. .007).   This means you could drive a Dextr Dashboard for 2,410,714.29 or 5,035 days!  Given an agent day of 480 minute, you could drive a 20 agent call center for a year!

Now Consider that full range of Dextr Dashboard features and the value proposition sky rockets!

  • Nothing to install! Instant Access via which has video instructions for on-boarding;
  • Customizable Logo and YourCompany custom log-in URL;
  • Role based Login (supervisor, agent, administrator)
  • SAML support;
  • Agent Team Status Display;
  • Agent to Agent Chat
  • Agent Call Activity with (click to return call);
  • Directory System with Click to call;
  • Help Button – Alert Supervisor;
  • Queue Monitor – including calls in queue, max waiting time; optional red, yellow tags)
  • Personal Recording; (permission option);
  • Supervisor Permissions add: Login/Logout (change agent state) Monitor, coach and Barge in;
  • All Recording search and play (see note 1 below);
  • Real Time Metric review Report Generation
  • Ability to set Holiday Schedules and “ad hoc” closings with new close prompt (think team meeting).
  • Push Announcement String out to Agent Dashboard for alerts and other notices.
  • Omni-Channel SMS/MMS enables test and pics to the next available agent
  • Omni-Channel email routing to the next available agent
  • “no headset” audible alert options for softphone

Head over to https://Dextr.Cloud and sign up for a “free trial”.   What?  You do not have an Amazon Connect call center?  Then give us a call and we will build you a proof of concept and then migrate you to the cloud based call center of your dreams!  –


Amazon Connect Configuration Best Practices – Part 3 After Hours Call Flow with SMS!

Providing options for callers to you contact center after normal business hours is always a good practice. Our standard “after hours call handler” makes use of several options:

  • Send Caller to Voice Mail or Message Center
  • Send a Text Alert to an on call team member
Download After Hours Call Handler with SMS notification Option
You must register on home page to download

The text notification step requires some additional AWS services including PinPoint, SNS and Lambda functions. For this option to work, you will need to setup an SNS topic and make use of PinPoint to get a phone number to associate with the call block.

In the above call flow block, we invoke the lambda function when the caller selects that they want a call back from the on call team member. Lambda then interacts with PinPoint and SNS to send a canned message “an after hours caller needs help” sending both the message and the contact phone number to the SNS subscribers. This is a very effective solution for integrating SMS into your contact flows and is ideally suited to “on call” notifications.

Amazon Connect Configuration Best Practices – Part 2 Customer Queue Flow

Making the caller “comfortable” while waiting in queue for the next available agent is the primary role of a “customer queue flow”. Our standard practice is to provide a range of options that can be turned on or off as desirable for a specific CSQ. The main greeting contact flow discussed in Part 1 will attempt to hand the caller off to an available agent, but if none are available, the caller is moved to the customer queue flow.

The “customer queue flow” we typically provide does some initial setup and status checking:

  • Set Loop Prompts (Music and messages and time)
  • Check Queue Status
  • Check Call Back hours of Operation
  • Play EWT prompt
  • The Offer the Caller options (Wait, Voice mail and Call Back)

In our standard queue hold we check the queue status for “time in queue” of 3 minutes. We use this “poor mans” estimated wait time to provide an option to the caller if they are in queue longer than 3 minutes. We offer three options; continue to wait for next available agent, transfer to voice mail (or operator) and “call back”.

We also create a schedule for offering the call back option. When your call center closes at 5PM you may not want to offer the call back option after 4PM, so we check the schedule and if the caller is after the specified time in the schedule, we do NOT offer the call back but move to a block that only offers wait or voice mail.

DemoCustomerQueueHoldwithCallBack call flow download link

You must register on the Home page to download script

This contact flow also has the ability to prompt the caller to leave a call back number. This step requires some SSML in the text to speech block as we want to confirm the number the caller entered and give them an opportunity to correct any errors. First we prompt the caller to enter the phone number we should call them back at.

The Set Contact Attribute block is used to assign the callers input to a variable we can call on later in the flow:

In this example we are setting a destination key of “numberinput” and stuffing that variable with the system provided attribute “stored customer input”. It is important to set the destination key as any further use of this block will over write the stored information which you will need to reference later during the playback verification step.

This block reads the callers phone number back to them as an SSML object as illustrated above. Note that we reference the numberinput from the set contact attribute block as $.Attributes.

Amazon Connect Configuration Best Practices – Part 1 Main Greeting options

Every Call Center is in fact unique, but the all share a common theme that can be encoded for recreating deployments quickly. Generally we divide Contact flows up into manageable contact flows that compartmentalize call handling. For example we generally create a MainGreeting, QueueHandling and After hours Call Handling call flow and these three basic contact flow blocks provide some very powerful options!

Generally, we attach the incoming phone number to the MainGreeting Contact flow. This flow is very important as we use it to setup all the required variables required for whatever CSQ this greeting will front end. This contact flow will usually perform the following:

  • Set the voice to use for Polly based prompts
  • Enable Logging behavior
  • Enable Call Recording behavior
  • Set Agent Hold Behavior
  • Set Customer Hold Behavior
  • Set the Queue Hold Behavior
  • Set the Customer Queue
  • Set the whisper behavior
  • Set the Working CSQ
  • Invoke Lambda function to check for special closing
  • Check Operating hours
  • Prompt and Collect Caller Input
  • Transfer to Flow or Queue as required

These are all critical parts of the overall call flow and set the stage for call handling throughout the rest of this callers experience. Not burdening the the contact flow with all the queue options while awaiting connection with an agent, makes the flow more manageable!

If the caller can not immediately be routed to the next available agent, they are passed into the contact flow that describes the experience the caller has while waiting including the presentation of any options the caller might elect to initiate while holding.

DemoMainGreeting Contact Flow down load link!
You must register on the Home page to download the script

We will cover the Queue Hold options in the next post!

Amazon Connect voice prompts with POLLY text to speech.

One of the most challenging implementation tasks for an implementation engineer or application developer is getting the client stake holders to agree on customer audio prompts! Having implemented hundreds of call center solutions, having to wait for the client to get their IVR scripts together is the “black hole” of project management. So many other parts of the enterprise have their finger prints on the content of a customer voice prompt. From the call center managers to the legal department, everyone wants to comment on this implementation detail.

Voice Prompts can be a “speed bump” in your deployment timeline!

For the implementation engineer, it is without doubt the speed bump that slows down project readiness! Often the prompt is a source of data collection for “self navigation” through the “call tree” or IVR front end. “Thanks for calling, Press 1 for this and 2 for that” has some hard coding detail that can be easily effected by a simple prompt change!

Thankfully AWS has an embedded service that provides text to speech functionality. This means an implementation engineer can move ahead by popping prompts with text that can easily be changed as the rest of the enterprise catches up on prompt content, format and voicing. This service named POLLY, is a more than useful service and has been a life saver in more than one “instance”, excuse the pun!

Polly Programmatically?

Polly is not only useful for creating test prompts until the content and format can be reduced to a script that a professional voice artist can record, it can be used “programmatically”. For example, Dextr has an embedded application for automating closings, regardless if they are scheduled holidays or “ad hoc” closings for a team meeting called by a CSQ supervisor. Dextr will allow you to not only setup the calendar and time of a closing, but will enable you to enter the text content of a prompt to be played to the caller during the closing.  This might be a custom greeting for a holiday (i.e. we are closed for Christmas, or Veterans Day) or an on the fly prompt for an ad hoc meeting.

Polly Prompts on demand!

Many times, it is necessary to create a prompt on the fly!  Maybe you want to personalize a prompt by adding the callers name, or some customer specific attribute like an appointment time, or order number.  Common applications like reading back a bank balance are also made more flexible by using Polly.  Not just speaking back account balances, but making the call flow and content in an AWS Connect instance programmatically customized on the fly, and unique for each caller.

This strategy is a win/win for all stakeholders!  It enables a more rapid deployment of a call center context while enabling greater flexibility in the design, deployment and management of prompts.   Enabling Polly as a service inside your AWS Connect call center instance is an essential part of your implementation tool box and a software application development engineers best friend!

Lex a conversational voice interface for Amazon Connect call trees.

Historically touch tone “call trees” have over populated the IVR landscape prompting callers to “Press 1 for this and Press 2 for that”. This has been the standard since the first half of the last century! You would think that in the 21st century we would have a solution that can eliminate this kind of button pressing, sequential logic, menu after menu of options and hope the caller gets where they wanted to be!

Which would you prefer?

Think about it. What would you prefer as a caller? “Thanks for calling BoringCompany greetings, if you know the extension of the party you want to talk with, enter it now. Press 1 for Customer service, Press 2 for Technical support, Press 3 for another menu with even more options for you to select from”! Or would you prefer “Thanks for Calling, how can I direct your call”?

To achieve that simple interface takes a lot of technology, but fortunately AWS Connect makes use of an AWS service named Lex. Lex is a combination solutions that include Speech Recognition, natural language processing and artificial intelligence. Lex can prompt a caller with a friendly voice “‘how can I direct your call” and then understand the callers spoken response. NO more pushing buttons, no endless menus.

For example, Lex could even figure out what language the caller is speaking and respond according, no more “to continue in english please press 1”, which in and of itself is worth the price of admission.

What is an Utterance?

Lex is built on the concept of “utterances” which is nothing more than a spoke phrase to which you can create additional responses. For example, the caller might say “I need to check the status of an order” and Lex might respond with “is this a recent order or do you need to speak to your sales rep”?

Keep in mind that Lex has captured the Caller ID of the caller and could actually look up either the order or the sales person that took the order. Lex might even be able to greet the caller by name. “Thanks for calling Peter, how can I help you”.

What can a “ChatBot” do in a call center?

As a “ChatBot” Lex can enable callers to self navigate through solution options without ever speaking to a call center agent. Lex can book an appointment, change schedules, update status information, change passwords, update calendars, summarize the new, weather and sports and greatly enhance the speed of answer and call resolution.

If Lex replaces three call center agents, is that an increase in productivity? We think not, if it only gets the same amount of work done as before Lex was introduced to the call center. We increase productivity when we can redeploy those three agents to do other work!

As always we are happy to setup a “proof of concept” that applies Lex natural language processing and automatic speech recognition to your specific environment. Just click or call and we would be happy to help you!


Amazon Connect Custom Integration tools!

If you have taken the time to experiment with AWS Connect and the creation of a cloud call center instance, you know that the basic setup is achievable by a business analyst and no implementation engineer is required. This is good news for very simple, inbound call centers but if you are planning to connect with the rest of the enterprise, you will need some folks skilled in full stake web service development.

No Call Center is an Island!

Call Center as a business process and customer experience management, require that the call center be able to communicate with other information resources throughout the enterprise. The interface between the AWS Connect call center instance and the rest of your organization will must certainly require both middleware and API’s that make use of advanced software development tools within AWS!

Common integration requests that dominate the call center technology space include:

  • Customer Routing Database Integration;
  • Work Force Management
  • Voice and Screen Recording and Playback
  • Voice Analytics
  • Electronic Health Record
  • Website Integration (think MyChart or CoBrowsing)
  • Microsoft CRM
  • Microsoft Skype for Business
  • Custom Agent dashboards
  • Real Time Metric display boards

These are just a few of the common requests we see on a daily basis. There are also unusual requests for custom solutions that are unique to the business enterprise the call center is deployed in!are also unusual requests for custom solutions that are unique to the business enterprise the call center is deployed in!

Common AWS Connect Integration Tools!

There are a few tools that are essential for developing integrations in AWS Connect. Generally, you will always require Lambda a “function as a service” to unite the call center to any other service. Lambda is “serverless” so you do not need to worry about setting up a server and you can write your function in any of the popular programming languages including Node.js our particular favorite!  Unless you are interfacing with a CRM, you will need a database and we would choose a noSQL solution like AWS DynamoDB, another server less solution.  Lets assume you want to route calls based on the callers area code, so that east coast calls go to the Agent group in your hierarchy that is optimized for east coast callers.  Maybe you want to greet your callers by name. This would require you to pass the Caller ID on an incoming phone call to a function in Lambda that would look up the customer and find the name, then pass the name back to the call center and activate Poly, the AWS text to speech service, so that you can prompt the caller with “Hi <customerName> before continuing to route the call to an agent!  Maybe you want to display the callers name to the Agent when they answer the call, which would again require both Lambda and DynamoDB in addition to some custom code!

Custom Agent Display?

Sometimes it is necessary to create an entire Agent dashboard to handle information displays, team collaboration, key metric broadcast, recording retrieval and playback.   We created the Dextr.Cloud dashboard to provide such an interface.  This is an example of the type of integration that is possible with AWS Connect and the many services that exist in the AWS Cloud.    We are interested in learning more about your own call center integration requirement and invite you to give Dextr.Cloud a try and also to contact us with your integration “’wish list’.   We have seen a lot of requests and nothing suprises us anymore!  So please feel free to play ‘STUMP THE VENDOR” and we will see if we can help you or at least direct you in the right direction!




Amazon Connect replaces ShoreTel Workgroups with the Dextr Dashboard!

Replace ShoreTel Workgroups with AWS Connect1

Recently we had a client with a very specific set of requirements and DrVoIP was able to satisfy with Dextr dashboard!   The client had a ShoreTel deployment that used ShoreTel Workgroups. ShoreTel Workgroups are often called a ‘poor man’s’ call center.  The client had made a decision too they were migrating away from ShoreTel to Skype for Business, they needed a new Call Center solution.  Workgroups act like traditional hunt groups but they enable customer queueing and both historical and real time reporting in a manner that is very similar to a formal call center.

The client wanted to replicate ShoreTel Workgroups along with the same ‘look and feel’ as ShoreTel Workgroup agent dashboard.   This dashboard enabled queue monitoring and also enabled a supervisor to change an agent state from Forced release to available or move an agent between queues.   We had no doubt that AWS Connect was the ideal solution, but we knew the Connect Control Panel or CCP as AWS calls the webRTC soft phone, would need a lot of work if it was going to provide the same functionality as ShoreTel.


We created the basic Dextr Agent dashboard to have the same features and functionality as the ShoreTel Workgroup Agent interface with several new and advanced features.  We needed to create a solution that would enable Supervisors to create an ‘ad hoc’ meeting and to close the call center and even create a new ‘CLOSED’ greeting.   Additionally it would be desirable if the Supervisor could send a broadcast message to all the agents in the queue.  This broadcast message would scroll across the agents screen, alerting all to a situation that the Supervisor wanted to bring to the attention of all Agent.

AWS Connect Holiday Schedule.

The first requirement was to setup a holiday schedule and also to allow the supervisor to create a ‘CLOSED FOR MEETING’ date and time.  AWS Connect does not have this ability out of the box, but it does have the API’s available to create such a solution.  So our team added this functionality!  Dextr enables a user with Admin privileges to open a window and create both HOLIDAYS AND AD HOC closings.   The instance is initially stocked with all US Federal holidays already listed.  The Admin can modify, add or delete these dates.  They can also specify, via the drop down window, which queues they are closing.  There is also a Text to Speech window in which the supervisor can enter the text of a prompt that will be played to a caller should they call during that time slot.

Dextr uses AWS Lambda to test for a holiday or ad hoc closing as step one in the opening contact flow.   The Lambda function brings back open or closed, a reason code and the text to speech prompt.   In this way the caller might hear ‘ You have reached us at a time we are closed for <insert reason from Lambda>, please hold while we transfer you to the message center’.   The entire message is created by the supervisor as the TTS or text block that will be returned by Lambda.

Dextr also enables the Supervisor to send out a broadcast message that scrolls for all queues or just a selected queue!  This is a list of all the features of the Dextr Dashboard basic version;

  • Nothing to install! Instant Access via which has video instructions for on boarding;
  • Customizable Logo;
  • Role based Login (supervisor, agent, administrator)
  • SAML support;
  • Agent Team Status Display;
  • Agent Call Activity with (click to return call);
  • Directory System with Click to call;
  • Help Button – Alert Supervisor;
  • Queue Monitor – including calls in queue, max waiting time; optional red, yellow tags)
  • Personal Recording; (permission option);
  • Supervisor Permissions add: Login/Logout (change agent state) Monitor, coach and Barge in;
  • All Recording search and play (see note 1 below);
  • Real Time Metric review Report Generation
  • Ability to set Holiday Schedules and “ad hoc” closings with new close prompt (think team meeting).
  • Push Announcement String out to Agent Dashboard for alerts and other notices.

Dextr augments the basic AWS Connect CCP softphone to enable advanced features that we find most call centers demand!  See Dextr.Cloud or DrVoiP.COM for additional details!