Campaign Dialer History and the Current State of the Art in Amazon Connect

A Brief History

Amazon Connect was introduced in 2017 as a revolutionary, cloud-native contact center solution from AWS. That same year, DrVoIP installed its first Amazon Connect instance for a paying client. Having decades of experience building call center solutions with platforms like Cisco, we had developed a clear set of expectations for what a modern contact center should offer.

Initially, Amazon Connect lacked a native campaign dialer, a core requirement for outbound calling environments like telemarketing. This gap limited its early adoption in outbound-heavy verticals. While third-party integrations existed, our goal was to deliver a one-vendor solution built entirely on AWS.

Building with StartOutboundVoiceContact

In the absence of a native campaign dialer, early adopters had to get creative. The StartOutboundVoiceContact API enabled basic outbound calling, but required architects to develop extensive backend logic using Lambda, DynamoDB, API Gateway, and Connect flows.

DrVoIP built a foundational DIY dialer framework, managing contact lists, pacing logic, retries, and reporting through custom code. It worked—but was resource intensive and fragile under scale.

Third-Party Solutions Fill the Gap

As Amazon Connect gained traction, third-party dialer providers stepped in. Platforms from VoiceFoundry, Xaqt, and others offered robust outbound functionality, but came with additional costs, integration complexity, and vendor management burdens—contrary to AWS’s promise of simplicity and scalability.

The Arrival of Campaign Dialer V1

AWS quietly released Campaign Dialer V1, leveraging Amazon Pinpoint as the backend. It introduced basic campaign capabilities, including email, SMS, and voice. However, it suffered from major limitations:

  • No agent-aware dialing logic.
  • Lack of built-in retry policies.
  • Every contact was pushed to Customer Profiles, bloating CRM databases with unqualified leads.
  • Minimal real-time reporting or call disposition visibility.

V1 was a step forward, but it wasn’t production-grade for enterprise outbound needs.

Campaign Dialer V2: A Mature Offering

Campaign Dialer V2 brought substantial improvements:

  • Integrated directly with Amazon Connect, eliminating reliance on Pinpoint.
  • Introduced progressive dialing tied to agent availability.
  • Allowed custom retry logic and contact attribute handling.
  • Accepted CSV and API-based campaign data ingestion.
  • Empowered dynamic screen pops and routing via contact flows.

Despite these advancements, challenges remain:

  • Limited out-of-the-box analytics.
  • Inflexible call recording controls.
  • No native lead scoring or prioritization tools.

The Road Ahead: Event-Driven and AI-Powered Campaigns

We anticipate a future where outbound engagement in Amazon Connect is:

  • Event-triggered using Amazon EventBridge.
  • AI-enhanced via Amazon Bedrock or SageMaker.
  • Dynamically paced based on real-time Connect Streams API data.
  • Seamlessly integrated with Lex bots and CRM systems.

Why DrVoIP?

At DrVoIP LLC, we’ve led the evolution of Amazon Connect since day one. As an AWS Partner focused exclusively on contact center innovation, we:

  • Deliver on time, on budget deployments.
  • Maintain top-tier customer satisfaction scores.
  • Specialize in outbound campaigns, AI integrations, and real-time analytics.

Let’s build your next-gen contact center together.

📞 www.drvoip.com
📧 contactcenter@drvoip.com


How can an Agent Originate an SMS message in Amazon Connect ! – Part 2 Routing the Return Message

SMS Return Message Routing

In part 1 of this blog we looked at three options that enable an Agent to make originate an SMS message:

  • Option 1 – User a TASK Template
  • Option 2 – Create an HTML Form (DrVoIP favors this approach)
  • Option 3 – Create an Email to SMS solution

The key flows in any of these solutions, is to write the Send_TO_Number, smsMessageContent, AgentID (extension number, login, username), and timeStamp to a dynamodb table when originating and outbound SMS.  This is possible with all three solutions, but we like option 2 the best.  Option 1, with all of its strangeness has the advantage of being an action taken within the contact center, making a historical record more practical.  The other two options, start outside the call center and the origination event is not noted for historical records in the out of box archive methodology of the Amazon Connect Instance.

Option 1 Task Template launches Contact Flow

