CTRDataSyncFunction Lambda Function

After the contact record (previously called contact trace record or CTR) is created in Amazon, this Lambda function automatically syncs contact record data to the VoiceCall object. It finalizes the values of multiple VoiceCall object fields.

Configuration: This function is available to Salesforce Voice with Amazon Connect and Salesforce Voice with Partner Telephony from Amazon Connect customers who are using an Amazon Connect instance and connecting to a Kinesis stream. The configuration is automatically performed when you create a contact center in Voice.

Description: This function performs these actions:

  1. Synchronizes data between a contact record from Amazon and a VoiceCall record by taking the data from the Amazon contact record and updating the VoiceCallrecord.
  2. As part of the update, if the function finds that a VoiceCall record doesn’t exist, it creates one. This behavior is useful for missed or abandoned calls.
  3. If the CallDisposition field in the VoiceCall record isn’t already set, sets it to Completed.

The following data is synced between the Data model for Amazon Connect contact records and a VoiceCall record:

Amazon Connect Contact Record Attribute VoiceCall Field Notes
InitiationTimestamp CallStartDateTime
DisconnectTimestamp CallEndDateTime
Agent.ConnectedToAgentTimestamp and DisconnectTimestamp

CallDurationInSeconds

CallDurationInSeconds is inferred from Agent.ConnectedToAgentTimestamp and DisconnectTimestamp. The CallDurationInSeconds value is the difference between CallAcceptDateTime (when a rep accepts a call) and CallEndDateTime (when a call disconnects). This value doesn’t include queue and ring time before a rep accepts a call.

When Post-Call CTR sync occurs, the system may overwrite CallEndDateTime with the DisconnectTimestamp value supplied from the contact record. This means CallDurationInSeconds reflects the duration based on the server-evaluated end time at the moment of disconnection, which can differ from the CTR-reported DisconnectTimestamp.

Agent.ConnectedToAgentTimestamp CallAcceptDateTime The CallAcceptDateTime value matches the Agent.ConnectedToAgentTimestamp value, even if it’s null. If a call didn’t connect on the vendor side, Salesforce passes an empty string for CallAcceptDateTime.
Agent.CustomerHoldDuration CustomerHoldDuration The DurationInSeconds field on the VoiceCallRecording record gets its value by adding Agent.CustomerHoldDuration and Agent.AgentInteractionDuration from the Amazon contact record.
Agent.LongestHoldDuration LongestHoldDuration
Agent.NumberOfHolds NumberOfHolds
Agent.AgentInteractionDuration This value isn’t mapped to a VoiceCall field. However, the DurationInSeconds field on the VoiceCallRecording record gets its value by adding Agent.CustomerHoldDuration and Agent.AgentInteractionDuration from the Amazon contact record.
Queue.EnqueueTimestamp CallQueuedDateTime
Queue.Name QueueName
InitiationMethod CallType (only when creating a new record) This value is used to infer values for ToPhoneNumber and FromPhoneNumber. Also used for the CallType field if creating a new VoiceCall record.

Supported InitiationMethod values include:

  • API
  • INBOUND
  • OUTBOUND
  • CALLBACK
  • TRANSFER
SystemEndpoint.Address ToPhoneNumber or FromPhoneNumber

If InitiationMethod is Inbound, the value is mapped to ToPhoneNumber (when creating a new record). If InitiationMethod is Outbound, this value is mapped to FromPhoneNumber.

CustomerEndpoint.Address ToPhoneNumber or FromPhoneNumber If InitiationMethod is Inbound, the value is mapped to FromPhoneNumber. If initiationMethod is Outbound, this value is mapped to ToPhoneNumber (when creating a new record).
Recording.Location CallRecordingId The VoiceCall record creates a reference to the VoiceCallRecording record using the CallRecordingId reference ID field.

Usage: The data synchronization automatically starts when a contact record is generated. You don’t need to call this function manually.

The CustomerHoldDuration and NumberOfHolds fields don’t have values until after the CTRDataSyncFunction Lambda function runs. As such, to determine if the Lambda function is done, search for these values in these fields.

Tip