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.

How can an Agent Originate an SMS message in Amazon Connect !

Pinpoint SMS

For some time now, you have been able to channel SMS messages through the Amazon Connect CHAT API, using Pinpoint services.  Typically, you would create a new project, enable SMS and then use SNS to trigger a lambda function to handle your SMS conversation.  Most recently, AWS has created Pinpoint SMS, a dashboard that enables you to directly integrate SMS services into your Amazon Connect instance, appearing like any other phone number.   This enables you to capture an SMS event directly to a contact flow eliminating the need to use SNS.

How to Originate an SMS in Amazon Connect?

Getting an inbound SMS message into the call center and routed to the next available agent in a specific queue has been a feature for some time.  As high lighed above, it is now even less complex as we can eliminate the use of SNS, enabling a contact flow to trigger the  lambda function that would handle the SMS session.   The real trick, however,  is how can an Agent originate an SMS message?   If an agent could originate an outbound SMS message, how would the return message be routed back to the agent who originally sent it?

Origination Options?

In this blog we will consider three different strategies that enable an Amazon Connect Agent the ability to ORIGINATE an outbound SMS message.  As noted above, responding to an inbound text message is well documented but originating an SMS message is a real challenge!  (Figuring out how to route the return message to the Agent that originated the message, is yet another challenge! )

  • Option 1 – User a TASK Template
  • Option 2 – Create an HTML Form
  • Option 3 – Create an Email to SMS solution

Each option is successively more complex to configure, each requiring additional AWS services including Lambda and ultimately DynamoDB tables.    Lets take these options one at a time and hopefully learn something as we attempt these different solutions and learn how to configure them.

Can an Agent Launch a Contact flow?

In order for an Agent to originate an SMS message, we needed to find away for an Agent to launch a Contact flow.   The contact flow can string together the steps we need to generate an outbound SMS.  We can turn on logging, trigger a lambda function, pass in the target phone number and message content and hand the message off to Pinpoint SMS for processing.   How can a agent launch a contact flow?  First we considered using a quick connect in which we could modify one of the default handlers to form the contact flow steps we required.  Unfortunately, with the exception of the External quick connect which had no call flow associated with it, the others required the Agent to have an active call before they could trigger the quick connect.  Drat! Foiled again!

Option 1 – Enter the TASK template!

We discovered that TASK templates might be a solution!  Creating a TASK template we found that we could add custom fields!  Yeah! So lets add a field for a phone number and one for message content! Also we might want to know which agent originated the message so we could route the return message back to that agent.   This started to feel like a real solution and but hen reality set in.  The good news was that you could assign the TASK to a contact flow!  This was very powerful, enabling the Agent to enter the phone and message and then send the TASK to the contact flow where we could invoke Lambda to handle the rest.   That is when the bad news surfaced!  There is no way to pass a custom field as a parameter that you could take advantage of in a “Set Contact Attribute” step.  Ah Snap!

Digging through the documentation we did find that there are only three variables (at the time of this bog) that can be passed as contact attributes.  These are the TASKid, the Name of the Task and the Description of the TASK.  So to solve our problem, we had to play with words such that NAME would now = phoneNumber and Description would now =the  messageContent.   This worked remarkably well and has become our current solution for enabling Agents to originate an outbound SMS message.

Click for Video on the DrVoIP channel!

The advantage of this solution is that you do not need to write any code other than the Lambda handler that your contact flow will invoke to send the outbound SMS through Pinpoint.  The entire solution uses existing Amazon Connect resources: Tasks, Contact Flows and the CHAT API behind the scenes.  The downside is the user interface is not intuitive and agents need to remember which field it the real phoneNumber and messageContent field.  It is not a workable solution if you are concerned about routing a return message to the Agent that originated the message.  If those are not concerns, then this is an effective and easy solution to implement.

Option 2 – Use an HTML form

