在聊天初始化时传递联系人属性 - Amazon Connect

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在聊天初始化时传递联系人属性

您可以使用联系人属性获取正在使用通信小部件的联系人的相关信息。然后,您可以通过联系人控制面板 (CCP) 向座席显示该信息,或者在流中的其他地方使用这些信息。

例如,您可以自定义流,在欢迎消息中写上客户的名称。或者,您也可以使用业务特定的属性,例如账户/会员 ID、客户标识符(如姓名和电子邮件)或与联系人相关的其他元数据。

如何将联系人属性传递到通信小部件

  1. 为您的网站添加聊天用户界面所述,在通信小部件中启用安全保护(如果尚未启用):

    1. 在第 2 步中,在为聊天小部件添加安全保护下,选择

    2. 在第 3 步中,使用安全密钥生成 JSON Web 令牌。

  2. 将联系人属性作为 attributes 声明添加到 JWT 的有效负载中。

    以下是如何用 Python 生成带有联系人属性的 JWT 的示例:

    import jwt CONNECT_SECRET = "your-securely-stored-jwt-secret" payload = { 'sub': 'widget-id', 'iat': datetime.datetime.utcnow(), 'exp': datetime.datetime.utcnow() + datetime.timedelta(seconds=500), 'attributes': {"name": "Jane", "memberID": "123456789", "email": "Jane@example.com", "isPremiumUser": "true", "age": "45"} } header = { 'typ': "JWT", 'alg': 'HS256' } encoded_token = jwt.encode((payload), CONNECT_SECRET, algorithm="HS256", headers=header)

    在有效负载中,您必须创建一个字符串键 attributes(按原样,全部为小写),并以一个对象作为其值。该对象必须有 string-to-string 键值对。如果在任何一个属性中传递了字符串以外的任何内容,聊天将无法启动。

    联系人属性必须遵守 StartChatConnect API 设置的限制:

    • 密钥的最小长度必须为 1

    • 值的最小长度可以为 0

替代方法:直接从代码片段中传递联系人属性

注意
  • 代码片段位于它传递的所有联系人属性键的前HostedWidget-面。在以下示例中,代理端将看到密钥值对HostedWidget-foo: 'bar'

  • 尽管这些属性的作用域使用HostedWidget-前缀,但它们仍然是可变的客户端站点。如果您在联系流程中需要 PII 或不可变数据,请使用 JWT 设置。

以下示例说明如何在不启用控件安全性的情况下直接从代码片段传递联系人属性。

<script type="text/javascript"> (function(w, d, x, id){ /* ... */ })(window, document, 'amazon_connect', 'widgetId'); amazon_connect('snippetId', 'snippetId'); amazon_connect('styles', /* ... */); // ... amazon_connect('contactAttributes', { foo: 'bar' }) <script/>

在联系流中使用这些属性

检查联系人属性流程块通过用户定义的命名空间提供对这些属性的访问,如下图所示。你可以使用 flow 模块来添加分支逻辑。完整路径是$.Attributes.HostedWidget-attributeName

该图显示了流块分支到 “有效” 和 “无效” 提示。

您需要了解的内容

  • 通信小部件对整个编码令牌长度的限制为 6144 个字节。由于 JavaScript 使用 UTF-16 编码,因此每个字符使用 2 个字节,因此最大大小encoded_token应为 3000 个字符左右。

  • 应将 encoded_token 传递给 callback(data)authenticate 片段不需要任何其他更改。例如:

    amazon_connect('authenticate', function(callback) { window.fetch('/token').then(res => { res.json().then(data => { callback(data.data); }); }); });
  • 使用 JWT 传递联系人属性可确保数据的完整性。如果您能保护共享密钥并遵循适当的安全措施,就可以帮助确保数据不被不法分子篡改。

  • 联系人属性仅在 JWT 中编码,未加密,因此可以解码并读取属性。

  • 如果您想使用模拟聊天体验来测试聊天体验并包含联系人属性,请务必用引号将键和值都括起来,如下图所示。

    “测试设置”页面,引号中的联系人属性键,引号中的值。