

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

# 事件串流編碼
<a name="event-stream-encoding"></a>

事件串流編碼會在用戶端與伺服器之間使用訊息來提供雙向通訊。傳送至 Amazon Lex V2 串流服務的資料影格會以此格式編碼。來自 Amazon Lex V2 的回應也會使用此編碼。

每則訊息包含兩個部分：序言和資料。前導區段包含訊息的總位元組長度，以及所有標頭的合併位元組長度。資料區段包含標頭和承載。

每個區段以 4 位元組由大到小的整數 CRC 檢查總和結束。訊息 CRC 檢查總和包含前導區段和資料區段。Amazon Lex V2 使用 CRC32 （通常稱為 GZIP CRC32) 來計算這兩個 CRCs。如需 CRC32 的詳細資訊，請參閱 [https://www.ietf.org/rfc/rfc1952.txt](https://www.ietf.org/rfc/rfc1952.txt)。

總訊息額外負荷 (包括序言和兩個檢查總和) 為 16 位元組。

下圖顯示構成訊息和標題的元件。每則訊息有多個標頭。

![](http://docs.aws.amazon.com/zh_tw/lexv2/latest/dg/images/frame-diagram-frame-overview.png)


每則訊息都包含下列元件：
+ **序言：** 一律為 8 位元組的固定大小，兩個欄位每一個為 4 位元組。
  + *前 4 位元組：*總位元組長度。這是整個訊息的大端序整數位元組長度，包括 4 位元組長度欄位本身。
  + *後 4 位元組：*標頭位元組長度。這是訊息標頭部分的大端序整數位元組長度，不含 4 位元組長度欄位本身。
+ **序言 CRC**：訊息序言部分的 4 位元組 CRC 檢查總和，不含 CRC 本身。前置詞具有與訊息 CRC 不同的 CRC，以確保 Amazon Lex V2 可以立即偵測損毀的位元組長度資訊，而不會導致緩衝區溢位等錯誤。
+ **標頭：**註釋訊息的中繼資料，例如訊息類型、內容類型等等。訊息有多個標頭。標頭是索引鍵值組，其中索引鍵是 UTF-8 字串。標頭可以任何順序出現在訊息的標頭部分中，而且任何指定標頭只能出現一次。如需必要標頭類型，請參閱以下各節。
+ **承載：**傳送至 Amazon Lex 的音訊或文字內容。
+ **訊息 CRC：**從訊息開頭到檢查總和開頭的 4 位元組 CRC 檢查總和。這包括訊息中除了 CRC 本身以外的所有內容。

每個標頭都包含下列元件。每個框架有多個標頭。
+ **標頭名稱位元組長度：**標頭名稱的位元組長度。
+ **標頭名稱：**指出標頭類型的標頭名稱。如需有效值，請參閱下列框架描述。
+ **標頭值類型：**指出標頭值類型的列舉。
+ **數值字串位元組長度：** 標頭值字串的位元組長度。
+ **標頭值：**標頭字串的值。此欄位的有效值取決於標頭類型。如需有效值，請參閱下列框架描述。