The TASK solution gets the Origination SMS job done and works just fine.  The Contact Flow the TASK points to contains an invoke Lambda that sends the messageContent and phoneNumber on to Pinpoint SMS.  There is no real way however, to capture the Agent that initialized the Task.   We tried writing the phoneNumber and TaskID along with a timestamp to a dynamoDB table, then invoking another lambda to look up the phoneNumber it in an inbound contact flow, but it was just ugly and did not identify the agent that originated the outbound SMS.  You need someway to ID the Agent so you can “set working queue” by agent and get the incoming return message routed accordingly.   Given that custom fields (as of this blog) can not be passed as a contact attribute, there was not way to add the Agent ID to the Task Template.

Another major challenge is that the CHAT API used by SMS (and chat for that matter) does not, in general,  support Contact Attributes.   Let us assume you want to ask the customer to enter the order number so you can look up the status.  They might provide that number, but there is no way to extract that data and assign it to a Contact Attribute for further processing later in the contact flow.

Enter Option 2 (Static website to launch HTML form)

The benefit of popping an HTML form is that you can prompt the Agent to enter something to identify themselves.  This would enable you to invoke a lambda function to  write the phoneNumber, AgentId and timestamp and even the smsMessgeContent to a dynamoDB table for later processing.   That function would also include the SDK that enables you to find the agents unique ID and also route that to the database.  The entire DB item would include:

customerNumber – this would become the partition key in your dynamodb table;
smsMessageContent – the text of the outbound SMS message content;
agentID – obtained by using the Agent username and the SDK to get the agentId a unique value for each agent.
timeStamp – date and time of the item creation.

The inbound contact flow handler we could grab the Customer Number, invoke a lambda function to request the agentId so that the chat session (i.e. SMS) could be routed to the agent that originated the outbound message using the “Set Working Queue by Agent” step in the contact flow associated with the SMS number.  We would also invoke a lambda function to retrieve the smsMessageContent from the stored item and assign it to a contact attribute for later use.  (Developer Note: It would be possible to retrieve both the agentId and the smsMessageContent in one invocation, but parsing a JSON object in a contact flow is not worth the trouble, it is easier to make two invocations).

When the agent accepted the incoming chat, the ongoing back and forth of the chat transcript (i.e. SMS) would be captured and stored.   How would the agent know what the original outbound message contained?  We need a strategy for presenting that to the agent and adding it to the transcript for historical reporting, or additional processing by LENS etc.     Using the Agent whisper function, we would use the contact attribute created for smsMessageContent to satisfy this requirement.

This option, in our opinion, is the optimal solution for originating an outbound SMS message and routing the return message to the agent who created the message in the first instance.  It captures all the activity, makes it available to the agent and other features of the Amazon Connecct instance.

Enter option 3 Email to SMS

In this option we want to use email to launch the SMS handler using the configuration provided in Part 1.   The thinking here was to use SNS rather to trigger a Lambda rather than Invoking  Lambda from inside a contact flow triggered by the Chat API.  Do not connect the SMS phone number direct;y to the Instance.  We created two SMS handlers: one inbound Lambda to handle either an SMS that did not ordinate by an Agent.  it could also handle a return message originated by an Agent.

Email Outbound

Using the email client we were able to launch an outbound lambda that would be able to parse the message and write the From (i.e. Agent ID), Subject (i.e. target recipient phone number)and a times stamp  to a dynamoDB table.  No need to log the message content, we would pass all the variables off to the Pinpoint SMS number.

SMS Inbound

The inbound SMS triggered the lambda which would use the phone number to index the dynamoDB table and bring back the AgentId.  It might be necessary to use the AgentId to look up the Agent Name or ARN, but the result was much cleaner and seemed to work just fine!   With the AgentId we were  If there was no matching number in the database then the message was treated as a new incoming SMS and routed to the default workgroup set in the contact flow.

TTL

We needed a ‘garbage collector’ that could go into Dynamodb and clean out any entries that had a time stamp that exceeded whatever we set as the Time To Live (TTL) value.

Amazon Connect Video Update:

Transforming Customer Service with Visual Interaction

In April 2022, we introduced our first blog and demo showcasing the integration of video into call centers using Amazon Connect. Since then, the potential applications for video in customer service have continued to expand across various industry segments where “high touch” customer contact is crucial. Initially, we focused on applications that added video as a chat option, connecting website visitors to customer service representatives in contact centers. However, the practicality of video solutions has significantly increased with the advent of mobile smartphones as customer endpoints.

