아마존 EventBridge 알림 사용 - Amazon Chime SDK

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

아마존 EventBridge 알림 사용

Amazon Chime SDK Call Analytics는 미디어 인사이트 파이프라인 상태가 변경되거나 통화 분석 실시간 알림 조건이 충족될 때 기본 EventBridge 버스로 이벤트를 전송할 수 있도록 지원합니다. 미디어 인사이트 파이프라인 오류 상태 업데이트의 경우 비동기적으로 리소스에 장애가 발생할 경우 이를 알리도록 EventBridge 대상을 구성하는 것이 좋습니다. 통화 분석 알림에는 aws.chime 소스와 다양한 세부 정보 유형이 있으며, 이는 다음 섹션에서 공유됩니다. 자세한 내용은 Amazon EventBridge 사용 설명서를 참조하십시오.

상태 업데이트

미디어 인사이트 파이프라인은 통화 분석 세션이 진행됨에 따라 EventBridge 알림을 전송하며 성공적으로 종료되거나 오류가 발생할 수 있습니다. 다음과 같은 경우 “Media Insights 상태 변경” 세부 정보 유형이 포함된 EventBridge 알림을 받게 됩니다.

  • 미디어 파이프라인의 상태가 바뀝니다.

  • 미디어 파이프라인 요소의 상태가 바뀝니다.

  • 파이프라인 요소가 중지됩니다.

  • 파이프라인 요소가 실패합니다.

세부 정보 섹션에는 항상 다음 필드가 포함됩니다.

  • version

  • mediaInsightsPipelineArn

  • eventType

미디어 인사이트 파이프라인에 분석 프로세서, 데이터 싱크 등 여러 요소가 포함된 경우 세부 정보 섹션에는 mediaInsightsPipelineElementStatuses 필드도 포함됩니다. 이 필드는 파이프라인 내 각 요소의 상태를 나타냅니다. 각 파이프라인 요소의 가능한 상태는 다음과 같을 수 있습니다.

  • NotStarted

  • InProgress

  • Stopped

  • Failed

세부 정보 섹션에는 CreateMediaInsightsPipelineAPI 호출 MediaInsightsRuntimeMetadata 중에 지정된 모든 키-값 쌍도 포함됩니다. 음성 커넥터로 통화 분석 세션을 시작한 경우 메타데이터 섹션은 다음 파라미터로 자동으로 채워집니다.

  • transactionId

  • fromNumber

  • toNumber

  • callId

  • voiceConnectorId

  • direction

미디어 인사이트 파이프라인에 단일 요소가 포함될 때마다 다음과 같은 이벤트 유형이 나타날 수 있습니다. 각 섹션을 펼쳐 자세히 알아보세요.

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [] "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsInProgress", "version": "0", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string" } }

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [] "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsPaused", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string" } }

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [] "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsStopped", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string" } }

서비스에 일시적인 장애가 발생하여 재시도를 시도할 것임을 나타냅니다. 아무 조치도 필요하지 않습니다.

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [] "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsTemporaryFailure", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string" } }

사용자의 조치가 필요한 장애를 나타냅니다. failureReason을 사용하여 문제를 해결하세요. 일반적인 장애에는 다음이 포함될 수 있습니다.

  • 리소스 액세스 역할에 대한 권한이 부족함

  • 누락되거나 삭제된 리소스

  • Amazon Transcribe 또는 Amazon Kinesis와 같이 사용자를 대신하여 분석을 호출하는 AWS 서비스에서의 스로틀링

  • KVS 스트림의 미디어 형식이 호환되지 않습니다.

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [] "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsPermanentFailure", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string", "failureReason": "string" } }
참고

failureReason 필드는 선택 사항입니다. 예를 들어, 일반적인 이유는 Access denied when assuming resource access role일 수 있습니다.

다음 이벤트 유형은 Amazon Chime SDK 음성 커넥터에 의해 시작된 통화 분석 세션에 대해 미디어 인사이트 파이프라인이 만들어지거나 만들어지려는 시도가 실패할 때마다 나타날 수 있습니다. 각 섹션을 펼쳐 자세히 알아보세요.

이 예제는 일반적인 성공 이벤트를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [] "detail": { "version": "0", "mediaInsightsPipelineConfigurationArn": "string", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsCreated", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string", } }

