Panggilan prosesor analitik dan tujuan keluaran - Amazon Chime SDK

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Panggilan prosesor analitik dan tujuan keluaran

Anda hanya dapat menentukan elemen unik satu kali per konfigurasi pipeline wawasan media. Semua prosesor dan sink harus berada di AWS akun yang sama, dan Anda harus membuatnya di AWS Wilayah yang sama dengan titik akhir yang Anda panggil. Misalnya, jika Anda menggunakan us-east-1 endpoint untuk Amazon Chime SDK Media Pipelines, Anda tidak dapat meneruskan Kinesis Data Stream dari wilayah tersebut. us-west-2

Perluas setiap bagian untuk informasi tentang setiap tujuan.

Wastafel yang didukung:KinesisDataStreamSink.

Anda tidak dapat menggabungkan prosesor ini dengan prosesor Amazon Transcribe. Untuk informasi selengkapnya tentang Amazon Transcribe Call Analytics, lihat Analitik panggilan real-time, di Panduan Pengembang Amazon Transcribe. Jika Anda mengaktifkan analitik posting panggilan dengan memasukkan PostCallAnalyticsSettings dalam panggilan AmazonTranscribeCallAnalyticsProcessorConfiguration API, Anda akan menerima artefak di lokasi Amazon S3 yang ditentukan saat pipeline wawasan media berhenti dan pemrosesan selesai.

catatan

Jika Anda menjeda pipeline selama lebih dari 35 detik dan kemudian melanjutkannya, artefak pasca-panggilan dibuat dalam file terpisah dengan ID sesi berbeda di bucket Amazon S3.

Artefak pasca-panggilan termasuk file JSON analitik dan perekaman audio WAV atau file Opus. URL bucket Amazon S3 untuk disunting (jika Anda mengaktifkan redaksi konten) dan file rekaman yang tidak disunting dikirim ke Kinesis Data Stream satu kali untuk setiap sesi Post Call analytics panggilan Amazon Transcribe sebagai bagian dari bagian metadata. onetimeMetadata

Analisis panggilan dengan analitik panggilan Amazon Transcribe mengambil input data audio dari Kinesis Video Stream.

  • Pengkodean media yang didukung: PCM menandatangani audio endian kecil 16-bit.

  • Tingkat sampel media yang didukung: Antara 8.000 Hz dan 48.000 Hz.

StreamConfigurationmasukan untuk proses Amazon Transcribe Analytics:

  • Anda harus menentukan KinesisVideoStreamArn untuk setiap aliran.

  • (Opsional) KVS FragmentNumber memulai pekerjaan analitik panggilan dengan potongan setelah fragmen tertentu. Jika tidak disediakan, ia menggunakan potongan terbaru pada aliran video Kinesis.

  • StreamChannelDefinitionMendefinisikan siapa yang berbicara. Analisis panggilan Amazon Transcribe memerlukan audio dua saluran. Anda harus menentukan speaker mana yang ada di saluran mana saat Anda memanggil CreateMediaInsightsPipelineAPI. Misalnya, jika agen Anda berbicara terlebih dahulu, Anda mengatur ChannelId 0 to untuk menunjukkan saluran pertama, dan ParticipantRole AGENT untuk menunjukkan bahwa agen berbicara.

catatan

Bila Anda menggunakan Konektor Suara untuk membuat MediaInsightsPipeline dengan prosesor analitik panggilan Amazon Transcribe, audio kaki akun Voice Connector adalah AGENT dan audio kaki PSTN adalah untuk. CUSTOMER ParticipantRole

Untuk Konektor Suara SIPREC, kami mengandalkan metadata SIPREC. Dalam kebanyakan kasus, label aliran dengan nilai leksikografi terendah dianggap sebagai. AGENT

Contoh berikut menunjukkan input Kinesis Video Stream untuk satu aliran audio saluran ganda.

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

Sebaliknya, contoh berikut menunjukkan dua input mono dari dua aliran Video Kinesis yang berbeda.

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

Setiap catatan Amazon Transcribe berisi UtteranceEvent atau aCategoryEvent, tetapi tidak keduanya. CategoryEventsmemiliki detail-type dariTranscribeCallAnalyticsCategoryEvent.

Contoh berikut menunjukkan format keluaran metadata satu kali untuk 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" }

Contoh berikut menunjukkan format output 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 }] } } } }

Jika konfigurasi analitik panggilan dikaitkan dengan Konektor Suara Amazon Chime SDK, payload Pembaruan Konektor Suara berikut akan dikirim saat ada pembaruan streaming Konektor Suara.

