Voicemail

Overview

Symbee Connect Voicemail (Agent and Queue) is an optional feature you can use with your Symbee Connect enabled Amazon Connect instance and implement the following functionality:

  • Agent (User) based Voicemail: Allow callers to leave messages for individual users. Agent voicemails are displayed in the toolbar on the users Symbee Connect UI, highlighted when new messages are available, allowing playback, delete, and callback options within the Symbee Connect UI;
  • Queue or Group based Voicemail: Allow callers to leave a message at a Queue level (for example, when closed). Queue based voicemails are delivered as wav attachments to a configured email address (usually a group email address, monitored by supervisors);
  • Customizable Voicemail Greetings: Allow users to set a personalized message used as their Voicemail Greeting when Agent/User voicemail is being deployed.

This guide provides the configuration steps to enable the use of the above features in your AWS account, Amazon Connect Instance and Symbee Connect environment.

Enabling Amazon Connect CTR Kinesis Stream and Live Media Streaming

If using the Symbee Connect Voicemail features (as opposed to only using the Direct Dialing features without Voicemail) then both the CTR Kinesis Stream and Live Media Streaming need to be enabled on your Amazon Connect Instance.

Enabling the CTR (Contact Trace Record) Kinesis Stream configures Amazon Connect to emit a CTR event at the conclusion of each contact, which is required for the Symbee Connect Voicemail integration. Turning on Live Media Streaming on your Amazon Connect instance enables the Start Media Streaming and Stop Media Streaming contact flow nodes, which are also required by Symbee Connect Voicemail.

Enabling Amazon Connect CTR Kinesis Stream

  1. Login to your AWS Management Console, and navigate to Amazon Connect from the Service menu
  2. Select the Amazon Connect instance you are configuring with Symbee Connect Voicemail.
  3. From the resulting Amazon Connect Instance overview screen, select Data Streaming in the left navigation bar, and make sure Enable data Streaming is checked.
  4. On the same screen, under Contact Trace Records (CTR), ensure that the Kinesis Stream option is selected, and a Kinesis Stream is selected in the dropdown that is specific to CTR records for your Instance:
  5. If Kinesis Firehose had previously been selected, you will need to transition over to Kinesis Stream. In this case, you can still Firehose the CTR data to a location if needed. After creating the Kinesis Stream in this step, go into the Kinesis Service in your AWS Account, and attach the Firehose you were previously sending CTR events directly to, to the new Kinesis Stream you create here – the CTR data will then be pushed to your already configured location after being sent through the Kinesis Stream.
  6. If Kinesis Stream had not previously been set and you don’t currently have a Kinesis Stream to send your CTR data to:

    • Click the Create a new Kinesis Stream link under the stream selector field. You will be taken to the Amazon Kinesis console in a separate tab
    • Under Data Streams, click the Create data stream button (top right)
    • Set an appropriate name for your new Stream e.g. <Amazon-Connect-instance-name>-ctr
    • Set Capacity mode to On-demand
    • Click the Create data stream button on the bottom right to save.
    • After your stream is created, click on the newly created screen, and copy the ARN of the stream – you will need this ARN in the following steps.
    • Return to your Amazon Connect tab, and select the newly created CTR Kinesis stream
  7. Save the Amazon Connect Instance configuration updates.

Enabling Amazon Connect Live Media Streaming

  1. From the same Amazon Connect Instance overview screen (see above), select Data Storage in the left navigation bar, and under Live Media Streaming, click Edit, and check the Enable live media streaming checkbox.

  2. In the now-expanded Live media streaming, complete the form as follows:

  3. Set the Prefix to something appropriate, for example voicemails
  4. Set Encryption as needed
  5. Set the Data retention period to be at least 1 hour.
  6. And click Save.

Run CloudFormations

If this is the first Symbee Connect CloudFormation you have run, you will need to run the Integrations CloudFormation first. For step by step instructions and further information about CloudFormations click here.