Enhancing Customer Service with Visual Interaction

Amazon Connect Video!Imagine an insurance adjuster dramatically increasing the number of claims they can process. Instead of visiting each claim site, a video conference enables the agent to visually inspect damages remotely, streamlining the claims process. Similarly, many technical support issues could be resolved in a single call with video support. For instance, an agent can ask, “Can you show me exactly which port you plugged that cable into?” This visual interaction can lead to quicker and more accurate resolutions.

Telemedicine: Revolutionizing Healthcare

Telemedicine is another powerful application of video integration in contact centers. Healthcare providers can offer virtual consultations, allowing patients to receive medical advice and care from the comfort of their homes. Video consultations enable doctors to visually assess patients, discuss symptoms in real-time, and even guide them through minor procedures or exercises. This not only improves patient convenience but also expands access to healthcare services, particularly for those in remote or underserved areas.

Real-Time Product Demonstrations

In retail, video can elevate the customer experience by enabling real-time product demonstrations. Customers can connect with a representative who can showcase products, answer questions, and provide personalized recommendations. This interactive approach can enhance customer satisfaction and drive sales, as customers gain a better understanding of products before making a purchase.

Virtual Property Tours

The real estate industry can also benefit from video integration. Real estate agents can conduct virtual property tours, allowing potential buyers or renters to explore homes and apartments without physically visiting the location. This not only saves time for both agents and clients but also broadens the reach of property listings to a global audience.

Personalized Financial Advice

Financial institutions can leverage video to offer personalized financial advice. Clients can have face-to-face meetings with financial advisors to discuss investments, savings plans, and other financial matters. This personal touch can build trust and strengthen client relationships, ultimately enhancing customer loyalty.

Education and Training

In the education sector, video can facilitate remote learning and training sessions. Instructors can conduct live classes, workshops, and one-on-one tutoring sessions, ensuring students receive the support they need regardless of their location. This can be particularly valuable for professional development and corporate training programs.

There is a YouTube Demo click Pic!

Conclusion

Consumers have increasingly adopted video conferencing, especially since the release of camera-embedded phones. By integrating video into your contact center, you can enhance the clarity and effectiveness of customer interactions. Whether it’s resolving technical issues, processing insurance claims, offering telemedicine services, conducting virtual tours, providing financial advice, or delivering education and training, video can transform customer service experiences.

Embrace the power of video with Amazon Connect and take your customer service to the next level.

Configuring Amazon Connect Voice Mail

Configuring Amazon Connect Voice Mail

For several years we have been deploying a modified version of the Amazon Connect Voice Mail solution as published by the AWS team to GitHub!   When Amazon Connect first hit the market in 2017, it was without a voice mail solution.  Actually it was without lots of features that most call center folks would expect!  However, as time unfolds in its petty pace, new features are regularly being added.  Today, Amazon Connect continues to lead the way in call center technology.   The voice mail solution, has changed over the last few years, and though in January of 2024, AWS archived the application and no longer supports it, the solution is still quite useable with a few tweaks.   AWS indicates they are rewriting the solution, but they have not published a target release date.

Dial Agent Direct Option

We have modified the solution in a variety of ways.  For example, many folks want a caller to be able to dial an extension number to reach an agent directly.   We created contact flows to do just that and we rely heavily on the published solution.   You can dial an extension, if the Agent is not available, you can leave a message or transfer off to another agent or customer service queue.  Messages can be transcribed and sent via email or as an SMS message.    Given that you can not “transfer to flow” from within a customer queue hold flow, we build the voice processing option into the hold flow.  In this way you can offer your customers waiting for an agent to become available options that include leave a voice mail.   The voice mail, taken in a customer service queue, can be routed like a phone call to the next available agent as a task.

The voice messaging framework opens up a range of new functionality for the Amazon Connect instance!   Let us know if we can help, just email drvop@drvoip.com and we will get you pointed in the right direction.  There is a YouTube video on this configuration:

 

 

 

 

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.

 

 

 

What are Amazon Connect “soft” Limits?

Only Ten Phone Calls?