Contoh berikut menunjukkan format metadata pembaruan untuk prosesor Amazon Transcribe dan prosesor 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" }

Contoh berikut menunjukkan format metadata pembaruan untuk 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" }

Contoh berikut menunjukkan metadata untuk merekam panggilan SIP antara dua orang, Alice dan Bob. Kedua peserta mengirim dan menerima audio dan video. Untuk kesederhanaan, contoh hanya memiliki cuplikan SIP dan SDP, dan SRC merekam aliran setiap peserta ke SRS tanpa pencampuran.

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>

Contoh berikut menunjukkan metadata yang diperbarui ketika satu peserta panggilan menunda yang lain. Dalam hal ini, participant_id srfBElmCRp2QB23b7Mpk0w== hanya menerima aliran media dan tidak mengirim media apa pun, sehingga elemen send XMLnya dihilangkan. Sebaliknya, participant_id zSfPoSvdSDCmU3A3TRDxAw== mengirim media ke, tetapi tidak menerima media dari, peserta lain, sehingga elemen recv XMLnya dihilangkan.

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>

Contoh berikut menunjukkan pembaruan metadata saat panggilan dilanjutkan. Payload sekarang memiliki elemen send dan recv XMLnya.

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>

Wastafel yang didukung:KinesisDataStreamSink.

Anda tidak dapat menggabungkan prosesor ini dengan analitik panggilan Amazon Transcribe. Untuk informasi selengkapnya tentang input ke, dan output, Amazon Transcribe, lihat Transcribe streaming audio di Panduan Pengembang Amazon Transcribe.

Sesi analitik panggilan dengan Amazon Transcribe mengambil input data audio dari Kinesis Video Stream.

  • Didukung MediaEncoding: PCM menandatangani audio endian kecil 16-bit.

  • Tingkat MediaSampleRate sampel yang didukung: Antara 8.000 Hz dan 48.000 Hz.

StreamConfigurationmasukan untuk prosesor Amazon Transcribe:

  • Anda harus menentukan KinesisVideoStreamArn untuk setiap aliran.

  • (Opsional) KVS FragmentNumber - Memulai pekerjaan analitik panggilan dengan potongan setelah fragmen tertentu. Jika tidak disediakan, itu akan menggunakan potongan terbaru yang tersedia di Kinesis Video Stream.

  • StreamChannelDefinitionAmazon Transcribe saat ini mendukung audio dengan dua saluran. Anda harus menentukan NumberOfChannels di runtimeStreamChannelDefinition. Selain itu, Anda harus lulus ChannelId jika Anda mengirim audio mono dalam dua saluran terpisah. Dalam transkrip Anda, saluran diberi label ch_0 danch_1. Contoh berikut menunjukkan input KVS untuk satu aliran saluran audio mono.

"StreamChannelDefinition" : {" NumberOfChannels" : 1 }

Contoh berikut menunjukkan input KVS untuk dua input audio mono dalam dua aliran yang berbeda.

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

Untuk Konektor Suara yang dibuat MediaInsightsPipeline dengan prosesor Amazon Transcribe, audio kaki akun Voice Connector ditetapkan channel-0 dan audio kaki PSTN ke. channel-1

Untuk Konektor Suara SIPREC, kami mengandalkan metadata SIPREC. Dalam kebanyakan kasus, label aliran dengan nilai leksikografi terendah ditetapkan. channel-0

Untuk prosesor analitik panggilan Amazon Transcribe dan Amazon Transcribe, jika Anda meneruskan dua aliran Video Kinesis, dan setiap aliran berisi saluran audio mono, kami akan memasukkan kedua saluran ke satu aliran audio sebelum memproses data analitik panggilan Transcribe atau Transcribe.

Contoh berikut menunjukkan format keluaran metadata satu kali untuk 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" }

Contoh berikut menunjukkan format output 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 }] } } }

Wastafel yang didukung:KinesisDataStreamSink,SqsQueueSink,SnsTopicSink, danLambdaFunctionSink.

Anda dapat menggabungkan prosesor ini dengan prosesor analitik panggilan Amazon Transcribe, prosesor Amazon Transcribe, atau perekaman panggilan. Anda harus menggunakan StartSpeakerSearchTaskatau StartVoiceToneAnalysisTaskAPI untuk memanggil prosesor analitik suara. Untuk informasi selengkapnya tentang penggunaan analitik suara, lihat Menggunakan analitik suara Amazon Chime SDK.