Given the challenges of launching a contact flow, it might be easier to create a pop up HTML form.  When the Agent wants to originate an SMS message, they click a link that presents an HTML form.  The form has a field for the phone number of the recipient,  the message content.  The form also has a field for the Agent ID, which we will discuss further in part 2.    To enable this configuration we need to string together several AWS services:

  • Pinpoint SMS, which we assume you already have setup and handling inbound SMS to your call center instance!
  • We need to build a static website to host our HTML form.   The website will be built in an S3 bucket, in the same region and account as the Amazon Connect instance.
  • The HTML form needs to POST the form contents to an API Gateway.
  • Lastly, the Gateway needs to launch a lambda function to process the  request and provide a hand off to Pinpoint 2 way SMS.  Putting the api-gateway behind CloudFront as a subdomain defined in Route 53, can assure website security if you couple it with a cognito user group for authentication.

Option 3 – Create an Email to SMS solution

This is the most sophisticated of the three options, but is also the most powerful.  It also is the best solution for enabling a return message to be routed to the Agent that originated the message.   The configuration will require configuring a number of AWS services:

  • You will need access to your DNS records, or you will need to create a new domain in Route53, the AWS DNS service.
  • We will be creating a subdomain.  As our domain is DrVoIP.com our new subdomain will be SMS.DrVoIP.Com.
  • This subdomain will add a MX record in the appropriate DNS.   The MX record will point to an SMTP service, in this case using AWS Simple Email Services (SES).
  • SES will have an email receiving rule that will route any incoming email to this subdomain, to an SNS topic.
  • The SNS topic will trigger a Lambda function.
  • We need a Lambda function that will process the event and parse the recipient phone number, message content and the FROM field of the incoming email.  We will discuss the FROM field part 2 of this blog.

How to get the return message back to the originating Agent?

The next challenge was getting the return SMS message routed back to the Agent who originated the message to begin with.  As noted above, the CHAT stream does not provide a way of extracting attributes.   For example, lets assume your chat conversation asks the visitor (keyboard or SMS) what is the order number they are enquiring about?   We can overcome this with some clever event management and we will discuss this option in Part 2.

Routing a return SMS message to the Agent that originated the message, is a subject we will explore in Part 2 of this blog on Amazon Connect SMS channel management!

 

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:

 

 

 

 

“Do it yourself” kit for deploying an advanced Amazon Connect Instance!

Dynamic Call Centers?

We can dynamically reconfigure our contact flows, the experience a caller has when calling our contact center.   To do this, we us DNIS (i.e. dialed number information services) essentially using the number the caller dialed, to index a configuration database and return all of the options we need to route an care for the call.   Rather than “cut and paste” contact flows, modified for each queue, why not just use one contact flow that can be reconfigured on the fly?  DNIS is a system attribute in Amazon Connect, it can be passed to the contact flows as such and used to route the caller.   In this solution we provide everything you need to quickly implement a very advanced, flexible and scaleable voice only contact center.

We provide a complete “Do It Yourself” Amazon Connect Contact Center

Core features of this solution include the ability to reconfigure greetings, menus and options based on the DNIS, the number the caller dialed ot reach your call center.   Other features include the option to Directly Dial an Agent, or to have IVR option menus.   Queue hold options include “call back”, leave a voice message for follow up that is queue specific.   Contact flows check staffing, hours of operation and  include after hours call handlers.

What is in the DIY Kit?

In addition to several video tutorials to help the non-engineering professional build out the contact center, we provide all the contact flows ready for you to import!  We provide the lambda functions used to index the configuration database and the dynamodb table descriptions. Each contact flow is heavily commented to enable easy modifications of options and prompts.  Tech Tip videos for installing the voice mail system;  custom agent dashboard and  instructions on how to configure other AWS services that the contact center requires.  Finally, we throw in an hour of technical support to answer your questions!   You will find the package in the DrVoIP.com store!

 

Can you Delete an Amazon Connect Contact Flow?

Out of the Box?

AWS has configured the contact center to work out of the box.  Add a phone number, define at least one agent and using the default contact flows, you can be taking phone calls in minutes.   The contact center features will be minimal, but they work without having to have a engineer do everything.  A reasonably intelligent business process professional should be able to configure a working contact center.  The price you pay for this however, is that you are not able to delete contact flows within the Amazon Connect dashboard.

Why Default Contact Flows?

If you look at the “out of the box” contact flows you will note several contact flows that are Default configurations.   These default contact flows are used unless you specify the use of another contact flow of your own creation,  For example you will see a “Default Outbound” which is used for every outbound phone call made by the contact center.  This  contact flow announces to the called party that the call is being recorded before it transfers the call to an agent.  If you do not want that behavior you need to replace this Default Outbound contact flow with one of your own creations.

