呼叫分析處理器和輸出目的地 - Amazon Chime SDK

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

呼叫分析處理器和輸出目的地

每個媒體洞察管道組態只能指定唯一元素一次。所有處理器和接收器都必須位於相同的 AWS 帳戶,而且您必須在與您呼叫的端點相同的 AWS 區域中建立它們。例如,如果您使用 Amazon Chime SDK Media Pipelines 的us-east-1端點,則無法從 us-west-2區域傳遞 Kinesis Data Stream。

展開每個區段以取得每個目的地的相關資訊。

支援的接收器:KinesisDataStreamSink

您無法將此處理器與 Amazon Transcribe 處理器結合。如需 Amazon Transcribe Call Analytics 的詳細資訊,請參閱 Amazon Transcribe 開發人員指南 中的即時呼叫分析。如果您在通話PostCallAnalyticsSettings中包含 來啟用AmazonTranscribeCallAnalyticsProcessorConfigurationAPI通話後分析,當媒體洞察管道停止且處理完成時,您會在指定的 Amazon S3 位置收到成品。

注意

如果您暫停管道超過 35 秒,然後繼續,Amazon S3 儲存貯體IDs中具有不同工作階段的個別檔案中會產生呼叫後成品。

通話後成品包括分析JSON檔案和音訊記錄WAV或 Opus 檔案。作為中繼資料區段onetimeMetadata的一部分,用於編輯 (如果您啟用內容編輯) 和未編輯記錄檔案URL的 Amazon S3 儲存貯體會針對每個 Amazon Transcribe 呼叫分析後呼叫工作階段一次傳送至 Kinesis Data Stream。

使用 Amazon Transcribe 呼叫分析進行呼叫分析會從 Kinesis Video Stream 取得音訊資料輸入。

  • 支援的媒體編碼:PCM已簽署的 16 位元小端點音訊。

  • 支援的媒體取樣率:介於 8,000 Hz 和 48,000 Hz 之間。

StreamConfiguration Amazon Transcribe Analytics 程序的輸入:

  • 您必須KinesisVideoStreamArn為每個串流指定 。

  • (選用) 會在指定片段後使用 區塊KVSFragmentNumber啟動呼叫分析任務。如果未提供,則會在 Kinesis 影片串流上使用最新的區塊。

  • StreamChannelDefinition 定義正在說話的人。Amazon Transcribe 呼叫分析需要雙聲道音訊。當您呼叫 時,您必須指定哪個發言者位於哪個頻道上 CreateMediaInsightsPipeline API。例如,如果您的客服人員先發言,您可以將 ChannelId 設定為 0 以指示第一個頻道,並將 ParticipantRole 設定為 AGENT 以指示客服人員正在發言。

注意

當您使用 Voice Connector 建立MediaInsightsPipeline具有 Amazon Transcribe 呼叫分析處理器的 時,語音連接器帳戶腿部音訊為 AGENT,而PSTN腿部音訊為 CUSTOMER ParticipantRole

對於 Voice Connector SIPREC,我們依賴SIPREC中繼資料。在大多數情況下,具有最低詞彙值的串流標籤會被視為 AGENT

下列範例顯示一個雙通道音訊串流的 Kinesis Video Stream 輸入。

"StreamChannelDefinition" : { "NumberOfChannels" : 2 "ChannelDefinitions": [ { "ChannelId": 0, "ParticipantRole": "AGENT" }, { "ChannelId": 1, "ParticipantRole": "CUSTOMER" } ] }

相反地,下列範例顯示來自兩個不同 Kinesis Video 串流的兩個單輸入。

KVS-1: "StreamChannelDefinition" : { "NumberOfChannels" : 1 "ChannelDefinitions": [ { "ChannelId": 0, "ParticipantRole": "AGENT" } ] } KVS-2: "StreamChannelDefinition" : { "NumberOfChannels" : 1 "ChannelDefinitions": [ { "ChannelId": 1, "ParticipantRole": "CUSTOMER" } ] }

每個 Amazon Transcribe 記錄都包含 UtteranceEventCategoryEvent,但不能同時包含兩者。 CategoryEventsdetail-type TranscribeCallAnalyticsCategoryEvent

下列範例顯示 Amazon Transcribe 的一次性中繼資料輸出格式。

