開始串流至機器人 - Amazon Lex

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

開始串流至機器人

您可以使用此StartConversation作業在應用程式中的使用者和 Amazon Lex V2 機器人之間啟動串流。應用程式的POST要求會在您的應用程式和 Amazon Lex V2 機器人之間建立連線。這可讓您的應用程式和機器人透過事件開始互相交換資訊。

只有下列 SDK 才支援此StartConversation作業:

您的應用程式必須傳送至 Amazon Lex V2 機器人的第一個事件是 ConfigurationEvent. 此事件包含回應類型格式等資訊。下列是您可以在組態事件中使用的參數:

  • responseContentType— 決定機器人是否以文字或語音回應使用者輸入。

  • 工作階段狀態 — 與機器人串流工作階段相關的資訊,例如預先決定的意圖或對話狀態。

  • 歡迎訊息 — 指定在使用者與機器人交談開始時為使用者播放的歡迎訊息。這些消息在用戶提供任何輸入之前播放。若要啟用歡迎使用訊息,您也必須指定sessionStatedialogAction參數的值。

  • 停用播放 — 決定機器人在開始接聽呼叫者輸入之前是否應等待來自用戶端的提示。默認情況下,播放被激活,因此該字段的值為false

  • requestAttributes — 提供請求的其他資訊。

如需如何為上述參數指定值的詳細資訊,請參閱StartConversation作業的資ConfigurationEvent料類型。

機器人與應用程式之間的每個串流只能有一個設定事件。在您的應用程式傳送設定事件之後,機器人可以從您的應用程式接收其他通訊。

如果您已指定使用者使用音訊與 Amazon Lex V2 機器人通訊,您的應用程式可以在該交談期間將下列事件傳送給機器人:

  • AudioInputEvent— 包含具有 320 個位元組大小上限的音訊區塊。您的應用程式必須使用多個音訊輸入事件,才能將訊息從伺服器傳送至機器人。串流中的每個音訊輸入事件都必須具有相同的音訊格式。

  • DTMFInputEvent — 將 DTMF 輸入傳送至機器人。每個 DTMF 按鍵都對應於一個事件。

  • PlaybackCompletionEvent— 通知伺服器已播放使用者輸入的回應給他們。如果您要傳送音訊回應給使用者,則必須使用播放完成事件。如果您disablePlayback的配置事件是true,則無法使用此功能。

  • DisconnectionEvent— 通知機器人用戶已斷開與對話的連接。

如果您已指定使用者使用文字與機器人通訊,您的應用程式可以在該對話期間將下列事件傳送給機器人:

  • TextInputEvent— 從您的應用程序發送到機器人的文本。您在文字輸入事件中,最多可有 512 個字元。

  • PlaybackCompletionEvent— 通知伺服器已播放使用者輸入的回應給他們。如果您要向使用者播放音訊,則必須使用此事件。如果您disablePlayback的配置事件是true,則無法使用此功能。

  • DisconnectionEvent— 通知機器人用戶已斷開與對話的連接。

您必須以正確的格式對傳送至 Amazon Lex V2 機器人的每個事件進行編碼。如需詳細資訊,請參閱事件串流事件

每個事件都有事件 ID。若要協助疑難排解串流中可能發生的任何問題,請為每個輸入事件指派唯一的事件 ID。然後,您可以使用機器人疑難排解任何處理失敗。

Amazon Lex V2 也使用時間戳記為每個事件。除了事件 ID 之外,您還可以使用這些時間戳記來協助疑難排解任何網路傳輸問題。