이 예시는 일반적인 장애 이벤트를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [] "detail": { "version": "0", "mediaInsightsPipelineConfigurationArn": "string", "eventType": "chime:MediaInsightsCreateFailed", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string", "failureOrigin": "Voice Connector", "httpStatusCode": "string", "failureReason": "string" } }

미디어 인사이트 파이프라인에 여러 요소가 포함된 경우 다음과 같은 이벤트 유형이 나타날 수 있습니다. 예제 알림은 다음과 S3RecordingSink와 결합된 AmazonTranscribeProcessor에 대한 것입니다. 각 섹션을 펼쳐 자세히 알아보세요.

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [], "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsInProgress", "mediaInsightsPipelineElementStatuses": [ { "type": "AmazonTranscribeProcessor", "status": "InProgress", "updatedOn": 1686184070655 }, { "type": "S3RecordingSink", "status": "NotStarted", "updatedOn": 1686184070655 } ] "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string" } }

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [], "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsInProgress", "mediaInsightsPipelineElementStatuses": [ { "type": "AmazonTranscribeProcessor", "status": "Stopped", "updatedOn": 1686184070655 }, { "type": "S3RecordingSink", "status": "InProgress", "updatedOn": 1686184070655 } ] "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string" } }

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [], "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsInProgress", "mediaInsightsPipelineElementStatuses": [ { "type": "AmazonTranscribeProcessor", "status": "Failed", "updatedOn": 1686184070655 }, { "type": "S3RecordingSink", "status": "InProgress", "updatedOn": 1686184070655 } ] "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string" } }

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [], "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsPermanentFailure", "mediaInsightsPipelineElementStatuses": [ { "type": "AmazonTranscribeProcessor", "status": "Failed", "updatedOn": 1686184070655 }, { "type": "S3RecordingSink", "status": "Stopped", "updatedOn": 1686184070655 } ] "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string", "failureReason": "string" } }

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [], "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsPermanentFailure", "mediaInsightsPipelineElementStatuses": [ { "type": "AmazonTranscribeProcessor", "status": "Stopped", "updatedOn": 1686184070655 }, { "type": "S3RecordingSink", "status": "Failed", "updatedOn": 1686184070655 } ] "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string", "failureReason": "string" } }

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [], "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsPaused", "mediaInsightsPipelineElementStatuses": [ { "type": "AmazonTranscribeProcessor", "status": "Paused", "updatedOn": 1686184070655 }, { "type": "S3RecordingSink", "status": "NotStarted", "updatedOn": 1686184070655 } ] "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string" } }

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [], "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsTemporaryFailure", "mediaInsightsPipelineElementStatuses": [ { "type": "AmazonTranscribeProcessor", "status": "TemporarilyFailed", "updatedOn": 1686184070655 }, { "type": "S3RecordingSink", "status": "NotStarted", "updatedOn": 1686184070655 } ] "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string" } }

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "region": "string", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [], "detail": { "version": "0", "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsStopped", "mediaInsightsPipelineElementStatuses": [ { "type": "AmazonTranscribeProcessor", "status": "Stopped", "updatedOn": 1686184070655 }, { "type": "S3RecordingSink", "status": "Stopped", "updatedOn": 1686184070655 } ] "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "voiceConnectorId": "string", "direction": "string" } }

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "time": "yyyy-mm-ddThh:mm:ssZ", "region": "string", "detail": { "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsInProgress", "version": "0", "mediaInsightsPipelineElementStatuses": [ { "type": "VoiceEnhancementSink", "status": "InProgress", "updatedOn": 1686184070655 }, { "type": "S3RecordingSink", "status": "Stopped", "updatedOn": 1686184070655 } ] } }

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "time": "yyyy-mm-ddThh:mm:ssZ", "region": "string", "detail": { "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsStopped", "version": "0", "mediaInsightsPipelineElementStatuses": [ { "type": "VoiceEnhancement", "status": "NotSupported", "updatedOn": 1686184070655, "statusDetail": "Unsupported recording length" }, { "type": "S3RecordingSink", "status": "Stopped", "updatedOn": 1686184070655 } ] } }

이 예제는 일반적인 이벤트 구조를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights State Change", "source": "aws.chime", "account": number, "time": "yyyy-mm-ddThh:mm:ssZ", "region": "string", "detail": { "mediaInsightsPipelineArn": "string", "eventType": "chime:MediaInsightsPermanentFailure", "version": "0", "mediaInsightsPipelineElementStatuses": [ { "type": "VoiceEnhancement", "status": "Failed", "updatedOn": 1686184070655 }, { "type": "S3RecordingSink", "status": "Stopped", "updatedOn": 1686184070655 } ] } }

실시간 경고

참고

Amazon Transcribe 및 Amazon Transcribe Call Analytics 프로세서만 실시간 알림을 지원합니다.

