python - Salesforce LiveAgent REST API 400:请求不是有效的 ChatEnd - ChatEnd 需要原因属性上的非空值
问题描述
我实现了一些 Python 代码,让我的前端与 SF LiveAgent REST API 交互,如此处所述:https ://developer.salesforce.com/docs/atlas.en-us.live_agent_rest.meta/live_agent_rest
一切正常,除非我向/Chasitor/ChatEnd
端点发出 POST 请求。在这里,我得到一个 400 标题中的响应。
对我来说,这个端点似乎没有完整记录。它的文档(https://developer.salesforce.com/docs/atlas.en-us.live_agent_rest.meta/live_agent_rest/live_agent_rest_ChatEnd.htm)说ChatEndReason
正文是必需的,但在“Live Agent REST API 的请求正文”下没有记录在案的此类机构。reason
仅通过端点文档中建议的 as传递字典是ChatEnd
行不通的。
这是我对此请求的代码:
import requests
response = requests.post(
endpoint + '/Chasitor/ChatEnd',
headers={
'X-LIVEAGENT-SESSION-KEY': session_info['key'],
'X-LIVEAGENT-AFFINITY': session_info['affinityToken'],
'X-LIVEAGENT-API-VERSION': '46'
},
data=json.dumps({'reason':'client'})
)
endpoint
只是我的 SF 实例的 url。session_info
包含必要信息的字典。对端点的相同请求/Chasitor/ChatMessage
工作正常(见下文),我提出的所有其他请求也是如此。我怀疑身体需要看起来不同,但我不知道如何。
response = requests.post(
endpoint + '/Chasitor/ChatMessage',
headers={
'X-LIVEAGENT-SESSION-KEY': session_info['key'],
'X-LIVEAGENT-AFFINITY': session_info['affinityToken'],
'X-LIVEAGENT-API-VERSION': '46'
},
data=json.dumps({'text': message})
)
解决方案
最后我通过反复试验发现问题是由有效负载引起的。文档中有一个提示,但我认为它没有得到很好的记录:
请求正文:
ChatEndReason - 在请求的请求正文中包含 ChatEndReason 参数以指定聊天结束的原因。此参数是必需的。例如:{原因:“客户”}。
该类型ChatEndReason
需要包含在有效负载中。因此{'type':'ChatEndReason', 'reason':'client'}
工作。
推荐阅读
- java - 将时间戳日期转换为 unix 时间戳
- c# - 需要帮助分析 ASP.Net Core 3.1 内存转储
- treeview - Yii2 显示/隐藏kartik树视图节点
- ios - 斯威夫特 | 使用 HSL 颜色空间而不是标准 HSB/HSV
- c++ - C++ DLL 类导出,编译器“优化”虚拟调用
- php - Woo-commerce 评论不适用于单个产品页面
- firebase - Firebase 电话身份验证每个手机号码的每日限制
- python - MapReduce 统计出现的行数
- javascript - 从 axios 发送到 API Controller 时,Object 上的值为 null。如何解决?
- vue.js - vue cli 如何在 index.html 中创建自定义块和挂钩?