在使用者與 Amazon Lex V2 機器人之間的交談期間,機器人可以傳送下列輸出事件以回應使用者:

  • IntentResultEvent— 包含 Amazon Lex V2 根據使用者說話所決定的意圖。每個內部結果事件包括:

    • 輸入模式 — 使用者說話的類型。有效值為 SpeechDTMFText

    • 解釋 — Amazon Lex V2 根據使用者的話語決定的解釋。

    • requestAttributes-如果您尚未使用 lambda 函數修改請求屬性,則這些屬性與在交談開始時傳遞的屬性相同。

    • sessionId — 用於交談的工作階段識別碼。

    • 工作階段狀態 — 使用者與 Amazon Lex V2 的工作階段狀態。

  • TranscriptEvent— 如果使用者為您的應用程式提供輸入,則此事件會包含使用者對機器人說話的文字記錄。TranscriptEvent如果沒有使用者輸入,您的應用程式將不會收到。

    傳送至應用程式的成績單事件值取決於您是否已將音訊 (語音和 DMTF) 或文字指定為交談模式:

    • 語音輸入的文字記錄 — 如果使用者正在與機器人交談,文字記錄事件就是使用者音訊的轉錄。這是從用戶開始說話到他們結束說話的時間內所有演講的成績單。

    • DTMF 輸入的文字記錄 — 如果使用者在鍵盤上輸入,謄本事件會包含使用者在其輸入中按下的所有數字。

    • 文字輸入的成績單 — 如果使用者提供文字輸入,則成績單事件會包含使用者輸入中的所有文字。

  • TextResponseEvent— 包含文字格式的機器人回應。默認情況下返回文本響應。如果您已將 Amazon Lex V2 設定為傳回音訊回應,則會使用此文字來產生音訊回應。每個文字回應事件都包含機器人傳回給使用者的訊息物件陣列。

  • AudioResponseEvent— 包含從中產生的文字合成的音訊回應TextResponseEvent。若要接收音訊回應事件,您必須設定 Amazon Lex V2 以提供音訊回應。所有音頻響應事件都具有相同的音頻格式。每個事件包含不超過 100 個字節的音頻塊。Amazon Lex V2 會傳送bytes欄位設定為的空白音訊區塊,null以指示音訊回應事件結束至您的應用程式。

  • PlaybackInterruptionEvent— 當使用者中斷機器人已傳送至您應用程式的回應時,Amazon Lex V2 會觸發此事件以停止回應的播放。

  • HeartbeatEvent— Amazon Lex V2 會定期傳回此事件,以防止應用程式與機器人之間的連線逾時。

音訊交談事件的時間序列

下圖顯示使用者和 Amazon Lex V2 機器人之間的串流音訊交談。該應用程序會持續將音頻流式傳輸到機器人,並且機器人從音頻中查找用戶輸入。在此範例中,使用者和機器人的名稱都是。每個圖表都對應於一個用戶的話語和機器人對該話語的響應。

下圖顯示了應用程序和機器人之間的對話開始。串流從時間零 (t0) 開始。

下列清單說明前述圖表的事件。

  • t0:應用程序將配置事件發送給機器人以啟動流。

  • t1:應用程序流式傳輸音頻數據。此資料會分解為應用程式中的一系列輸入事件。

  • t2:對於用戶說話 1,機器人會在用戶開始說話時檢測到音頻輸入事件。

  • t2:使用者說話時,機器人會傳送活動訊號事件以維持連線。它會間歇性地傳送這些事件,以確保連線不會逾時。

  • t3:機器人檢測到用戶的話語結束。

  • t4:機器人會向應用程式傳回成績單事件,其中包含使用者演講的文字記錄。這是 Bot 回應使用者話語 1 的開始。

  • t5:機器人發送意圖結果事件以指示用戶想要執行的操作。

  • t6:機器人開始在文字回應事件中以文字形式提供回應。

  • t7:機器人向應用程序發送一系列音頻響應事件以供用戶播放。

  • t8:機器人會傳送另一個活動訊號事件,以間歇性地維護連線。

下圖是上一個圖表的延續。它顯示應用程序向機器人發送播放完成事件,以指示它已停止播放用戶的音頻響應。應用程式會向使用者播放 Bot 對使用者說話 1 的回應。使用者以使用者的話語 2 回應 Bot 回應使用者話語 1

下列清單說明前述圖表的事件:

  • t10:應用程序發送一個播放完成事件,以指示它已完成向用戶播放機器人的消息。

  • t11:應用程序將用戶響應作為用戶的話語 2 發送回機器人。

  • t12:對於 Bot 對使用者說話 2 的回應,機器人會等待使用者停止說話,然後開始提供音訊回應。

  • t13:當機器人向應用程序發送 Bot 響應用程序時,機器人會檢測到用戶話語 3 的開始。機器人會停止 Bot 對使用者話語 2 的回應,並傳送播放中斷事件。

  • t14:機器人向應用程序發送播放中斷事件,以表明用戶已中斷提示。

下圖顯示了機器人對用戶話語 3 的響應,並且在機器人響應用戶話語後繼續對話。