Unity集成Bot Framework DirectLine发送消息报Invalid or missing activities错误
解决Unity集成Direct Line聊天机器人时发送消息返回400错误的问题
咱们先看Fiddler抓包返回的错误提示:Invalid or missing activities in HTTP body,这其实直接点出了问题核心——你的POST请求体格式不符合Direct Line v3 API的要求。
问题出在哪?
你现在发送的请求体是单个message对象,但Direct Line v3要求必须把消息包裹在activities数组里,这就是为什么服务器返回了MissingProperty错误。
你当前的请求体:
{ "type": "message", "channelId": "directline", "from": { "id": "default-user", "name": "User" }, "text": "message text" }
修正后的正确请求体
把单个消息对象放进activities数组中,调整后的格式如下:
{ "activities": [ { "type": "message", "channelId": "directline", "from": { "id": "default-user", "name": "User" }, "text": "message text" } ] }
额外要注意的细节
- 因为你用了
Transfer-Encoding: chunked,记得更新分块数据的长度(就是请求体前的那个76),要和修正后JSON的实际长度匹配,不然可能会触发新的格式错误。 - 虽然你能正常发起新对话,说明Bearer令牌大概率是有效的,但如果调整格式后还是有问题,可以再确认下令牌的有效期和权限。
Web或者Skype端的SDK会自动帮你处理这个格式封装,但Unity端的这个库可能没做这一步,所以需要手动调整请求体结构,改完之后应该就能正常收到机器人的响应了。
内容的提问来源于stack exchange,提问作者maszeq
相关产品推荐
相关产品推荐