You can not delete it!  Why? Basically to keep you from doing something that would crash your call center!  The default contact flows enable rapid deployment of a minimal contact center.   Folks who do not know what they are doing could easily delete something that the system otherwise makes use of, causing a problem that is a direct result of inexperience and ignorance.

Accumulating Contact Flows

After working with the product for a bit, you realize that you can not just delete a contact flow.  You can rename it and reuse it with changes but you can not delete it from within the Amazon Connect dashboard.   At some point, these trashed contact flows accumulate and make navigating your configuration more challenging then most of us want to deal with.  So what is to be done with these unwanted contact flows?

You Can Delete them?

As you gain more experience with the Contact Center you will learn that using the command line tools, you can in fact, delete a contact flow. ( If you do not know what the Cli interface is, or how to make use of it, you most likely should not be trying to delete contact flows)!

Download and install the AWS Command Line Interface (Cli).   This advanced tools can be installed on a Windows, Mac or Linux machine and is used to provide access to advanced configuration options that require some level of software engineering experience.  You will configure your Cli with your account, secret access keys, region and optional profiles. Using this tool you can delete a contact flow, for example.

The following format is used through the Cli to delete a contact flow:

aws connect delete-contact-flow –instance-id YOUR-INSTANCE-ID –contact-flow-id YOUR-CONTACTFLOW-ID

The following video clip show you this in action!

Again, don’t fool with the Cli if you are not comfortable as this is a powerful tool and with it comes great responsibility!

(Call us if you need help! – DrVoiP@DrVoiP.com)

 

WTF is a DNIS Map?

Route by DNIS?

A common call center request is to provide a custom greetings or route a call to a Customer Service Queue (aka CSQ) based on the number the caller dialed.   DNIS or “dialed number information service” is usually the solution to this request.   Typically you create a database table in which the index is the DNIS.  In this way we can pull back all the information we need to greet and route the caller.  The solution consists of mapping a DNIS number to a contact flow that has a lambda function that looks up the greeting and routing details in the database referenced the function.DNIS MAP

Assign the incoming DNIS number, actually all incoming numbers should hit this contact flow, and we do the usual setup.  Turn on logging which is very useful during testing and you can turn it off later to save a few pennies.  Set up recording, preferred voice and then invoke the lambda function that will retrieve the desired greeting and routing information.  It is a good practice to set the contact attributes so that you can easily reference the returned variables in subsequent contact flows and to make them available for the CTR records and potential screen pops.

Contact Attributes

Clicking on the “Set Contact Attributes”  call flow step in this example we get the following:

Contact Attributes You can see that the lambda function is pulling back two variables from the associated database tables: queueId and flowId.   in the above contact flow, after we set the contact values, obtained from an “External” database  we”transfer to flow”.   The external flowId points to the flow we want this DNIS to be used for follow on call handling.

The flow will eventually transfer to a queue, which we obtained from the same “External” database. Like the flowId, the queueId is now a “user defined” value. No reason you could skip the “set contact attributes” step and just use the $,External.flowId but by the assignment and the use of $.Attributes.flowId we associate the value with the CTR and make it more easily available for screen pops etc.

(see the blog on should I route to a queue or route to a flow?)

Additionally we could also pull back any other information we might want that would change based on the number the caller dialed. For example a customer greeting.   Did the call the Kin-sue Knife help line or the Hotel reservation line?   Maybe this is an Executive suite application in which the operator has to answer “thank you for calling <yourcompanyname>.

Advanced DNIS Routing

It may be that we want to route the caller to an IVR Menu of options based on the DNIS. You can easily handle this by the flow you route the caller to, but do you really want to do the newbie “copy and save as” to repeat the same contact flow for each DNIS?   There is now reason why the database can point to a generic IVR flow.  The generic IVR menu would have menu options that are variables that might be named “optionOne”, “optionTwo” etc.   These options would be defined in the database and in this way, each DNIS could point to the same IVR based contact flow but the menu prompt and all the options would be obtained via the lambda function from the referenced database.

This solution along with the Lambda function and Video tutorial is also available in our online store!

