Amazon Connect Voice ID 事件架构 - Amazon Connect

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Connect Voice ID 事件架构

Voice ID 会为每个事务生成事件:注册、身份验证或在监视列表中检测欺诈者。事件被发送到 EventBridge 默认事件总线。

您可以使用监控语音 ID 事件,为语音 ID 身份验证结果和监视列表中欺诈者的检测创建分析管道。 EventBridge 使用本主题中提供的架构,您可以配置 EventBridge 规则来侦听和筛选相关的语音 ID 事件,然后通过 Amazon Data Firehose 处理这些事件,将其存储在您选择的数据仓库中。

例如,您可能需要近乎实时地跟踪 Voice ID 分析。为此,您可以提取所有 Evaluate-Session 事件,并获取 authenticationResultfraudDetectionResult

尽最大努力发出事件。

事件中的常用字段

  • version - 事件数据的版本。

  • id-由生成的事件的唯一标识符 EventBridge

  • detail-type - 事件的详细信息标识符。

  • source - 事件的源。这始终为 aws.voiceid

  • account- AWS 账号。

  • timestamp - 事件以 UTC 格式发布的日期和时间。

  • region-发出 API 调用的 AWS 区域。

  • resources - API 调用使用的资源。

  • detail - 有关事件的详细信息:

    • detail.sourceId - 由 Voice ID 生成的唯一 ID,可用于重复数据删除。

    • detail.action - 类似于正在调用的 API。

    • detail.status - 指定操作的状态:成功或失败。

    • detail.errorInfo - 在 Voice ID 中出现指定操作错误时填充。

以下是发出事件的架构。

开启会话操作

在流开始(设置后)、流结束和失败时发出事件。

{...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 } } }

更新会话操作

内部会话更新成功或失败时发出事件。

{...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 } } }

评估会话操作

会话评估成功或失败时发出事件。原因可能是 KNOWN_FRAUDSTER 或 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 } } }

呼叫方操作

在选择退出呼叫方、删除呼叫方或注册呼叫方成功或失败时发出事件。

{...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 } } }

欺诈者操作

成功注册或删除欺诈者时发出事件。

当欺诈者与监视列表关联或取消关联时,不会发出事件。

{...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

提交注册请求时发出此事件。当实际注册成功或失败时,会发出 Speaker 事件。

{...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

在批量注册请求提交、成功或失败时发出此事件。将为每位发言者发出一个 Speaker 事件,以指示相应的注册是成功还是失败。

{...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

在批量注册请求提交、成功或失败时发出此事件。将为每位欺诈者发出一个 Fraudster 事件,以指示相应的注册是成功还是失败。

{...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 } } }