Amazon Chime SDK 통화 분석을 사용하면 개발자가 분석 세션 중에 프로세서를 통해 실시간 알림을 보내는 규칙을 설정할 수 있습니다. 경고는 상세 유형과 EventBridge 함께 Amazon으로 전송됩니다Media Insights Rules Matched. EventBridge Lambda, Amazon SQS 및 Amazon SNS와 같은 다운스트림 서비스와의 통합을 지원하여 최종 사용자를 위한 알림을 트리거하거나 다른 사용자 지정 비즈니스 로직을 시작할 수 있습니다.

실시간 알림은 MediaInsightsPipelineConfiguration에 대한 RealTimeAlertConfiguration 필드의 일부로 설정됩니다. Amazon Chime SDK 콘솔을 사용하여 필드를 구성하거나 또는 API를 호출할 수 있습니다. CreateMediaInsightsPipelineConfigurationUpdateMediaInsightsPipelineConfiguration

이 예제는 API를 통해 실시간 알림 구성을 생성하거나 업데이트하는 방법을 보여줍니다.

{ "MediaInsightsPipelineConfigurationName": "config_name", "ResourceAccessRoleArn": "arn:aws:iam::account_id:role/role_name", "RealTimeAlertConfiguration": { "Disabled": false, "Rules": [{ "Type": "KeywordMatch", "KeywordMatchConfiguration": { "RuleName": "rule_name_1", "Keywords": [ "hello", "thank you" ], "Negate": false } }, { "Type": "Sentiment", "RuleName": "rule_name_2", "SentimentType": "NEGATIVE", "TimePeriod": 60 }, { "Type": "IssueDetection", "RuleName": "rule_name_3" } ] }, "Elements": [{ "Type": "AmazonTranscribeCallAnalyticsProcessor", "AmazonTranscribeCallAnalyticsProcessorConfiguration": { "LanguageCode": "en-US" } }, { "Type": "KinesisDataStreamSink", "KinesisDataStreamSinkConfiguration": { "InsightsTarget": "arn:aws:kinesis:us-east-1:account_id:stream/stream_name" } } ] }

실시간 알림 구성의 각 규칙은 독립적으로 트리거됩니다. 여러 규칙 조건이 동시에 충족되는 경우 여러 EventBridge 알림을 받을 수 있습니다. 알림에 대한 규칙 목록을 만들려면 다음 규칙 유형 중에서 선택할 수 있습니다.

키워드 일치

발화 또는 트랜스크립트 이벤트에서 지정된 키워드 또는 구문 세트가 일치하면 알림을 보냅니다. 다음과 같은 경우 이벤트가 발생하도록 알림을 구성할 수 있습니다.

  • 지정된 키워드가 모두 음성으로 전달되며, Negatefalse로 설정됩니다.

  • Negatetrue로 설정된 경우 지정된 모든 키워드는 통화 전체에 걸쳐 음성으로 전달되지 않은 것으로 처리됩니다.

Amazon Transcribe 및 Amazon Transcribe 애널리틱스는 이 규칙 유형을 지원합니다.

감정 분석

특정 감정 유형이 일정 기간 동안 지속되면 알림을 보냅니다. Transcribe Call Analytics만 이 규칙을 지원합니다.

문제 감지

발화 이벤트에서 문제가 감지되면 경보를 보냅니다. Transcribe Call Analytics만 이 규칙 유형을 지원합니다.

다음 예제는 KeywordMatch 규칙에 대한 실시간 알림 이벤트를 보여줍니다.

{ "version": "0", "id": "string", "detail-type": "Media Insights Rules Matched", "source": "aws.chime", "account": number, "region": "us-east-1", "time": "yyyy-mm-ddThh:mm:ssZ", "resources": [], "detail": { "version": "0", "sourceMetadata": {} "ruleName": "string" "utteranceId": "string", "beginTimestamp": "yyyy-mm-ddThh:mm:ssZ", } }

일부 EventBridge 필드는 일치하는 규칙 유형에만 해당됩니다.

키워드 매칭 필드

utteranceId: Amazon Transcribe Call Analytics를 사용하는 경우 일치하는 키워드가 포함된 트랜스크립트의 ID입니다. 발화된 키워드 매칭에만 해당됩니다.

resultId: Amazon Transcribe를 사용하는 경우 일치하는 키워드가 포함된 트랜스크립트의 ID입니다. 발화된 키워드 매칭에만 해당됩니다.

beginTimestamp: 일치하는 키워드가 포함된 트랜스크립트의 시작 시간입니다. 발화된 키워드 매칭에만 해당됩니다.

감정 분석 필드

beginTimestamp: 일치하는 감정의 롤링 윈도우 시작 시간입니다.

endTimestamp: 일치하는 감정의 롤링 윈도우 종료 시간입니다.