If you are attempting to setup an Amazon Connect instance you need to understand some limiting parameters.  These are what Amazon terms “soft limits”.  This means that you can request an increase through technical support.   If you start testing your new instance and find that you cant make an inbound phone call, one of the first things to check is the soft limits for the number of simultaneous phone calls, which are limited to 10 out of the box.   This is done for reasons that you would understand if you take the time to think it through.  Anybody can log into AWS and create a new call center.   Yes you have to put in a credit card, but hackers can get credit cards all day long and make use of them before anybody knows what happened!   Remember the days of heavy spam mail?  Your mail server gets hacked and before you know it 1M emails are being flooded out from you IP before you get black listed and they move to the next webserver hack.

Other Soft limitations

There are some other soft imitations in which you can request am increase.  These include, but are by no means a complete list:

  • Activ Chats per instance
  • Amazon Connect Instances per Account
  • API Request Rate
  • Concurrent Active Calls Per instance
  • Contact flows per instance
  • Country Whitelisting of Outbound calls
  • Groups per level
  • Hours of Operation Per instance
  • Phone Number Porting
  • Phone numbers per instance
  • Prompts per instance
  • queues per instance
  • queues per routing profile
  • quick connects per instance
  • reports per instance
  • routing profiles per instance
  • scheduled reports per instance
  • security profiles per instance

Other AWS Soft Limitations

The above limitations are specifically related to Amazon Connect.  You should note that many other service in AWS also have ‘soft limitations”.   For example if your are going to configure Voice Mail in your Amazon Connect instance that enable wav files to be sent via email or SMS, your SMS delivery may be limited by your spending limit. By default, your AWS account’s text messaging spending limit is set to $1.00 per month. You can open a support ticket to increase the value. Email addresses must be verified by Amazon Simple Email Service (SES).

Let us help! DrVoIP@DrVoIP.com

 

Amazon Connect “Auto Post Call Customer Survey”?

Most frequently asked Question about Amazon Connect this week!

At a time when we are buried building “work at home” solutions a question has surfaced as being the most asked question of the week!  Can you write a script that provides “after call” customer evaluations?   The challenge with after call surveys is that they need to be automated with no Agent transfer required.  Why would an Agent transfer an obviously unhappy customer to a post call survey?  The only callers the Agent will transfer are callers who are obviously happy with the manner in which the Agent handled the call.   The requirement is that after the Agent hangs up, the customer previously selected for a survey, is automatically transferred to the survey solution!  (Special thanks to Gordon Campbell Dextr.Cloud CSO for bringing this issue to the table)!

Can we automate the after call survey?

The fact is, using Amazon Connect it is very possible to automate the after call survey.   We have created a solution in which some percentage of inbound callers are auto magically transferred to the post call survey dialog.   The solution can be very simple or implemented with more complex options.  In any case the solution will most certainly involve several other services from the AWS pantheon of technology infrastructure solutions:

  1. Clearly you need an Amazon Connect Instance configured with the DrVoIP Post Call Survey script
  2. A decision needs to be made as to how many calls should be transferred to the survey as a percentage of the total call volume.  From 1-100% are possible.
  3. A decision needs to be made as to the customer answer collection technology.  Are we going to use LEX as a Speech Bot to collect the callers survey response, or is a good old “press 0-9” input acceptable?
  4. The actual survey questions have to be scripted and need to map to either a LEX Intent/Slot or a Touch Tone value.
  5. A lambda function(s) will need to be created to write the results to a database.
  6. A database for the results needs to be available to host the responses by caller.  Left to our own design we would make use of DynamoDB but you can make use of any database you prefer.
  7. A report generation and administration resource needs to be created.

As it turns out the automation of the post call survey transfer was solved and we can do this with little modification, if any, to your Amazon Connect existing contact flow scripts.   The above list, however, determines how much time and effort is required to do provide this facility.   In fact, some folks already have a survey solution and the only requirement is to transfer the caller to that solution.    If we have to create a solution then the complexity of the solution is determined by the answers to the questions and decisions posted above.  For example, using LEX is certainly a real possibility with real benefits. Speaking is always better than hunting and pecking a touch tone input device.   Reading and writing to a database is also not that demanding of a task, though it does  take some time to create reusable functions that are not restricted by the number of questions asked.

The Report Generator!

Actually, the last item is the big expense.  You can have a simple and utilitarian GUI interface to setup the survey questions and report the results.  Using S3 and simple static HTML interface works just fine, but is not as fancy as having a GUI with all the latest flashing and dynamically changing “on click” options.