Catatan Kinesis Data Stream (KDS) yang dihasilkan oleh analitik panggilan mencakup ID pipa media, tipe detail, metadata, dan bagian khusus prosesor. Untuk informasi tentang konsumsi data dari Aliran Data Kinesis, lihat Membaca Data dari Amazon Kinesis Data Streams, dalam panduan Pengembang Amazon Kinesis Streams. Untuk membuat konfigurasi dengan wastafel ini, Anda harus memiliki kinesis:DescribeStream izin pada aliran yang ditentukan.

Metadata

metadataBagian dari catatan KDS yang dihasilkan berisi setiap pasangan nilai kunci yang ditentukan CallAnalyticsRuntimeMetadata selama panggilan API. CreateMediaInsightsPipeline Jika sesi analitik panggilan dimulai oleh Konektor Suara, bagian metadata secara otomatis diisi dengan parameter berikut:

  • transactionId

  • fromNumber

  • toNumber

  • callId

  • voiceConnectorId

  • direction

Selain parameter yang ditunjukkan di atas, bagian metadata untuk sesi analitik panggilan yang dimulai Konektor Suara akan diisi dengan bidang yang oneTimeMetadata berisi:

  • inviteHeaders

  • siprecMetadata

Ini dipublikasikan ke Kinesis Data Streams hanya sekali di awal sesi dan detail-type memiliki a. CallAnalyticsMetadata

Anda dapat meneruskan pengenal unik di MediaInsightsRuntimeMetadata setiap panggilan CreateMediaInsightsPipelineAPI sehingga Anda dapat secara unik mengidentifikasi sumber setiap rekaman yang dikirimkan ke Aliran Data Kinesis Anda.

Rekaman analitik panggilan membaca audio dari aliran KVS, merekamnya sebagai file audio, dan mengunggah file ke Bucket Amazon S3 yang ditentukan. Setelah merekam analitik panggilan juga mengirimkan metadata panggilan bersama dengan lokasi file ke KDS. Jika Anda mengaktifkan gudang data, metadata panggilan (termasuk metadata SIPREC jika SIPREC digunakan) dikirim ke gudang data dalam satu set tabel Parket yang dapat Anda kueri.

Seperti prosesor analitik panggilan lainnya, Anda harus terlebih dahulu membuat konfigurasi untuk pipeline. Anda dapat menggunakan Amazon Chime SDK Console atau CLI untuk membuat konfigurasi. Anda kemudian menggunakan CLI untuk membuat pipeline. Untuk informasi lebih lanjut tentang menggunakan konsol untuk membuat konfigurasi perekaman, lihatMembuat konfigurasi analitik panggilan, sebelumnya di bagian ini. Untuk informasi selengkapnya tentang penggunaan alur kerja perekaman, lihatAlur kerja untuk merekam panggilan, sebelumnya di bagian ini.

Untuk menggunakan CLI untuk membuat konfigurasi

Jalankan perintah berikut:

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

Contoh berikut menunjukkan file JSON konfigurasi dengan hanya perekaman diaktifkan:

{ "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" } ] }

Ingat hal berikut:

  • Untuk mengaktifkan perekaman panggilan melalui Kinesis Video Streams, audio harus ditandatangani PCM 16-bit little-endian. Tingkat sampel harus 8kHz.

  • Builder harus menetapkan periode retensi data yang cukup lama untuk Kinesis Video Stream untuk memastikan fragmen dipertahankan dan dikonsumsi oleh analitik panggilan.

  • Jika Anda mengaktifkan perekaman panggilan, baik dengan sendirinya atau dalam kombinasi dengan prosesor lain, Anda harus menyediakan dua ARN Kinesis Video Stream untuk merekam. Rekaman panggilan tidak mendukung input audio stereo tunggal.

Contoh berikut menunjukkan format keluaran metadata untuk analisis panggilan perekaman 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" }

Untuk mengaktifkan peningkatan suara, sertakan VoiceEnhancementSinkConfiguration elemen dalam panggilan CreateMediaInsightsPipelineConfigurationAPI.

Contoh ini menunjukkan elemen khas.

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

Untuk memperbarui konfigurasi, tambahkan VoiceEnhancementSinkConfiguration elemen ke panggilan UpdateMediaInsightsPipelineConfigurationAPI. Ketika Anda melakukannya, GetMediaInsightsPipelineConfigurationAPI menyertakan VoiceEnhancementSinkConfiguration elemen dalam hasil.

Permintaan contoh ini menunjukkan cara mengaktifkan Peningkatan Suara dan perekaman 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" }
catatan

VoiceEnhancementSinkElemen selalu membutuhkan S3RecordingSink elemen dalam konfigurasi analitik panggilan.