Voice ID event schema - Amazon Connect

Voice ID event schema

Voice ID generates events for every transaction: enrollment, authentication, or detection of fraudsters in a watchlist. Events are sent to the EventBridge default event bus.

You can create an analytics pipeline for Voice ID authentication outcomes and detection of fraudsters in a watchlist by using EventBridge to monitor Voice ID events. Using the schema available in this topic, you can configure EventBridge rules to listen and filter for Voice ID events that are relevant, and then process them through Amazon Data Firehose to store in a data warehouse of your choice.

For example, you may want near real-time tracking of Voice ID analysis. To do that, you can pull all the Evaluate-Session events, and get the authenticationResult and fraudDetectionResult.

Events are emitted on a best effort basis.

Common fields in the event

  • version - The version of the event data.

  • id - A unique identifier of the event generated by EventBridge

  • detail-type - An identifier for the details of the event.

  • source - The source of the event. This is always aws.voiceid.

  • account - AWS account ID.

  • timestamp - The date and time that the event was published in UTC.

  • region - The AWS Region where the API call was made.

  • resources - Resources used by the API call.

  • detail - Details about the event:

    • detail.sourceId - A unique ID generated by Voice ID that you can use for de-duplication.

    • detail.action - Analogous to the API being invoked.

    • detail.status - Specifies the status of the action: success or failure.

    • detail.errorInfo - Is populated when the specified action errors out at Voice ID.

Following are the schemas for the events are that emitted.

Start Session Action

Emits events on stream start (after setup), stream end, and on failures.

{...commonfields "detail-type": "VoiceId Start Session Action", "detail": { "sourceId": String, "action": "START_SESSION", "status": String, "domainId": String, "session": { "sessionId": String, "sessionName": String, "authenticationConfiguration": { "acceptanceThreshold":Integer }, "fraudDetectionConfiguration": { "riskThreshold":Integer, "watchlistId": String }, "streamingConfiguration": { "authenticationMinimumSpeechInSeconds": Integer }, "enrollmentAudioProgress": { "audioAggregationStatus": String, "audioAggregationStartedAt": "Timestamp", "audioAggregationEndedAt": "Timestamp" }, "authenticationAudioProgress": { "audioAggregationStartedAt": "Timestamp", "audioAggregationEndedAt": "Timestamp" }, "fraudDetectionAudioProgress": { "audioAggregationStartedAt": "Timestamp", "audioAggregationEndedAt": "Timestamp" }, "generatedSpeakerId": String }, "errorInfo": { "errorMessage": String, "errorType": String, "errorCode": Integer } } }

Update Session Action

Emits events when the internal session update succeeds or fails.

{...commonfields "detail-type": "VoiceId Update Session Action", "detail": { "sourceId": String, "action": "UPDATE_SESSION", "status": String, "domainId": String, "session": { "sessionId": String, "sessionName": String, "authenticationConfiguration": { "acceptanceThreshold": Integer }, "fraudDetectionConfiguration": { "riskThreshold": Integer, "watchlistId": String }, "streamingConfiguration": { "authenticationMinimumSpeechInSeconds": Integer }, "generatedSpeakerId": String }, "errorInfo": { "errorMessage": String, "errorType": String, "errorCode": Integer } } }

Evaluate Session Action

Emits events when the session evaluation succeeds or fails. Reasons can be KNOWN_FRAUDSTER or VOICE_SPOOFING.

{...commonfields "detail-type": "VoiceId Evaluate Session Action", "detail": { "sourceId": String, "action": "EVALUATE_SESSION", "status": String, "domainId": String, "session": { "sessionId": String, "sessionName": String, "generatedSpeakerId": String, "streamingStatus": String, "authenticationResult": { "authenticationResultId": String, "decision": String, "score": Integer, "audioAggregationStartedAt": "Timestamp", "audioAggregationEndedAt": "Timestamp", "configuration": { "acceptanceThreshold": Integer } }, "fraudDetectionResult": { "fraudDetectionResultId": String, "decision": String, "reasons": [String], "audioAggregationStartedAt": "Timestamp", "audioAggregationEndedAt": "Timestamp", "configuration": { "riskThreshold": Integer }, "riskDetails": { "knownFraudsterRisk": { "generatedFraudsterId": String, "riskScore": Integer, "watchlistId": String }, "voiceSpoofingRisk": { "riskScore": Integer } } } }, "errorInfo": { "errorMessage": String, "errorType": String, "errorCode": Integer } } }

Speaker Action

Emits events on the success or failure to opt out a speaker, delete a speaker, or enroll a speaker.

{...commonfields "detail-type": "VoiceId Speaker Action", "detail": { "sourceId": String, "domainID": String, "action": String, "status": String, "generatedSpeakerId": String, "data": { "enrollmentSource": String, "enrollmentSourceId": String, "enrollmentStatus": String }, "errorInfo": { "errorMessage": String, "errorType": String, "errorCode": Integer } } }

Fraudster Action

Emits events when a fraudster is successfully registered or deleted.

Events are not sent when a fraudster is associated or disassociated with a watchlist.

{...commonfields "detail-type": "VoiceId Fraudster Action", "detail": { "sourceId": String, "domainID": String, "action": String, "status": String, "generatedFraudsterId": String, "watchlistIds": [String], "data": { "registrationSource": String, "registrationSourceId": String, "registrationStatus": String }, "errorInfo": { "errorMessage": String, "errorType": String, "errorCode": Integer } } }

EnrollBySession

Emits this event when an enrollment request is submitted. A Speaker event is emitted when the actual enrollment succeeds or fails.

{...commonfields "detail-type": "VoiceId Session Speaker Enrollment Action", "detail": { "sourceId": String, "domainId": String, "action": "SESSION_ENROLLMENT_REQUEST", "status": String, "sessionId": String, "sessionName": String, "errorInfo": { "errorMessage": String, "errorType": String, "errorCode": Integer } } }

StartSpeakerEnrollmentJob

Emits this event when a batch enrollment request is submitted, succeeds, or fails. A Speaker event is emitted for each of the individual speakers to indicate if corresponding enrollment succeeds or fails.

{...commonfields "detail-type": "VoiceID Batch Speaker Enrollment Action", "detail": { "sourceId": String, "domainId": String, "action": "BATCH_ENROLLMENT_REQUEST", "status": String, "batchJobId": String, "data": { "dataAccessRoleArn": String, "enrollmentConfig": { "existingEnrollmentAction": String, "fraudDetectionConfig": { "fraudDetectionAction": String, "riskThreshold": Integer, "watchlistIds": [String], } }, "inputDataConfig": { "s3Uri": String }, "outputDataConfig": { "s3Uri": String, "kmsKeyId": String } }, "errorInfo": { "errorMessage": String, "errorType": String, "errorCode": Integer } } }

StartFraudsterRegistrationJob

Emits this event when a batch registration request is submitted, succeeds, or fails. A Fraudster event is emitted for each of the individual fraudsters to indicate if corresponding registration succeeds or fails.

{...commonfields "detail-type": "VoiceId Batch Fraudster Registration Action", "detail": { "sourceId": String, "domainId": String, "action": "BATCH_REGISTRATION_REQUEST", "status": String, "batchJobId": String, "data": { "dataAccessRoleArn": String, "registrationConfig": { "duplicateRegistrationAction": String, "fraudsterSimilarityThreshold": Integer, "watchlistIds": [String], } "inputDataConfig": { "s3Uri": String }, "outputDataConfig": { "s3Uri": String, "kmsKeyId": String } }, "errorInfo": { "errorMessage": String, "errorType": String, "errorCode": Integer } } }