As always we would be glad to assist with this solution just click or call! – DrVoIP@DrVoIP.com

 

 

 

 

Amazon Connect adds a CRM package?

Is Amazon building a CRM Competitor?

Amazon Connect continues to innovate and is adding new features at an accelerated rate.   They do not seem to be leaving any flesh on the bones for other third party providers and seem to be taking aim at the CRM market.  There are two new features that address the most common request of call center supervisors: can we pop a screen with info about the caller on call presentation to an agent?   Historically, this was done by integrating the CRM or Practice Management system with the call center though a complex web of connectors, API’s, Internet Gateways and the other RESTFUL tools that populate the wonderful world of inter-networking.  (See the DrVoIP article: What do you mean Integrate?)

Here is a summary of these new features:

CUSTOMER PROFILES

This feature enables you to assign a profile to a caller. A profile is a form that you create that contains the usual contact data.   When that caller enters the system  again, we can greet them by name and also “pop” the profile to the agent on call presentation.  The profile is filled with data extracted  from two locations:  First, your caller history which is basically the CTR database of all the callers that have contacted you through the call center.  Secondly, it can draw data from your CRM or Practice Management database.   AWS supports a growing list of these databases which today include Salesforce, ServiceNow, Zendesk and S3.    You can also output data from a CRM or Practice management database into an S3  bucket in the call center and this can be tapped by the customer profile feature as well.

CASES

This feature enables you to open a “case ticket” during an active phone call that is associated with an above “customer profile”.   You can see existing open tickets, create new tickets and you have the ability to “assign” the ticket as a task to another team member along with due dates and follow up actions.
These features are “permission” based and assigned to your agents through their security profile.  The use case for these features should be obvious.   AWS is basically developing its own CRM and Practice Management solution and this is just the first release of what will undoubtedly become a very powerful solution in the management of you practice.  We can’t wait for the WFM option!
We are happy to set this up for you,  so please click or call! – DrVoIP

Powerful Amazon Connect Call Back from Queue Configuration Strategies!

The Amazon Connect Call Back from Queue Dilemma!

Assume you have a call center that follows the sun from coast to coast!  You team starts in NY at 7AM EST and ends in California at 7PM PST.    You offer call back options to callers waiting to speak with an agent.   A caller enters the queue at about 6PM PST and leaves a request of a call back when an agent becomes available.   The call center closes at 7PM PST but the call was not yet handled by your contact center.  The next morning, at 7AM,  Agents start the new day and the first call presented to an Agent is from the call back queue, the call left over from last night.  The outbound call is dialed, and your Agent is now speaking to a very angry Customer in San Francisco where the time is no 4AM PST!

The Call Back Queue Problem

Once a caller is sent to the call back queue, there is nothing you can do about this!   Let’s look at some options that we might apply to better control this call back activity:

Call Back From Queue Configuration Options

First, let’s create a switch to turn off call back requests during times outside a 10AM-4PM window.    This is a simple “check hours of operation” step in your queue hold flow.  Check the current time, and if it is outside the window, your contact flow will not offer the  call back option to callers.    This will keep callers from being left in the call back queue over night at the end of the working day.

Optionally, we can still offer the call back, but use the time window to determine if we should route the caller to the call back queue.  We can still offer the call back, but if check the time and find it is outside of the window, we do NOT want to send the caller to the call back queue.  Remember once the caller is in the call back queue, we lose control of the call back!   Using Lambda and DynamoDB, we can write the callers request to a call back list for later processing,  rather than putting them in the call back queue.    We can then develop a watch dog timer, that scans the call back list and when the call back window reopens, we can stuff the caller request into the call back queue.

These options will offer a greater degree of control over the call back process, but what about that San Francisco caller?  How do we make sure we are not calling folks back in the wee hours of the morning?   We need to add additional logic to our function and additional attributes to our database items.   We can look at the area code of the caller requesting the call back, then compare the area code to a time zone map.

 

How can we improve these configuration options?

Clearly you can ask the caller what time they would like to be called back.  That would work and can be an additional attribute in your database items.  You would still use the above configuration options, but also take note of the time range the caller wants to be called back.

Check for existing call back requests!

