Functionality | Standard Callback |
Task |
---|---|---|
Manually remove callback from queue | UPDATE (2022-04-23): Yes, can be removed from the queue using Amazon Connect API (StopContact action) |
Yes, can be removed from the queue using Amazon Connect API (StopContact action) |
Outbound call initiation |
Automatic. Outbound call automatically starts when an agent answers callback. |
Manual. An agent has to click on the phone number to initiate an outbound call. |
Possibility to show additional attributes in CCP. | Not possible directly in CCP. Can be added in custom CCP. | Yes. Possible out of the box. |
Ability to schedule callback at a later time | Not possible out of the box. | Yes. Possible out of the box. |
Multiple retries |
Yes, it is possible to specify the number of retries and time between attempts. | Not possible out of the box. An agent can manually schedule the next attempt by creating a task in CCP interface. |
Different priority for callback | Only possible if you use a separate queue for callbacks. | Yes. It is possible since Task is a separate channel. |
Different SLA for callback | Only possible if you use a separate queue for callbacks. | Yes. It is possible since Task is a separate channel. |
Contact centers, telephony, Amazon Connect, Genesys Cloud, Genesys PureConnect, Avaya, Freeswitch etc...
2022-04-12
Tasks as alternative to Callback in Amazon Connect
2022-04-09
Amazon Connect new features
Amazon Connect having a blast this April.
They released multiple nice features. Some of them are really desired by many clients.
Full list is here:
What's new:
- Play prompts from an Amazon S3 bucket
- CloudTrail support for queues and routing profiles
- Multi-party calls
2022-02-20
Configure internal extension for IVR in Genesys Cloud
Imagine that you need to setup an internal extension that will point to IVR flow.
The official documentation is not clear on this topic and it may seem that this is not supported.
I found a method that allows me to achieve it.
***
Let's say that in your dialplan you want to have a range of internal extensions that will be used to send calls to different IVR flows.
For example: 6XXX.
Step 1.
Go to configuration of the Site where your user phones are.
Click Edit Site and open Number Plans page
Step 2.
Add a new Number Plan and configure it this way:
- Number Plan Name: Internal (or name it the way you like)
- Match Type: Regular Expression
- Match Expression: ^(6\d{3})$
- Normalized Number Expression: sip:$1@localhost
- Classification: Internal (or use default one Extension)
- to create a new classification - just type new name instead of selecting existing
Regular expression ^(6\d{3})$ - means a number that starts with 6 and has 3 digits after, so exactly what we need 6XXX.
Move it in the list so that it is somewhere at the top, let's say after Emergency but before Extension.
Step 3.
Now we will add new call route:
Example:
- Name: 6001 - this is your internal extension
- Regular routing - All Calls -- TestFlow01 (name of your IVR flow)
You can add additional routes the same way (for example 6002, 6003, etc...)
Step 4.
The last step - let's test it.
In dialpad enter 6001. You should hear your IVR flow.
*********
You might ask - how does it work?
Well, maybe it is documented somewhere (but I did not find it). But I found out that Genesys Cloud allows you to dial the following entities by name:
- Call Flow
- Call Route
- Queue
You can test it yourself.
In dialpad enter the name of your call flow or enter the name of any call route. Even if it contains characters Genesys Cloud will allow you to dial it.
2022-02-17
Exporting data from Interaction Administrator (Genesys PureConnect)
Sometimes you need to export configuration data from Genesys PureConnect.
There are multiple ways to do that. Here are some of them:
1) use DSEditU utility (or directly use Regedit) on CIC server.
Most of the configuration items are stored in Windows Registry and can be viewed/exported using DSEditU.
After you export it you can parse it using scripts.
2) Using custom handlers.
There are several system tools available in Interaction Designer that allows you to export data
https://help.genesys.com/pureconnect/mergedProjects/wh_id/desktop/hid_system.htm
- Get DS Attr
- Get DS Attrs
- Get DS Keys
- Get DS Parameter
- https://github.com/GenesysPureConnect/cli - Command line tool that allows interacting with CIC
- https://github.com/gildas/posh-ic - Collection of PowerShell scripts to interact with CIC
- This script exports data exactly as you see it in Interaction Administrator. For example, if you applied a filter or sorted it - it will export only data that you see, exactly as you see it.
- Make sure that you run it in PowerShell (x86)
- Make sure that your Interaction Administrator is open and you selected the view that you want to export. Otherwise, it will not work.
- Full list of commands that you can use:
- .\IA_Export.ps1 "Managed IP Phones"
- .\IA_Export.ps1 "Stations"
- .\IA_Export.ps1 "Users"
- .\IA_Export.ps1 "Structured Parameters"
- .\IA_Export.ps1 "Roles"
- .\IA_Export.ps1 "Workgroups"
- .\IA_Export.ps1 "Schedules"
- .\IA_Export.ps1 "Queue Columns"
- .\IA_Export.ps1 "Client Buttons"
- .\IA_Export.ps1 "Tables"
- .\IA_Export.ps1 "Status Messages"
- .\IA_Export.ps1 "Web Services Parameters"
- .\IA_Export.ps1 "Licenses Allocation"
2022-01-22
Estimated Wait Time for Chat in Amazon Connect
Some time ago I presented a method of calculating Estimated Wait Time (EWT) using Lambda function that in turn uses Amazon Connect API to get this info.
The same function can be also used to calculate EWT for chats and then you can display EWT to clients.
Add the same Lambda function getEWT that I mentioned in my previous article.
Now we can add this Lambda function to the contact flow used by chat.
1) Add Set Working Queue block
2) Add Set contact attributes block with UserDefined attribute statInterval that allows you to provide a statistical interval for which we will calculate estimated wait time.
In my case, I use 15 minutes.
3) Now invoke lambda function getEWT
4) After that we need to get the result of it by using Check contact attributes block. It will be in External attribute EWT.
5) Based on the value of EWT you can show different messages using Play prompt blocks.
Here is complete flow:
2022-01-10
Troubleshooting flows in Amazon Connect
I would like to share several methods that I use to troubleshoot contact flows in Amazon Connect.
1) Enable Amazon CloudWatch Logs
Official Amazon Connect documentation explains how to enable CloudWatch logs for Amazon Connect.
https://docs.aws.amazon.com/connect/latest/adminguide/contact-flow-logs.html
IMPORTANT - By default logs will not be collected. You have to manually enable logs for each contact flow or module.
2) Contact search
https://docs.aws.amazon.com/connect/latest/adminguide/contact-search.html3) Lambda Logger function
Another method that I use for troubleshooting is a very simple custom made Lambda function - logger (written in Python 3.9)
Source code on my GitHub:
2022-01-05
Check Queue is out of service in Amazon Connect
- they are logged back in
- Supervisor manually changed their status
- It requires custom development
- Still, not a bulletproof solution as agents might simply close the browser or shut down their PC (or some technical problem)
- The situation with missed calls is still not resolved
1) In the contact flow you need to use Set working queue block as you would normally do before transferring call to queue.2) After that you need to call lambda function checkQueue3) This function would first read all the details about current call (queue id, instance id, channel).4) Then it will use Amazon Connect API to get realtime metrics data about the queue - Staffed and Error agents.5) It would calculate the difference and return back Queue Out of service status.6) If it returned OOS = false - your Queue is in service and you can use transfer block to transfer call to queue
7) If OOS = true - Queue is out of service and you can offer client some alternative treatment:
- callback
- voicemail
- transfer call to cell phone/external number
- transfer call to another queue
- simply play message "Please call us later" and disconnect)
3) After that use Check contact attributes to verify the output of lambda function.
If External attribute OOS = true - Queue is out of service, otherwise, it is in service.
- the same checkQueue function can be used while the call is already waiting in the queue. Just add it to your customer queue flow. This would allow you to check if Queue is OOS in a loop, for example, once every 2-3 minutes. If during the time client is waiting for an agent you can catch the situation when Queue goes to OOS. Again that would allow you to offer the client alternative treatment instead of waiting in the queue forever.
- you can advise management that Queue is now OOS by sending Email/SMS/Task notifications. You just need to add additional Lambda blocks in your flow. You can read how to send SMS/Email/Task from IVR flows in my blog articles:
2022-01-03
Export users and queues to CSV-file in Amazon Connect
I created 2 simple Lambda functions that allow exporting users and queues to CSV files.
1. Export users to CSV
How it works:
- Uses Amazon Connect API to fetch all available information about users
- Saves it in CSV format
- Uploads CSV to S3 bucket
Here is the source code of my Lambda function (using Python 3.9)
Before running this script you need to edit the following values:
#Amazon Connect InstanceID
instance_id="513ab265-dd50-476b-976c-0ce5fac49907"
#csv-file name
csv_file='/tmp/amazon_connect_users__'+dt_string+'.csv'
#S3 bucket name
s3_bucket='amazon-connect-export'
Here is output format:
- id - id of user
- username - username
- firstname
- lastname
- phonetype - phone type SOFT_PHONE / DESK_PHONE
- autoaccept - auto answer True/False
- acw_timeout - after call work timeout
- desk_number - phone number for Deskphone
- security_profiles - list of security profiles, example = Agent|QualityAnalyst|CallCenterManager
- hierarchy_group_name - agent hierarchy
- routing_profile_name - routing profile
- routing_profile_concurrency - concurrency configuration for routing profile - using following format CHAT|TASK|VOICE (example - 4|10|1)
- routing_profile_outbound_queue_name - default outbound queue for routing profile
- routing_profile_details_list - detailed configuration of routing profile in the following format:
- QueueName1|Priority1|Delay1|Channel_type1,...QueueNameN|PriorityN|DelayN|Channel_typeN
- Example:Tech_support|1|0|VOICE;BasicQueue|1|0|CHAT;BasicQueue|1|0|TASK;BasicQueue|1|0|VOICE
- aws lambda invoke --function-name exportUsersToCSV --invocation-type Event return.json
2. Export queues to CSV
How it works:
- Uses Amazon Connect API to fetch all available information about queues
- Saves it in CSV format
- Uploads CSV to S3 bucket
Here is the source code of my Lambda function (using Python 3.9)
Before running this script you need to edit the following values:
#Amazon Connect InstanceID
instance_id="513ab265-dd50-476b-976c-0ce5fac49907"
#csv-file name
csv_file='/tmp/amazon_connect_queues__'+dt_string+'.csv'
#S3 bucket name
s3_bucket='amazon-connect-export'
Here is the output format:
- id - queue id
- name - queue name
- desc - queue description
- status - queue status ENABLED/DISABLED
- hours - hours of operation
- ob_callerid_name - Outbound caller ID name
- ob_phonenumber - Outbound caller ID number
- ob_flow - Outbound whisper flow (optional)
- aws lambda invoke --function-name exportQueuesToCSV --invocation-type Event return.json