本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在聊天开始时,在联系人控制面板 (CCP) 中将联系人属性传递给座席
您可以使用联系人属性获取正在使用通信小部件的联系人的相关信息。然后,您可以通过联系人控制面板 (CCP) 向座席显示该信息,或者在流中的其他地方使用这些信息。
例如,您可以自定义流,在欢迎消息中写上客户的名称。或者,您可以使用特定于您的业务的属性,例如账户/会员 IDs、客户标识符(如姓名和电子邮件)或与联系人关联的其他元数据。
如何将联系人属性传递到通信小部件
-
如在 Amazon Connect 托管的网站上添加聊天用户界面所述,在通信小部件中启用安全保护(如果尚未启用):
-
在第 2 步中,在为聊天小部件添加安全保护下,选择是。
-
在第 3 步中,使用安全密钥生成 JSON Web 令牌。
-
-
将联系人属性作为
attributes
声明添加到 JWT 的有效负载中。以下是如何用 Python 生成带有联系人属性的 JWT 的示例:
注意
应先安装 JWT。要安装它,请在终端运行
pip install PyJWT
。import jwt import datetime CONNECT_SECRET = "
your-securely-stored-jwt-secret
" WIDGET_ID = "widget-id" JWT_EXP_DELTA_SECONDS = 500 payload = { 'sub': WIDGET_ID, 'iat': datetime.datetime.utcnow(), 'exp': datetime.datetime.utcnow() + datetime.timedelta(seconds=JWT_EXP_DELTA_SECONDS), 'segmentAttributes': {"connect:Subtype": {"ValueString" : "connect:Guide"}}, '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) // CONNECT_SECRET is the security key provided by Amazon Connect在有效负载中,您必须创建一个字符串键
attributes
(按原样,全部为小写),并以一个对象作为其值。该对象必须有 string-to-string键值对。如果在任何一个属性中传递了字符串以外的任何内容,聊天将无法启动。联系人属性必须遵守 StartChatConnectAPI 设置的限制:
-
密钥的长度下限必须为 1
-
值的长度下限可以为 0
-
或者,您也可以在负载中将 segmentAttributes 字符串添加到SegmentAttributeValue对象映射中。这些属性是标准 Amazon Connect 属性。可以在流中访问它们。联系人属性必须遵守 StartChatConnectAPI 设置的限制。
替代方法:直接从代码片段中传递联系人属性
注意
-
此代码片段会将
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/>
在流中使用属性
检查联系人属性流数据块使用用户定义的命名空间来访问这些属性,如下图所示。您可以使用流数据块添加分支逻辑。完整路径是 $.Attributes.HostedWidget-
。attributeName
![此图显示了流数据块分支到“有效”和“无效”提示。](images/flow-check-contact-attrib.png)
您需要了解的内容
-
通信小部件对整个编码令牌长度的限制为 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 中编码,未加密,因此可以解码并读取属性。
-
如果您想使用模拟聊天体验来测试聊天体验并包含联系人属性,请务必用引号将键和值都括起来,如下图所示。