Survey Options

We have been able to randomize the questions asked, which is a nice feature.   Noting if the caller has already taken the survey in a previous call is also doable.  We are always learning new requirements and when we think we have heard them all, someone comes up with another request!    We actually enjoy the “stump the vendor” game, so please do not hesitate to ask us for features that you dream up!   Post Call automated customer surveys  are most certainly within the scope of what you can do with Amazon Connect!  Just give us a call and we can scope it out in no time!  – DrVoIP@DrVoIP.com

 

 

Amazon Connect – A Voice Mail Solution!

What no Voice Mail?

One of the surprises you get when working with Amazon Connect is the fact that, out of the box, there is no voice messaging capability.   However, given the rich library of services available in the AWS ecosystem, you can most certainly configure a solution that will get the job done!    Amazon Connect has built in recording capabilities and both logs and recordings are saved in an S3 bucket, so it would seem that the basic ingredients are there for configuring a voice messaging function.   Lets take a look at several different ways of implementing this functionality without breaking the bank in professional software development services!

Option 1 – High Voice Message Feature Content with Transcription, Email and SMS delivery options

This Voice Mail service is built on several AWS services but is rich in features and functionality:

  • Each Agent will have their own Extension number
    • This enables folks to leave a voice message for a particular Agent;
  • Voice Messages can be Transcribed and Encrypted;
  • Voice messages can be emailed or sent as an SMS (Text) message;
  • We create a Web Interface to administer voice mail options (i.e. set agent extension number, delivery options

There is an additional AWS cost as the solution will make use of Lambda Functions, DynamoDB, SES, SNS, Cognito and CloudFormation AWS Service options.   Amazon estimates that this will have a cost of approximately .03 cents per voice message.

We offer several configuration Options:

  1. A separate phone number that is used for this function exclusively.   Caller dials the VM number and is asked to enter the extension number of the Agent (we could also create a spell by name option).  The system will then attempt to send the call to the Agent and failing to connect with the Agent, the system will take a voice message for that agent and deliver it based on the options set by the administrator.  Delivery options are email or SMS.  The message can be sent as a WAV file or it can be transcribed to text.
  2. Continue to use your normal call flow and set one agent (or create a fake agent) to accept messages for the Queue they are a part of.  During the period in which the caller is holding in queue for the next available agent, as they might now do, they are offered the usual options, expect we replace the option to leave a voice message that you currently now transfer out of the system, to the agent nominated for queue mail.  Clearly the email address could also be an email address of a distribution group so the message goes to many others.
  3. LEX speech recognition “dial by name”.  The problem with extension numbers, is that callers will need to know them or you will  have to create a directory system.   Enabling “thanks for calling I can route your call in you speak the name of a team member or a function like sales” is way more impressive and provides a much better customer experience.

We offer a flat fee deployment option of $395  ($595 with dial by name option) to existing clients.    We will need AWS Management User Access with a User that has System Administration permissions as we have to access all of the AWS service above to configure the solution.

Option 2 Cheap and Quick: The Basic Recipe

We configure a Voice Messaging solution for call center queues very easily using the following formula:

1 – First Create a Queue with a creative name like Voice Messages!

2 – Second Create a Customer Whisper Function to act as the front end greeting for your voice mail box.

The Whisper function is going to provide your mailbox greeting and even the Beep!  This Whisper, set to play to the customer (rather than the agent) is played to the caller as they are connected to the Agent user.

3 – Third Create a User with an appropriate name like VoiceMail-Sales.

We want the user to be assigned a routing profile that contains only the VoiceMail Queue!  Also note that the User MUST be set to Auto-answer as this is the key to making this work the way we want it to work!

4 – Lastly, create a contact flow to integrate the above into a simple, but workable voice messaging system.

 

The contact flow can be very simple or you can make it a more complex by adding options like return to main menu!  The goal  however is to offer the option to leave a voice message or route a caller to voice mail if the caller arrives after hours.  Nothing to sophisticated here.   We set the Recording behavior to record both the caller and the agent.  We then set the Whisper flow, the Queue and then transfer the caller to the queue.  The queue will contain only one User in this example, but if you anticipate a lot of traffic, you could actually create multiple users with the same basic configuration essentially creating multiple voice mail boxes.   You can also create different users and voice message queues to accommodate various different queues.

The caller will be transferred to the VoiceMessage Queue which will then select the only User in that Queue, who is logged on and available.  This user was setup was setup with “auto-answer” so the behavior is to answer the call, play the Whisper to the caller as they connect to the Agent.  The Whisper contains the prompt “Sorry we are not here to answer your call but at the Beep please leave your voice message and we will follow up first thing next business day.  BEEP”.

The caller will then speak to the “agent” and the conversation will be recorded and saved to your designated S3 bucket!

Retrieving Voice Messages

The basic tools available to you  for retrieving your voice messages require a minimum permission of Call CenterQuality Analyst or Manager, as you may not want to make users Administrators!  Just log into the Amazon Connect dashboard and head over to Metrics and Quality and then select Contact Search.  Here you can set up a number of filters. For example we can search for the VoiceMail Agent configured above and also set the date range of interest, typically Yesterday!   This will bring up all the contacts handled by that agent and you can then hit the playback button under the Recording column.

Variations on a Theme

One of the user interfaces that makes this strategy a bit more useable is to use the Dextr.Cloud Dashboard.  The Dextr dashboard has an Activity screen that enables a Supervisor or Agent with the proper permission, to sort by Agent.  Then the playback button is right in the Dextr dashboard and there is no need to sign into the Amazon Connect dashboard to play back recordings.

Summary

We are struggling to find things we can’t do in an Amazon Connect contact center instance!   The rich library of AWS services makes it possible to solve any call center goal you might development you might define as a requirement. If you can imagine it you can make it happen!  Then again, you can always call on us and we can do it for you! – DrVoIP@DrVoIP.com

 

 

 

Amazon Connect Tips, Tricks and Trouble Shooting!

What no Delete for Contact Flows?

One of the first discoveries you will make while configuring contact flows is that you can NOT delete a contact flow.   Once it is created, you can “save as” but you cannot delete it.  There is a good reason for this and hopefully by the end of this blog it will make sense to you.   Out of the Box, Amazon Connect comes pre-configured with a wide variety of contact flows and system parameters.  You will see this listed as sample and default in a newly created instance.  If you poke around you will also see that a schedule of basic hours has been configured along with a basic queue.  There are preconfigured security profiles and preconfigured routing profiles along with a small library of professionally recorded voice and music  prompts.


This pre-configuration and population of basic and default parameters is done for a reason that also helps explain why you cannot delete anything after you create it!   Assume you open a new Amazon Connect instance and following the setup menu, add a telephone number.  Assign that number in the drop down window in the phone number configuration to point to the “Sample inbound flow (first call experience”.   Then call the number.  This Call flow will make use of most if not all of the default and sample contact flow listed in a fresh out of the box, unmodified Contact instance.  Since we did not configure an agent or queue it draws on several preconfigured parameters including the “Default Customer Queue” which describes what a caller hears while waiting for an Agent to become available and the “Basic Queue” along with the “Basic Hours”.

How Amazon Connect stages Default Contact Flows

If you open the “Sample inbound flow (first customer experience)”  note that it does NOT make use the “Default customer queue” step.  How is that we hear it if it is not in the contact flow?  When the call is transferred to an Agent we did not even configure yet (we are logged in as the Instance Administrator on a CCP softphone), we even hear the “Default agent whisper”.   Nor did we configure a Queue?  Likewise if we put the caller on hold we are tapping the “Default customer hold” contact flow.  If we are in Call Wrap up, the caller would be hearing the “Default customer queue” contact flow while awaiting for an agent to become available.

This is the key reason you can not delete anything!  To do so would jeopardize the stability of the Connect Instance.  These defaults assure that configuration newbies cannot stray materially from the experience they intended to configure.   While the Connect instance is setting up an outbound connection to the agent CCP softphone, and even longer if dialing an agent’s hard phone.   The caller will hear the “Default customer queue” experience.  We recommend that you get a “ring back” audio prompt and use that in either the default customer queue or the customer queue you create.  We think it is a bit confusing for a caller to call in and hear music while being transferred.  You should also note the possible impact on your inbound call statistics.   Additionally, note that billing started the moment your caller hit the phone number regardless of the fact that they are not yet connected to an agent.

Creating and Modifying Contact Flows using “Save As”

Each of the Contact flows in an Amazon Connect instance has an Amazon Resource Number or ARN. This is a globally unique identification number and defines every contact flow in the instance.  Generally, you will build a new contact flow from an existing one.  To do this, you first open the contact flow you want to copy and do a save as.    You have to pay attention here, or you will have a big problem!   Some folks open a contact flow,  change the name and make some modifications and then publish it!  It will show up in your list of contact flows, but it will still have the ARN of the original contact flow even though you renamed it!   This means that other contact flows that call on that original contact flow will now get all your changes!   What you want to do is rename the contact flow and do a “save as” in this way you create a new ARN and will not be over writing the original contact flow.

 

Not all Contact flows have all contact flow Options?

There are about 9 different types of contact flows that you can create to meet your call flow requirements.  If you create a new Contact Flow you need to understand that not all contact flow types will have all the contact flow options.  For example if you are describing the experience you want a customer to have while in queue waiting for an agent to become available, you will  open the “Default Customer Queue ” and do a “save as” to create your experience.   Do not expect to find a “Transfer to Flow” option in the list of possible steps as that option is not available in this type of contact flow.  The list of step options changes based on the type of contact flow you are creating, so keep this in mind!

 

Error Handling

Generally, every step in a Contact Flow has an error exit.   We have found that it is best to create a Contact Flow named “error handling” and to use this as the solution to all of the options that you must provide an error exit.

 

Use Speech Markup Language for Text to Speech prompts!

As a consultant deploying call center and IVR solutions, one of the most frustrating aspects of the implementation is waiting for clients to get their voice prompts together!   Generally we will not start an implementation until we have the prompts!  Text to Speech is a life saver for deployment engineers.  You can create prompts on the fly and let people test them, suggest modifications and really fine tune the prompts to achieve the desired level of customer care.   When the prompts are all agreed to, you can then get them professionally voiced or not!  We find that Amazon Polly is an excellent option for prompts but we also suggest that you use the Speech Synthesis Markup Language option.  In all of the prompt areas you can choose between loading a Wave file, or using Text to Speech. When using Text to Speech you have the option of interpreting the text as text or as SSML.     SSML enables you to add tags that can control the various components of speech including tone, pitch, speed and format.   You may want a number read as a phone number for example, rather than a long integer.   SSML is simple to configure and it very powerful.  Learn to use it always and you will have very excellent results.

Don’t forget to assign outbound phone numbers to your Queues

In Queues in which Agents are expected to make out bound calls you must associate a phone number to that queue for outbound dialing.  The Agent will not be allowed to make outbound calls if they do not have a phone number assigned to the queue.  You can also try to put an outbound name in the same configuration area, but there is no guarantee that this name will be displayed to the CallED party.  The phone number will most likely display to the CallED party, however names are provided by multiple options at both the carrier level and the end device level.

Trouble Shooting 101

When trouble shooting Amazon Connect contact flows your best friend is CloudWatch and Contact Flow Filters!   Lets take a look at each of these tools to better understand how they work together to provide a history of how a specific call behaves.    First while in the Connect dashboard you will find under “Metrics and Quality” you will find a  TAB for “Contact Search” .  Selecting this option will enable you to set search filters for the contact record you are trouble shooting.  You can filter on the usual date and time parameters, but also by queue, and by call type and direction (Inbound, Outbound, Transfer, API, Call Back and Queue Transfer).   The goal is to obtain the “ContactId” the key to all activity in the Connect Instance.  If you know this ContactId you can just search for it and skip the filters.  Optionally you can just “Search” and you will see a list of ContactId’ based on the default filter.

Now that you have the Contact ID you can move over to CloudWatch (this assumes you have enabled logging) and you can search for this ContactId record and follow the entire call flow from start to finish,  Go to the CloudWatch service, click on Logs and then locate the “Log group” for your Amazon Connect Instance.  This will pop a list of “Log streams” and “last event time”.  Find a row that closely matches the date and time of your target ContactID and open that log stream by clicking on it.

Note that the time in the even stream is in UTC and matching log times is always interesting.  In this example we searched for a particular Contact ID in the Connect dashboard and it shows that the call we are interested in had a “Initiation TimeStamp” of *7:46 PM”  GMT/UTC  or Zulu  time (if you are military, which all mean the same time reference regardless of where you are located on the globe).

 

The Contact ID is a clickable link, and will bring up some information of interest as contained in the Contact Trace Record.  There will be a Contact Summary, A recording if enabled with the location of the recording and a playback button, Connection Endpoint pairing and Queue information.

Heading over to CloudWatch and checking the respective Log Stream in the instance log group, we find that the time is being adjusted to the GMT offset of the time zone the Instance time reference, which in our case is GMT -7 hours!  S o the Contact Filter Search in the Amazon Connect dashboard is being Time Stamped for GMT/UTC but the log is offset (Terminate at 7:46 PM in dashboard is listed at 12:48 in the CloudWatch logs).   Keeping track of this time offset will drive you a bit nuts, but if you are aware of it, you can figure it out.  SUMMARY – Look in Cloudwatch for the UTC offset in your Connect Instance and NOT the time stamped in the Contact Filter of your Amazon Connect dashboard!

 

 

When searching for records in the CloudWatch logs you will note that you can set it for ROWS or TEXT and you can also select to search by specific times and choose between UTC time or Local Time zone>

When you set your search by ROW you will get an orderly list of multiple Contact ID’s within the event range reported.  Logs are posted about every minute or so.  In an instance with a heavy call flow you are going to find many different Contact ID’s in that event range and will have to search for a specific record using a search filter in the format of “ContactId” = “ca822db4-98aa-4de3-9254-461177a6d259”.   In Text mode you can also search using the CTRL F feature of your browser.

When you use the ROW mode you will get a list of Contact Flow steps that, by pushing the down arrow will open each step for inspection.  This is necessary to see each step of your call flow, what Contact FlowId  was used by ARN.

Selecting the TEXT mode will generate the same list of JSON objects but they will be fully expanded:

CCP Trouble Shooting

There is a very useful tool for testing the connectivity of a specific desktop call control (CCP) to your Amazon Connect instance.  It provides useful information about the latency, resource, reachability and connectivity that are essential base lines for trouble shooting.   Click here!

CCP LOGS

On the CCP you will find the little GEAR symbol and if you click on that you will be able to download the logs for this Agent Desktop.

 

You can open the logs with any text editor and the content often spells out the issue pronto quick!

 

(to be continued)

 

Amazon Connect Email Routing using Dextr.Cloud

The Dextr Dashboard for Amazon Connect Agents has added email routing to its existing voice and SMS/MMS channels.   Similar to a voice call, an incoming email message is routed to the next available in the queue assigned for email.   Dextr will collect emails, provide auto responders.   The email is “sticky” and the email conversation will stay with the first Agent to respond to the email until the conversation is ended.  Similar to the Dextr SMS channel, if the original agent is not available to handle the follow on conversations, the entire conversation will be forwarded to the next available agent.

Setup is easy, in the Channels tab of a Dextr user with Administrator permissions, simply enter the appropriate email user, password, imap and smtp host address!  Then configure the queue that should be the target of an inbound email along with the initial email auto responder and the end of conversation auto responder.  Multiple emails can be established and can point to different customer service queues!

Email setup and queue selection!

Agents can manage email and voice calls depending on the permissions and queue assignments.  Creating an email named CustomerCare@yourcompanyname.com can be routed to the customer service team.  Email is an asynchronous yet powerful customer tools and many folks prefer it to waiting on hold for the next available agent!  When an incoming email is routed to an available agent, they accept the mail exactly as they do a voice or sms call.   Opening the ENGAGE EMAIL tab displays the content of the incoming email.  As the email conversations ping pongs back and forth, the agent will see the entire email conversation in the ENGAGE portal.

The Agent will find the accepted email in the email client registered for that agent’s email box.   The agent will then respond to the email and Dextr will assure that the recipient of the email sees that it is from the address of the origitanl email TO: filed.   There is a button to END the conversation and when clicked, the final auto responder defined during the email channel setup, is sent to the author of the original incoming email.  (Those familiar with ShoreTel ECC routing will be very comfortable with this email implementation which has the additional benefit of being “sticky”.  If the agent who originally responded to the incoming email is unavailable, the entire email conversation is forwarded to the next available agent for follow up.

Dextr email routing is a bundled feature in your subscription and you should give it a try!  Price is what you pay, value is what you receive.   DrVoIP@DrVoiP.com