Download Voicemail and Direct Dialing CloudFormation

  1. Log into the Symbee Connect Administration Portal.
  2. If you have more than one Environment configured within your Company in Symbee Connect, make sure you have the appropriate one selected. This can be found on the Navigation bar to the left of the Function menu.
  3. Click on Function and then Feature Integrations (CloudFormations).
  4. Click and download the Voicemail and Direct Dialing CloudFormation script.
  5. You will be prompted with a Save As dialog screen… Save the VoiceMailAndDirectDialCloudFormation.yaml file locally to your PC for use in the following steps.
  6. Log Into your AWS Management Console.
  7. Make sure you are in the correct AWS region for where you want to deploy (top right of the Navigation bar) – the same region as your Amazon Connect instance.
  8. Navigate to the CloudFormation console (under Management and Governance, on the Services menu)
  9. From the CloudFormations console, select Stacks in the left-hand navigation bar, and select Create Stack (with new resources (standard)).
  10. You will be presented the Create Stack view for creating/deploying a new CloudFormation script (known as a stack):
    • Under the Prepare Template section, select Template is Ready
    • Under Specify Template, select Upload a template file
    • Under Upload a template file, click Choose File
    • In the resulting file selector, find and upload the file you saved above.
    • Click Next at the bottom
  11. In the Specify Stack Details screen, complete the fields as follows:

    • Stack Name: Enter a name appropriately. We suggest using your Symbee Connect Environment (e.g. dev, prod, etc.) in the name for better organization, in case you have CloudFormations for multiple Symbee Connect Environments being deployed into the same AWS Account.
      For example:
      companyalias-environment-voicemailanddialing

    • AWSLambdaBasicExecutionRoleARN and AWSLambdaKinesisExecutionRoleARN: use the provided default value

    • AWSLambdaKinesisExecutionRoleARN: use the provided default value

    • ConnectCTRKinesisStreamARN: Provide the ARN of the Kinesis Stream your Amazon Connect Instance is configured to send CTR events to (refer to Enabling Amazon Connect CTR Kinesis Stream above)

    • ExistingVMBucket: Leave this blank for new installs and updates

    • LambdaDistroBucket: This is the Symbee Connect Lambda S3 bucket where the Voicemail and Direct Dialing Lambdas will be uploaded from. Select the bucket name from the drop-down that matches the AWS region you are running the CloudFormation in.

    • LambdaSourceFile: Select from the dropdown, there will be only one value to pick from.

    • LambdaSourceFileForDirectDialing: Select from the dropdown, there will be only one value to pick from.

    • LogLevel: Leave at ERROR.

    • ProvideTranscriptions: Set to true if wanting Voicemail Transcription. Otherwise, leave at false.

    • SampleRate: Leave at default value.

    • SecretsManagerRegion: Enter the name of the AWS region where the initial Symbee Connect Integration CloudFormation was run in.
      For Example:
      us-east-1, us-west-2, eu-central-1, etc.

    • SenderAddressForGroupMessages: Only required if using Group Voicemail. Enter a valid Email Address whitelisted within your AWS SES Service, that will be used as the “From:” address for queue-based voicemail that is sent out via Emails

    • SesRegion: Only required if using Group Voicemail. Enter the name of the AWS Region to use SES in. For example, "us-east-1". (Simple Email Service (SES) isn't available in all regions, but for most installations this will be the same region you are running this CloudFormation in)

    • SupportedLanguage: if using Transcription, choose appropriate language

    • TranscriptionLambdaSourceFile: Select from the dropdown, there will be only one value to pick from.

    • TranscriptionResultType: leave as PLAIN_TEXT.

    • Click Next.
    • On the next Configure stack options screen, accept all the defaults, and click Next.
    • On the next Review testing screen, scroll to the bottom Capabilities section, check the "I acknowledge that AWS CloudFormation might create IAM resources with custom names." check box and finally click Create Stack.

Voicemail Transcription Functionality

Symbee Connect Voicemail Transcription is an optional feature you can use with your Symbee Connect enabled Amazon Connect instance and implement the following functionality:

Queue or Group based Voicemail Transcripts: When callers leave a message at a Queue level (for example, when closed), Queue based voicemails are delivered as .wav attachments to a configured email address (usually a group email address, monitored by supervisors) and include the transcription of the audio

NOTE: This only needs to be configured if you are using Transcription.


Configure Transcription Lambda Triggers

  1. Once the Voicemail and Direct Dialing CloudFormation stack is created (with the ProvideTranscriptions parameter set to true), click on the Resources tab.

  2. Under Resources, note the Physical IDs of the following Logical IDs

    • TrascriptionRequestLambda
    • TranscriptionProcessingLambda

  3. In the AWS Console navigate to the TrascriptionRequestLambda, you can click the linked Logical ID to navigate there directly.


  4. On the Lambda Designer click Add trigger.

  5. In the Select a trigger dropdown, type s3 and select S3 from the list.

  6. Select the Voicemail S3 bucket created by the CloudFormation that has a name staring with sc-voicemail-...

  7. Fill in the Trigger configuration form

    • Event type
      • Leave All object create events selected
    • Prefix
      • Enter VoiceMail/ in the text box
    • Suffix
      • Enter “.wav” in the text box


  8. Tick the box to acknowledge the dangers of Recursive invocation and click Add.

  9. Once the trigger is created, close the TranscriptionRequestLambda tab in your browser to return to the CloudFormation page.

  10. Make sure that the Transcription stack is still active, and if it is not, select it from the Stacks list on the left of the screen.

  11. Navigate to the TranscriptionProcessingLambda by clicking on its Physical ID.

  12. Click Add trigger and select S3 from the Select a trigger dropdown.

  13. Fill in the Trigger configuration form:

    • Bucket - Select the bucket identified in the stack Resources tab by the Logical ID of TranscribeWorkingBucket

      • Event type
        • Leave All object create events selected
    • Prefix - Leave blank

    • Suffix - Enter “.json” in the text box

  14. Tick the box to acknowledge the dangers of Recursive invocation and click Add.

  15. The Transcription stack is now configured. Place a call into the Queue voicemail box and assure that the transcript and audio file are delivered to the proper email address.



Configuring Lambda for use in Amazon Connect Contact Flows

The CloudFormation above installs a utility Lambda function into your AWS Account to be used in Contact Flows. The lambda enables you to:

  • Retrieve customizable Voicemail greetings;
  • Perform lookups of User Login ID’s for a given inbound dialed Phone Number or Extension;
  • For outbound calls - perform a lookup of the configured DID Phone Number for a given User Login ID (to correctly set the Calling Number or ANI for outbound calls from a Direct Dial user).

The following steps declare this utility Lambda function for use in your Contact Flows:

  1. Log Into your AWS Management Console.

  2. Make sure you are in the correct AWS region for your Amazon Connect instance (top right of the Navigation bar).

  3. From the Services menu, navigate to Amazon Connect, and select the Amazon Connect instance associated with the Symbee Connect Environment you used in previous steps.

  4. From your Amazon Connect instance Summary page, use the left navigation bar and select Contact Flows configuration.


  5. Scroll down on the Contact Flows configuration page above, to the section headed AWS Lambda where you configure which Lambda functions are available to Contact Flows in your Amazon Connect instance.

  6. Select the VoicemailDDSetting Lambda that was installed during above step and click the + Add Lambda Function to the right. This allows the utility lambda to be available for use in your Contact Flows.




Using Agent/User Voicemail in Amazon Connect Contact Flows

Important Note: This feature requires the users to use the Symbee Connect user interface instead of the standard Amazon Connect CCP user interface.

Agent or User based Voicemail works very similar to Group/Queue Voicemail in the setup. However, agent voicemail requires you to set a specific User ID in the contact flow. This could happen when you have DID’s assigned to specific users or if you use some type of menu tree and allow the callers to choose a specific person. In this scenario, Voicemail would be used when the user isn’t available - whether it’s outside of normal business hours, or if you do a ‘Check Staffing’ and determine the user isn’t in a specific state (e.g. they are on a call), route to Voicemail.


Configuring Agent Voicemail Contact Flow

This is an example of what the flow blocks for configuring voicemail should look like:


At the point in your flow where you want to invoke the Voicemail feature, you will add the following blocks:

  1. Play Prompt

    • Located in the Interact menu.
    • This is where you’ll play a prompt similar to “Thank you for calling. I’m sorry I missed your call. Please leave a brief message after the beep and I will return your call as soon as possible.”
    • Note: Refer below for how to play a user-specific customizable greeting.
  2. Start Media Streaming (the first green block in the example above)

    • Located in the Interact menu
    • Connect the previous play prompt to this item
    • Click to edit and unselect the ‘To the customer’ option
    • Click Save
  3. Set Contact Attributes – represented in the example above in red as “A”. Place this immediately after the Start Media Streaming block above:

    • Located in the Set menu
    • Set the following four Contact Attributes, exactly as named below.

      Note: The first attribute below may be set earlier in your contact flow - basically, at some point you need to set the TargetAgentId attribute to equal your agent’s User Login ID so the Voicemail goes to the appropriate Symbee Connect Agent UI.

      Also refer to Using Group or Queue Voicemail in Amazon Connect Contact Flows and Set Transcription Language in Contact Flow for how to use the additional Voicemail Settings and Direct Dialing Lambda to easily lookup a User Login ID for a given DID Phone number or User Extension and save this to set your TargetAgentId contact attribute.

    • First attribute

      • Use Text
      • Destination Key = TargetAgentId
      • Value = Login Name of user you want to receive these Voicemails

    • Second Attribute
      • Use Text
      • Destination Key = VoiceMsgType
      • Value = AgentVoicemail

    • Third Attribute
      • Use Attribute
      • Destination Key = VMStreamARN
      • Type = Media streams
      • Attribute = Customer audio stream ARN

    • Fourth Attribute
      • Use Attribute
      • Destination Key = VMStartPosition
      • Type = Media streams
      • Attribute = Customer audio start fragment number

  4. Get Customer Input – the purpose of this block is to wait for the caller to either hang up or press pound when done:

    • Located in the Interact menu.
    • Connect the previous Set contact attributes to this item.
    • Select the Beep.wav prompt from the library.
    • Set timeout to 180 seconds (this is the maximum duration of the voicemail allowed to be left).
    • Click Add another condition and make it # (the key the caller can press when done)

  5. Stop Media Streaming (the second green block in the example above)

    • Located in the Interact menu.
    • Connect the previous Get Customer Input options to this.
    • No configuration needed on this item.

  6. Play Prompt

    • Located in the Interact menu
    • Connect the previous Stop Media Streaming to this item
    • This is where you’ll play a confirmation prompt similar to “Thank you! Your Voicemail has been received. Good bye!

  7. Disconnect/hang up

    • Located in the Terminate/Transfer menu
    • Connect the previous Play Prompt to this item

Testing

When testing this feature, call in during the setup scenario to leave a voicemail. The target user should receive your Voicemail in their Symbee Connect agent/user UI, accessed via the toolbar Voicemail icon located at the bottom left of the UI. New voicemails can be played back and deleted from within this Voicemail tool view.

Troubleshooting

If you don’t receive your voicemail, check the following options:

  1. You set the correct User Login Name in the TargetAgentId contact attribute of your call flow where you want the Voicemail to end up. You can use Contact Flow logs to verify this is occurring.
  2. Your other three contact attributes are set correctly, and your flow matches the example given.


Using Customizable Greetings in Agent Voicemail Contact Flow

The Play Prompt block above plays a static generic greeting prior to leaving an Agent or User Voicemail. The following steps describe how to alternatively play a user customizable greeting instead.


Set User-Specific Voicemail Greetings in Symbee Connect User Profiles

A user’s customized Voicemail Greeting can either be set by an Administrator via the Symbee Connect Administration Portal, or individually by each user via the Settings tool on the Symbee Connect Agent UI.

Setting the User Voicemail Greeting as an Administrator:

  1. Log into your Symbee Connect Administration Portal.

  2. If you have more than one Environment configured within your Company in Symbee Connect, make sure you have the appropriate one selected. This can be found on the Navigation bar to the left of the Function menu.

  3. From the main Functions menu, Navigate to User Administration in the User Configuration section.

  4. From the Users listing screen, select the user and click Modify.

  5. Select from Voicemail on the left side menu and click Voicemail Settings section.


  6. Set the Greeting Text to the user’s personal greeting.

  7. Optionally, set the Greeting Personality.

Note: The Voicemail Greeting Personalities will be defined by your organization. The value that is stored in User Profiles will be available in Amazon Connect Call Flows through the Voicemail and Direct Dialing Lambda and can be used to set the voice used by Amazon Connect to read the Voicemail Greeting Text.

Setting the User Voicemail Greeting as a User

With the user logged into the Symbee Connect Agent UI, the greeting can be set and updated through the Settings tool on the Toolbar (small cog, bottom left):

  • Set the Voicemail Greeting Text to the user’s personal greeting.

  • Optionally, if your organization supports Voicemail Greeting Personalities, set the Voicemail Greeting Personality.

Note: The Voicemail Greeting Personalities will be defined by your organization. The value that is stored in User Profiles will be available in Connect Call Flows through the Voicemail and Direct Dialing Lambda and can be used to set the voice used by Connect to read the Voicemail Greeting Text.

Use User-Specific Voicemail Greetings in your Amazon Connect Contact Flow

With the user’s personal greetings set as above, the Voicemail Settings and Direct Dialing Lambda (refer to the Voicemail Transcription Functionality section) can be invoked to retrieve and use the customized greeting in your Amazon Connect Voicemail Contact Flow for playback.

Below is an updated view of the earlier example when using a personal greeting:


Within your Voicemail flow add the following blocks:

  1. Invoke AWS Lambda Function – add this prior to the Start Media Streaming block (red above)

    • The purpose of this Lambda call is to retrieve the Greeting Text set for the user

    • Located in the Integrate menu

    • In Select a function: Select the new utility Lambda added above

    • Set the Following two Function Parameters:

      • First Parameter - Destination Key: Operation - Select: Use Text - Value: GetUserVoicemailGreeting
      • Second Parameter - Destination Key: UserLogin - Either Use Attribute if you have already determined the User Login ID prior to the flow and have this saved in a Contact Attribute or Use Text - refer to the notes in Step 3 of above regarding the first TargetAgentId attribute.
    • If the specified User above has configured Voicemail Greeting Text set, the above Lambda call will return three values – a Result value of SUCCESSTEXT, Greeting containing the configured text, and GreetingPersonality containing the greeting personality code or an empty string if one is not configured.


  2. Check Contact Attributes – add this after the Start Media Streaming block, prior to the Get Customer Input block (blue above)

    • The purpose of this block is to branch based on whether a greeting was found for the user or not.
    • Located in the Branch menu.
    • For the Attribute to check, set Type to: External, and the Attribute name of Result
    • Click Add another Condition, and set to Equals a value of SUCCESSTEXT

  3. Get Customer Input – add a second one of these – this one will be the one used to play the custom user Greeting if one was found (green above)

    • The purpose of this block is to branch based on whether a greeting was found for the user or not.
    • Located in the Branch menu.
    • For the Attribute to check, set Type to: External, and the Attribute name of Result
    • Click Add another Condition, and set to Equals a value of SUCCESSTEXT



Using Group or Queue Voicemail in Amazon Connect Contact Flows

Whether you choose to add the Voicemail logic into one of your existing flows or you create its own flow and then reference that new Voicemail flow form your existing flows is up to you. Some scenarios you might use Group or Queue based Voicemail for are your normal business hours closed treatment, holiday closed hours treatment or in place of a callback scenario when the customer waits in queue for a specific amount of time.


Configuring Group Voicemail Contact Flow

Below is an example of what the flow blocks for configuring voicemail look like:

At the point in your flow where you want to invoke the Voicemail feature, you will add the following blocks:

  1. Play Prompt

    • Located in the Interact menu
      • This is where you’ll play a prompt similar to “Thank you for contacting ABC Company. Our offices are currently closed. We are open Monday thru Friday from 8am until 6pm. Please leave a brief message after the beep and we will return your call on the next business day.”
  2. Start Media Streaming (the first green block in the example above)

    • Located in the Interact menu
      • Connect the previous play prompt to this item
      • Click to edit and unselect the To the customer option
      • Click Save.
  3. Set Contact Attributes – represented in the example above in red as “A”. Place this immediately after the Start Media Streaming block above:

    • Located in the Set menu

    • Set the following four Contact Attributes, exactly as named below

      • First attribute - Use Text - Destination Key = TargetGroupEmail - Value = the email address, or addresses, you want to send these voicemails to. If multiple addresses, separate each email address with a comma.
        • Second Attribute
          • Use Text
          • Destination Key = VoiceMsgType
          • Value = GroupVoicemail
        • Third Attribute
          • Use Attribute
          • Destination Key = VMStreamARN
          • Type = Media streams
          • Attribute = Customer audio stream ARN
        • Fourth Attribute
          • Use Attribute
          • Destination Key = VMStartPosition
          • Type = Media streams
          • Attribute = Customer audio start fragment number
    • You can optionally set the following further Contact Attribute to have additional text added to the Subject Line of the emails generated for each Group/Queue voicemail
      • Fifth Attribute
        • Use Text
        • Destination Key = VMSubjectInfo
        • Value = a string of text to be injected into the Email subject line. For example, if you are sending voicemails for multiple Queues to the same email address, you can set this value to the Queue Name to indicate which Queue the received Email is related to
  4. Get Customer Input – the purpose of this block is to wait for the customer to either hang up or press pound when done:

    • Located in the Interact menu
    • Connect the previous Set contact attributes to this item
    • Select the Beep.wav prompt from the library
    • Set timeout to 180 seconds (this is the maximum duration of the voicemail allowed to be left)
    • Click Add another condition and make it # (the key the caller can press when done)
  5. Stop Media Streaming (the second green block in the example above):

    • Located in the Interact menu.
    • Connect the previous Get Customer Input options to this.
    • No configuration needed on this item.
  6. Play Prompt

    • Located in the Interact menu
    • Connect the previous Stop Media Streaming to this item
    • This is where you’ll play a confirmation prompt similar to “Thank you! Your Voicemail has been received. Good bye!
  7. Disconnect/hang up

    • Located in the Terminate/Transfer menu
    • Connect the previous Play Prompt to this item


Testing

When testing this feature, call in during the setup scenario to leave a voicemail. You should receive your Voicemail in an email to the email specified in the attribute of the call flow (first attribute of Step 3 above). Check your spam/junk folder as it may go there.


Troubleshooting

If you don’t receive your voicemail email, check the following:

  1. Check you typed the email address correctly in the contact attribute of your call flow where you want the email to go to.
  2. Check your other three contact attributes are set correctly.
  3. Check you have typed the “From:” email address correctly in the CloudFormation for the SenderAddressForGroupMessages (see Download Voicemail and Direct Dialing CloudFormation, Step 11)
  4. Check you have verified both of these email addresses in Amazon’s Simple Email Service
    • To verify an email address, log into your AWS Console and complete the following steps:
      • In the Services menu, click on the Simple Email Service (SES) option under Customer Engagement.
      • Confirm you are in the right region and click on the Email Addresses menu option on the left-hand side menu.
      • Confirm the two email addresses are in the list and that the Status shows verified.
      • If not, click the Blue Verify a New Email Address button at the top.
      • Input your email address and click the Blue Verify This Email Address.
      • You should now receive a verification email from Amazon with a link that you need to click to verify the address.


Set Transcription Language in Contact Flow

Note: This is optional

  1. In the voicemail contact flow, locate the Set contact attributes block.



  2. Click on the Set contact attributes header to open the Set contact attributes panel.
  3. Scroll to the bottom of the panel and click Add another attribute.
  4. In Destination key type the value VoiceMsgLanguage.
  5. In Value type the value for the language localization code (see https://en.wikipedia.org/wiki/Language_localisation for common codes).



  6. Click Save.
  7. Finally, Save and Publish the updated contact flow.