Your call back configuration should also check to see if this caller has already made a request to be called back?  If you run a call center,  you know folks call in and request a call back, hang up, wait a few minutes and then call right back in and impatiently request another call back as if that might speed up the process.   We need to check our database of call backs and make sure this caller is not already subscribed to a call back request.

Check the caller’s phone number?

After requesting a call back, your configuration should note “I see you are calling from 1-844-4DrVoIP, is that the number you want us to call you back at”?    We can then confirm that number, or ask them to answer another number.

How to get to an Extension number?

The standard call back strategy is to dial the number and hope the target caller is reached.  Unfortunately, more times than not, a receptionist or voice mail IVR answers and wants to know how to complete your call.   Your configuration may need to not only ask for the number to call back on, but an extension number of name of an individual to ask for when the call back is dialed and answered by other than the person who requested the call back!

These are simple but powerful ways of taking the Amazon Connect call back engine and adding features and functionality to achieve a level of control over the call back function.  They distinguish a call center configured with little though to the call back strategy form a call center configured to maximize customer interaction success!

If you would like some help configuring these options, give us a call at 844-4DrVoIP or email and we would be eager to help you! – DrVoIP@DrVoIP.com

 

 

Amazon Connect – Start/Stop/Pause/Resume voice recording?

Recording and Analytics

While configuring Amazon Connect contact flows you will find a “SET Recording and Analytics?  step that you can make use of to set the voice recording behavior.   When you set the recording behavior you select recording only one channel or both the Customer and the Agent.

LENS Speech Analytics

In addition to setting the recording behavior you can switch on LENS a transcription and comprehension service.  This service is typical of call centers as they manage to improve Agent performance and customer satisfaction.   You also make a choice between post call transcriptions or real time subscriptions that can be used to alert supervisors to a real time need for interaction.

 

Start/Stop/Pause/Resume

 

Often for reasons of compliance  HIPA or PIC for example you might want to turn off voice recording while personal data, like credit card information, is being provide.   To do this, it will be necessary to create an extension to the CCP to enable the buttons need to effect the feature.    The clip below reviews a customized CCP we created to handle several features including the start/stop recording API as published.

Give us a call and let us help you with this requirement!  DrVoIP@DrVoIP.com 

 

Amazon Connect – Play Pre-Recorded messages to remote Voice Mail?

Recorded Message Use Case

In an outbound  call center an agent may make several hundred phone calls each and every working day.     When the person they dialed does not answer and the call is forwarded to voice mail, the Agent leaves a message requesting a call back indicating who to call and at what number?    The message is most likely very similar for each called party, requiring the Agent to be enthusiastic and engaging for each message left!

Is there a better way?

There is a cheap and dirty way to do this!   Each Amazon Connect Instance has a “Default Outbound” contact flow.   This contact flow is used for all outbound calls even if you do not specify it.  In fact you cant specify it, or an alternative.  Usually in contact flows, you can do a “save as” on any of the sample or default contact flows and then reference them in your own contact flow designs.   The Default Outbound contact flow however can not easily be used n this way.

What you can do is modify the outbound contact flow and add a “set disconnect” step in that contact flow.    This step is activated when the Agent hangs up and the outbound line is still up.   In this use case, the “set disconnect flow” point to a simple contact flow that has  “play prompt” which contains the message you want to leave in the called parties voice mail box.  The agent, hearing the call has been forwarded to a voice mail, simply hangs up!  The contact flow then plays the prompt asking for a call back!  Cheap but very workable!   (This is a video clip that reviews this configuration).

Note: The Lambda function in this configuration is to support a different function, that of selecting the Caller ID the agent wants to display to the called party.  You can see the details of that configuration at this link.

How about multiple message play options?

What about enabling the Agent to select from multiple messages?  Can each Agent have their own pre-recorded messages? The use case would be the same as configuration as above, but with a couple of changes.  The first change is we need to create a custom CCP that would have the buttons we need to indicate which message the Agent wants published to the called party.  This might be individual buttons or it might be a drop down list of available numbers.    Secondly, we would need a lambda function to retrieve the messages from a Dynamodb table prepared for this purpose.

The following video reviews how this configuration might work with a customized CCP.

Give us a call or email DrVoIP@DrVoIP.com if we can help you with this function!