设置会话属性 - 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 函数根据该信息查找最近的披萨店下订单。

  • 个性化提示 — 配置提示和响应卡,以引用会话属性。例如,“[FirstName] 您好,您想要什么配料?” 如果您传递该用户的名字作为会话属性 ({"FirstName": "Jo"}),Amazon Lex 将用该名字替换占位符。然后,它会向该用户发送个性化提示,“Jo 您好,您想要什么配料?”

会话属性在会话持续时间内一直存在。Amazon Lex 将其存储在加密数据存储中,直到会话结束。客户端可以通过调用 PostContentPostText 操作同时为 sessionAttributes 字段设置值来创建会话属性。Lambda 函数可以在响应中创建会话属性。在客户端或 Lambda 函数创建会话属性后,每当客户端应用程序在发给 Amazon Lex 的请求中不包括 sessionAttribute 字段时,都会使用存储的属性值。

例如,假设您有两个会话属性 {"x": "1", "y": "2"}。如果客户端调用 PostContentPostText 操作而未指定 sessionAttributes 字段,Amazon Lex 通过存储的会话属性 ({"x": 1, "y": 2}) 调用 Lambda 函数。如果 Lambda 函数未返回会话属性,Amazon Lex 会将存储的会话属性返回给客户端应用程序。

如果客户端应用程序或 Lambda 函数传递会话属性,Amazon Lex 将更新存储的会话属性。传递现有值 (例如 {"x": 2}) 将更新存储的值。如果您传递一组新的会话属性(如 {"z": 3}),将删除现有值而只保留新值。当传递空映射 {} 时,将擦除存储的值。

要向 Amazon Lex 发送会话属性,您要创建属性的字符串到字符串映射。下面显示了如何映射会话属性:

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

对于 PostText 操作,您可以使用 sessionAttributes 字段将映射插入请求正文中,如下所示:

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

对于 PostContent 操作,您对映射进行 base64 编码,然后将其作为 x-amz-lex-session-attributes 标头发送。

如果要在会话属性中发送二进制或结构化数据,则必须先将该数据转换为简单字符串。有关更多信息,请参阅设置复杂属性