{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "CallAnalyticsMetadata", "mediaInsightsPipelineId": "string", "metadata": "string" // JSON encoded string of the metadata object } // metadata object { "voiceConnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string", "oneTimeMetadata": "string" // JSON encoded string of oneTimeMetadata object } // onetimeMetadata object { "inviteHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair "siprecMetadata": "string", // siprec metadata in XML "siprecMetadataJson": "string", // siprec metadata in JSON (converted from above XML) // If PostcallSettings are enabled for Amazon Transcribe Call Analytics "s3RecordingUrl": "string", "s3RecordingUrlRedacted": "string" } // inviteHeaders object { "string": "string" }

下列範例顯示 Amazon Transcribe Call Analytics 輸出格式。

{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "TranscribeCallAnalytics", "mediaInsightsPipelineId": "string", "metadata": { "voiceConnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string" }, "UtteranceEvent": { "UtteranceId": "string", "ParticipantRole": "string", "IsPartial": boolean, "BeginOffsetMillis": number, "EndOffsetMillis": number, "Transcript": "string", "Sentiment": "string", "Items": [{ "Content": "string", "Confidence": number, "VocabularyFilterMatch": boolean, "Stable": boolean, "ItemType": "string", "BeginOffsetMillis": number, "EndOffsetMillis": number, }, ] "Entities": [{ "Content": "string", "Confidence": number, "Category": "string", // Only PII is supported currently "Type": "string", "BeginOffset": number, "EndOffset": number, }, ], "IssuesDetected": [{ "CharacterOffsets": { "Begin": number, "End": number } }] }, "CategoryEvent": { "MatchedCategories": ["string"], "MatchedDetails": { "string": { "TimestampRanges": [{ "BeginOffsetMillis": number, "EndOffsetMillis": number }] } } } }

如果呼叫分析組態與 Amazon Chime SDK Voice Connector 相關聯,下列 Voice Connector Update 承載會在有 Voice Connector 串流更新 時傳送。

下列範例顯示 Amazon Transcribe 處理器和 Transcribe Call Analytics 處理器的更新中繼資料格式。

{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "CallAnalyticsMetadata", "callevent-type": "Update", "metadata": "string" // JSON encoded string of the metadata object } // metadata object { "voiceConnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string", "oneTimeMetadata": "string" // JSON encoded string of oneTimeMetadata object } // onetimeMetadata object { "sipHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair "siprecMetadata": "string", // siprec metadata in XML "siprecMetadataJson": "string" // siprec metadata in JSON (converted from above XML) } // sipHeaders object { "string": "string" }

下列範例顯示 Call Analytics Amazon S3 Recording 的更新中繼資料格式。

{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "Recording", "callevent-type": "Update", "metadata": "string" // JSON encoded string of the metadata object } // metadata object { "voiceConnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string", "oneTimeMetadata": "string" // JSON encoded in string of oneTimeMetadata object } // onetimeMetadata object { "sipHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair "siprecMetadata": "string", // siprec metadata in XML "siprecMetadataJson": "string" // siprec metadata in JSON (converted from above XML) } // sipHeaders object { "string": "string" }

下列範例顯示記錄 Alice 和 Bob 兩個人之間SIP通話的中繼資料。兩位參與者都會傳送和接收音訊和視訊。為了簡單起見,此範例只有 SIP和 的程式碼片段SDP,並且SRC記錄每個參與者的串流,SRS而不混合。

INVITE sip:recorder@example.com SIP/2.0 Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 To: <sip:recorder@example.com> Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a Session-ID: ab30317f1a784dc48ff824d0d3715d86 ;remote=00000000000000000000000000000000 CSeq: 101 INVITE Max-Forwards: 70 Require: siprec Accept: application/sdp, application/rs-metadata, application/rs-metadata-request Contact: <sip:2000@src.example.com>;+sip.src Content-Type: multipart/mixed;boundary=boundary Content-Length: [length] Content-Type: application/SDP ... m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=label:96 a=sendonly ... m=video 49174 RTP/AVPF 96 a=rtpmap:96 H.264/90000 a=label:97 a=sendonly ... m=audio 51372 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=label:98 a=sendonly ... m=video 49176 RTP/AVPF 96 a=rtpmap:96 H.264/90000 a=label:99 a=sendonly .... Content-Type: application/rs-metadata Content-Disposition: recording-session <?xml version="1.0" encoding="UTF-8"?> <recording xmlns='urn:ietf:params:xml:ns:recording:1'> <datamode>complete</datamode> <group group_id="7+OTCyoxTmqmqyA/1weDAg=="> <associate-time>2010-12-16T23:41:07Z</associate-time> <!-- Standardized extension --> <call-center xmlns='urn:ietf:params:xml:ns:callcenter'> <supervisor>sip:alice@atlanta.com</supervisor> </call-center> <mydata xmlns='http://example.com/my'> <structure>structure!</structure> <whatever>structure</whatever> </mydata> </group> <session session_id="hVpd7YQgRW2nD22h7q60JQ=="> <sipSessionID>ab30317f1a784dc48ff824d0d3715d86; remote=47755a9de7794ba387653f2099600ef2</sipSessionID> <group-ref>7+OTCyoxTmqmqyA/1weDAg== </group-ref> <!-- Standardized extension --> <mydata xmlns='http://example.com/my'> <structure>FOO!</structure> <whatever>bar</whatever> </mydata> </session> <participant participant_id="srfBElmCRp2QB23b7Mpk0w=="> <nameID aor="sip:alice@atlanta.com"> <naSRCme xml:lang="it">Alice</name> </nameID> <!-- Standardized extension --> <mydata xmlns='http://example.com/my'> <structure>FOO!</structure> <whatever>bar</whatever> </mydata> </participant> <participant participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> <nameID aor="sip:bob@biloxy.com"> <name xml:lang="it">Bob</name> </nameID> <!-- Standardized extension --> <mydata xmlns='http://example.com/my'> <structure>FOO!</structure> <whatever>bar</whatever> </mydata> </participant> <stream stream_id="UAAMm5GRQKSCMVvLyl4rFw==" session_id="hVpd7YQgRW2nD22h7q60JQ=="> <label>96</label> </stream> <stream stream_id="i1Pz3to5hGk8fuXl+PbwCw==" session_id="hVpd7YQgRW2nD22h7q60JQ=="> <label>97</label> </stream> <stream stream_id="8zc6e0lYTlWIINA6GR+3ag==" session_id="hVpd7YQgRW2nD22h7q60JQ=="> <label>98</label> </stream> <stream stream_id="EiXGlc+4TruqqoDaNE76ag==" session_id="hVpd7YQgRW2nD22h7q60JQ=="> <label>99</label> </stream> <sessionrecordingassoc session_id="hVpd7YQgRW2nD22h7q60JQ=="> <associate-time>2010-12-16T23:41:07Z</associate-time> </sessionrecordingassoc> <participantsessionassoc participant_id="srfBElmCRp2QB23b7Mpk0w==" session_id="hVpd7YQgRW2nD22h7q60JQ=="> <associate-time>2010-12-16T23:41:07Z</associate-time> </participantsessionassoc> <participantsessionassoc participant_id="zSfPoSvdSDCmU3A3TRDxAw==" session_id="hVpd7YQgRW2nD22h7q60JQ=="> <associate-time>2010-12-16T23:41:07Z</associate-time> </participantsessionassoc> <participantstreamassoc participant_id="srfBElmCRp2QB23b7Mpk0w=="> <send>i1Pz3to5hGk8fuXl+PbwCw==</send> <send>UAAMm5GRQKSCMVvLyl4rFw==</send> <recv>8zc6e0lYTlWIINA6GR+3ag==</recv> <recv>EiXGlc+4TruqqoDaNE76ag==</recv> </participantstreamassoc> <participantstreamassoc participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> <send>8zc6e0lYTlWIINA6GR+3ag==</send> <send>EiXGlc+4TruqqoDaNE76ag==</send> <recv>UAAMm5GRQKSCMVvLyl4rFw==</recv> <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv> </participantstreamassoc> </recording>

下列範例顯示當一個呼叫參與者保留另一個呼叫參與者時,已更新的中繼資料。在此情況下, participant_id srfBElmCRp2QB23b7Mpk0w==只會接收媒體串流,不會傳送任何媒體,因此會省略 sendXML元素。相反地, participant_id zSfPoSvdSDCmU3A3TRDxAw== 會將媒體傳送至其他參與者,但不接收來自該參與者的媒體,因此會省略 recvXML元素。

INVITE sip:recorder@example.com SIP/2.0 Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 To: <sip:recorder@example.com> Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a Session-ID: ab30317f1a784dc48ff824d0d3715d86 ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 CSeq: 101 INVITE Max-Forwards: 70 Require: siprec Accept: application/sdp, application/rs-metadata, application/rs-metadata-request Contact: <sip:2000@src.example.com>;+sip.src Content-Type: multipart/mixed;boundary=foobar Content-Length: [length] Content-Type: application/SDP ... m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=label:96 a=sendonly ... m=video 49174 RTP/AVPF 96 a=rtpmap:96 H.264/90000 a=label:97 a=sendonly ... m=audio 51372 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=label:98 a=sendonly ... m=video 49176 RTP/AVPF 96 a=rtpmap:96 H.264/90000 a=label:99 a=sendonly .... Content-Type: application/rs-metadata Content-Disposition: recording-session <?xml version="1.0" encoding="UTF-8"?> <recording xmlns='urn:ietf:params:xml:ns:recording:1'> <datamode>partial</datamode> <participantstreamassoc participant_id="srfBElmCRp2QB23b7Mpk0w=="> <recv>8zc6e0lYTlWIINA6GR+3ag==</recv> <recv>EiXGlc+4TruqqoDaNE76ag==</recv> </participantstreamassoc> <participantstreamassoc participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> <send>8zc6e0lYTlWIINA6GR+3ag==</send> <send>EiXGlc+4TruqqoDaNE76ag==</send> </participantstreamassoc> </recording>

下列範例顯示通話恢復時的中繼資料更新。承載現在具有 sendrecvXML元素。

INVITE sip:recorder@example.com SIP/2.0 Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 To: <sip:recorder@example.com> Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a Session-ID: ab30317f1a784dc48ff824d0d3715d86 ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 CSeq: 101 INVITE Max-Forwards: 70 Require: siprec Accept: application/sdp, application/rs-metadata, application/rs-metadata-request Contact: <sip:2000@src.example.com>;+sip.src Content-Type: multipart/mixed;boundary=foobar Content-Length: [length] Content-Type: application/SDP ... m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=label:96 a=sendonly ... m=video 49174 RTP/AVPF 96 a=rtpmap:96 H.264/90000 a=label:97 a=sendonly ... m=audio 51372 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=label:98 a=sendonly ... m=video 49176 RTP/AVPF 96 a=rtpmap:96 H.264/90000 a=label:99 a=sendonly .... Content-Type: application/rs-metadata Content-Disposition: recording-session <?xml version="1.0" encoding="UTF-8"?> <recording xmlns='urn:ietf:params:xml:ns:recording:1'> <datamode>partial</datamode> <participantstreamassoc participant_id="srfBElmCRp2QB23b7Mpk0w=="> <send>i1Pz3to5hGk8fuXl+PbwCw==</send> <send>UAAMm5GRQKSCMVvLyl4rFw==</send> <recv>8zc6e0lYTlWIINA6GR+3ag==</recv> <recv>EiXGlc+4TruqqoDaNE76ag==</recv> </participantstreamassoc> <participantstreamassoc participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> <send>8zc6e0lYTlWIINA6GR+3ag==</send> <send>EiXGlc+4TruqqoDaNE76ag==</send> <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv> <recv>UAAMm5GRQKSCMVvLyl4rFw==</recv> </participantstreamassoc> </recording>

支援的接收器:KinesisDataStreamSink

您無法將此處理器與 Amazon Transcribe 通話分析結合。如需 Amazon Transcribe 輸入和輸出的詳細資訊,請參閱 Amazon Transcribe 開發人員指南 中的 Transcribe 串流音訊Amazon Transcribe

使用 Amazon Transcribe 的通話分析工作階段會從 Kinesis Video Stream 取得音訊資料輸入。

  • 支援的 MediaEncoding:PCM已簽署的 16 位元小端點音訊。

  • 支援的 MediaSampleRate 取樣率:介於 8,000 Hz 和 48,000 Hz 之間。

StreamConfiguration Amazon Transcribe 處理器的輸入:

  • 您必須KinesisVideoStreamArn為每個串流指定 。

  • (選用) KVS FragmentNumber - 在特定片段之後使用 區塊啟動呼叫分析任務。如果未提供,則會在 Kinesis Video Stream 上使用最新的可用區塊。

  • StreamChannelDefinition Amazon Transcribe 目前支援兩個頻道的音訊。您必須在執行期 NumberOfChannels中指定 StreamChannelDefinition。此外,ChannelId如果您在兩個不同的頻道中傳送單聲道音訊,則必須傳遞 。在您的文字記錄中,聲道會指定標籤 ch_0ch_1。下列範例顯示單一音訊頻道串流的KVS輸入。

"StreamChannelDefinition" : {" NumberOfChannels" : 1 }

下列範例顯示KVS兩個不同串流中兩個單音音訊輸入的輸入。

KVS-1: "StreamChannelDefinition" : { "NumberOfChannels" : 1 "ChannelDefinitions": [ { "ChannelId": 0 } ] } KVS-2: "StreamChannelDefinition" : { "NumberOfChannels" : 1 "ChannelDefinitions": [ { "ChannelId": 1 } ] }
注意

對於MediaInsightsPipeline使用 Amazon Transcribe 處理器建立的語音連接器,語音連接器帳戶腿部音訊會指派給 channel-0,PSTN腿部音訊則指派給 channel-1

對於 Voice Connector SIPREC,我們依賴SIPREC中繼資料。在大多數情況下,具有最低詞彙值的串流標籤會指派給 channel-0

對於 Amazon Transcribe 和 Amazon Transcribe 呼叫分析處理器,如果您傳遞兩個 Kinesis Video 串流,且每個串流都包含單一音訊通道,我們會在處理 Transcribe 或 Transcribe 呼叫分析資料之前,將兩個頻道交錯至單一音訊串流。

下列範例顯示 Amazon Transcribe 的一次性中繼資料輸出格式。

{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "CallAnalyticsMetadata", "mediaInsightsPipelineId": "string", "metadata": "string" // JSON encoded string of the metadata object } // metadata object { "voiceConnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string", "oneTimeMetadata": "string" // JSON encoded string of oneTimeMetadata object } // onetimeMetadata object { "inviteHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair "siprecMetadata": "string", // siprec metadata in XML "siprecMetadataJson": "string" // siprec metadata in JSON (converted from above XML) } // inviteHeaders object { "string": "string" }

下列範例顯示 Amazon Transcribe 輸出格式。

{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "Transcribe", "mediaInsightsPipelineId": "string", "metadata": { "voiceconnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string" } "TranscriptEvent": { "Transcript": { "Results": [{ "Alternatives": [{ "Entities": [{ "Category": "string", "Confidence": number, "Content": "string", "EndTime": number, "StartTime": number, "Type": "string" }], "Items": [{ "Confidence": number, "Content": "string", "EndTime": number, "Speaker": "string", "Stable": boolean, "StartTime": number, "Type": "string", "VocabularyFilterMatch": boolean }], "Transcript": "string" }], "ChannelId": "string", "EndTime": number, "IsPartial": boolean, "LanguageCode": "string", "LanguageIdentification": [{ "LanguageCode": "string", "Score": number }], "ResultId": "string", "StartTime": number }] } } }

支援的接收器:KinesisDataStreamSinkSnsTopicSinkSqsQueueSinkLambdaFunctionSink

您可以將此處理器與 Amazon Transcribe 通話分析處理器、Amazon Transcribe 處理器或通話記錄結合。您必須使用 StartSpeakerSearchTaskStartVoiceToneAnalysisTask APIs 來叫用語音分析處理器。如需使用語音分析的詳細資訊,請參閱使用 Amazon Chime SDK語音分析。

呼叫分析產生的 Kinesis Data Stream (KDS) 記錄包括媒體管道 ID、詳細資訊類型、中繼資料和處理器特定區段。如需從 Kinesis Data Stream 消耗資料的相關資訊,請參閱 Amazon Kinesis Streams 開發人員指南中的從 Amazon Kinesis Data Streams 讀取資料Amazon Kinesis 若要使用此接收器建立組態,您必須具有指定串流的kinesis:DescribeStream許可。

中繼資料

產生的KDS記錄metadata區段包含 CallAnalyticsRuntimeMetadata期間在 中指定的任何鍵值對 CreateMediaInsightsPipeline API 呼叫。如果語音連接器啟動呼叫分析工作階段,中繼資料區段會自動填入下列參數:

  • transactionId

  • fromNumber

  • toNumber

  • callId

  • voiceConnectorId

  • direction

除了上述參數之外,語音連接器起始呼叫分析工作階段的中繼資料區段也會填入包含下列項目oneTimeMetadata的欄位:

  • inviteHeaders

  • siprecMetadata

這只會在工作階段開始時發佈至 Kinesis Data Streams 一次,且具有 detail-typeCallAnalyticsMetadata

您可以在 MediaInsightsRuntimeMetadata 中傳遞每個 的唯一識別符 CreateMediaInsightsPipeline API 呼叫,以便您可以唯一地識別傳遞給 Kinesis Data Stream 的每個記錄的來源。

通話分析記錄會從KVS串流讀取音訊,將其記錄為音訊檔案,並將檔案上傳至指定的 Amazon S3 儲存貯體。記錄通話分析之後, 也會將通話中繼資料連同檔案位置傳送至 KDS。如果您啟用資料倉儲,呼叫中繼資料 (包括SIPREC使用的SIPREC中繼資料) 會交付至一組 Parquet 資料表中的資料倉儲,供您查詢。

與其他呼叫分析處理器一樣,您需要先為管道建立組態。您可以使用 Amazon Chime SDK主控台或 CLI來建立組態。然後,您可以使用 CLI建立管道。如需使用主控台建立錄製組態的詳細資訊,請參閱本節建立通話分析組態前面的 。如需使用錄製工作流程的詳細資訊,請參閱本節了解記錄通話的工作流程前面的 。

使用 CLI建立組態

執行以下命令:

aws chime-sdk-media-pipeline create-media-insights-pipeline-configuration --cli-input-json file://configuration.json

下列範例顯示僅啟用錄製的組態JSON檔案:

{ "MediaInsightsPipelineConfigurationName": configuration_name, "ResourceAccessRoleArn": role_arn, "Elements": [ { "KinesisDataStreamSinkConfiguration": { "InsightsTarget": KDS_arn //Where recording live metadata will be delivered. }, "Type": "KinesisDataStreamSink" }, { "S3RecordingSinkConfiguration": { "Destination": "arn:aws:s3:::kvs-recording-testing", "RecordingFileFormat": file_format // Specify "Opus" or "WAV" as the recording file format. }, "Type": "S3RecordingSink" } ] }

請記得以下事項:

  • 若要透過 Kinesis Video Streams 啟用呼叫記錄,音訊應PCM簽署 16 位元小端點。取樣率必須為 8KHz。

  • 建置器必須為 Kinesis Video Stream 設定足夠長的資料保留期,以確保透過呼叫分析保留片段和消耗品。

  • 如果您啟用呼叫錄製,無論是單獨或與其他處理器結合,都必須提供兩個 Kinesis Video Stream ARNs進行錄製。通話記錄不支援單一立體聲音訊輸入。

下列範例顯示 Amazon S3 記錄的中繼資料輸出格式。

{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "Recording", "mediaInsightsPipelineId": "string", "s3MediaObjectConsoleUrl": "string", "recordingDurationSeconds": "number", "metadata": "string" // JSON encoded string of the metadata object } // metadata object { "voiceConnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string", "startTime": "string", // ISO8601 format "endTime": "string", // ISO8601 format "oneTimeMetadata": "string" // JSON encoded in string of oneTimeMetadata object } // onetimeMetadata object { "sipHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair "siprecMetadata": "string", // siprec metadata in XML "siprecMetadataJson": "string" // siprec metadata in JSON (converted from above XML) } // sipHeaders object { "string": "string" }

若要啟用語音增強功能,請在 中包含 VoiceEnhancementSinkConfiguration元素 CreateMediaInsightsPipelineConfiguration API 呼叫。

此範例顯示典型的 元素。

{ "Type":"VoiceEnhancementSink", "VoiceEnhancementSinkConfiguration": { "Disabled": Boolean (string) // FALSE ==> Voice Enhancement will be performed }

若要更新組態,請將 VoiceEnhancementSinkConfiguration元素新增至 UpdateMediaInsightsPipelineConfiguration API 呼叫。當您這樣做時, GetMediaInsightsPipelineConfiguration API 會在結果中包含 VoiceEnhancementSinkConfiguration元素。

此範例請求說明如何啟用語音增強功能和 Amazon S3 錄製。

POST /media-insights-pipeline-configurations HTTP/1.1 Content-type: application/json { "MediaInsightsPipelineConfigurationName":"media_insights_configuration_name", "ResourceAccessRoleArn":"arn:aws:iam::account_id:role/resource_access_role", "Elements":[ { "Type":"S3RecordingSink", "S3RecordingSinkConfiguration":{ "Destination":"arn:aws:s3:::input_bucket_path", "RecordingFileFormat":"Wav" } }, { "Type":"VoiceEnhancementSink", "VoiceEnhancementSinkConfiguration": { "disabled":"false" } } ], "ClientRequestToken":"client_request_token" }
注意

VoiceEnhancementSink 元素一律需要呼叫分析組態中的 S3RecordingSink元素。