設定工作階段屬性 - Amazon Lex V1

如果您使用的是 Amazon Lex V2,請參閱 Amazon Lex V2 指南

 

如果您使用的是 Amazon Lex V1,我們建議您將機器人升級到 Amazon Lex V2。我們不再向 V1 添加新功能,強烈建議所有新的機器人使用 V2。

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

設定工作階段屬性

工作階段屬性包含在工作階段期間在機器人與用戶端應用程式之間傳遞的應用程式特定資訊。Amazon Lex 會將工作階段屬性傳遞給為機器人設定的所有 Lambda 函數。如果 Lambda 函數新增或更新工作階段屬性,Amazon Lex 會將新資訊傳回給用戶端應用程式。例如:

在 Lambda 函數中使用工作階段屬性來初始化機器人,並自訂提示和回應卡。例如:

  • 初始化 — 在薄餅訂購機器人中,用戶端應用程式會在第一次呼叫PostContentPostText作業時,將使用者的位置做為工作階段屬性傳遞。例如:"Location": "111 Maple Street"。Lambda 函數使用此信息來查找最接近的比薩店下訂單。

  • Personalize 提示 — 配置提示和回應卡以參考工作階段屬性。例如,「嘿 [FirstName],你想要什麼澆頭?」 如果您將使用者的名字作為工作階段屬性 ({"FirstName": "Jo"}) 傳遞,Amazon Lex 會取代預留位置的名稱。它接著會傳送個人化提示給使用者、「Jo 你好,你想要什麼配料?」

工作階段屬性會在工作階段期間內持續存在。Amazon Lex 將它們存放在加密的資料存放區中,直到工作階段結束為止 用戶端可以透過呼叫 PostContentPostText 操作並將 sessionAttributes 欄位設定為值,在請求中建立工作階段屬性。Lambda 函數可以在響應中創建會話屬性。在用戶端或 Lambda 函數建立工作階段屬性之後,只要用戶端應用程式未在 Amazon Lex 的請求中包含sessionAttribute欄位,就會使用儲存的屬性值。

例如,假設您有兩個工作階段屬性,{"x": "1", "y": "2"}。如果用戶端在未指定sessionAttributes欄位的情況下呼叫PostContentPostText作業,Amazon Lex 會呼叫具有已存工作階段屬性的 Lambda 函數 ({"x": 1, "y": 2})。如果 Lambda 函數未傳回工作階段屬性,Amazon Lex 會將儲存的工作階段屬性傳回給用戶端應用程式。

如果用戶端應用程式或 Lambda 函數傳遞工作階段屬性,Amazon Lex 會更新儲存的工作階段屬性。傳遞現有的值,例如 {"x": 2},會更新儲存的值。如果您傳送一組新的工作階段屬性,例如 {"z": 3},現有的值會被移除,只保留新值。當傳遞空白對應 {} 時,會清除儲存的值。

若要將工作階段屬性傳送至 Amazon Lex,您必須建 string-to-string立屬性對應。以下說明如何對應工作階段屬性:

{ "attributeName": "attributeValue", "attributeName": "attributeValue" }

對於 PostText 操作,您使用 sessionAttributes 欄位將對應插入請求的本文,如下所示:

"sessionAttributes": { "attributeName": "attributeValue", "attributeName": "attributeValue" }

對於 PostContent 操作,您用 base64 來編碼對應,然後將其做為 x-amz-lex-session-attributes 標頭傳送。

如果您在工作階段屬性中傳送二進位或結構化資料,必須先將資料轉換為簡單的字串。如需詳細資訊,請參閱設定複雜屬性