【发布时间】:2021-05-27 23:33:40
【问题描述】:
我一直在尝试测试一个函数应用程序,它将一个活动发送到一个有现有对话的机器人,但为了简化这篇文章,我将通过邮递员发送它。尽管事先确认它确实存在并且我不完全确定我做错了什么,但我一直在反对没有找到 conversationId 的问题。
我登录到 azure 门户网站,然后转到我的机器人在网络聊天中进行测试。我对机器人进行身份验证,对话开始。
在这里,我通过检查 Chrome 调试工具中的对话调用响应,检查了 conversationId 是否正是我所期望的,在本例中为 1GJ0N9UYKGyELu3LqpDF6b-a
这是确切的对话响应...
conversationId: "1GJ0N9UYKGyELu3LqpDF6b-a"
expires_in: 3600
referenceGrammarId: "fcab5fbf-67c7-bf55-934a-274e525c78a9"
streamUrl: "wss://webchat.botframework.com/v3/directline/conversations/1GJ0N9UYKGyELu3LqpDF6b-a/stream?watermark=-&t=ew0KICAi...."
token: "ew0KICA..."
所以从这里开始,在我看来我应该能够在邮递员中执行以下操作
POST https://webchat.botframework.com/v3/directline/conversations/1GJ0N9UYKGyELu3LqpDF6b-a/activities
Content-Type: application/json
Authorization: Bearer {My webchats channels secret code}
Body:
{
"type": "message",
"from": {
"name": "foo"
},
"text": "bar"
}
我希望 200OK 和消息 'bar' 会出现在来自 'foo' 的我的网络聊天测试中,但事实并非如此。相反,我在邮递员中收到错误说明:
{
"error": {
"code": "BadArgument",
"message": "Conversation not found"
}
}
这到底是怎么回事?如果我刚刚创建了该对话并且可以证明正在使用对话 ID,那么为什么帖子消息说找不到它?我是否错误地使用了频道?或者在这里做一些非常明显的事情?
【问题讨论】:
-
一般来说,上述方法没有理由不奏效。我测试了您的相同设置,它对我来说效果很好。唯一需要注意的是,您需要包含
activity.from.id的值。否则,Direct Line 会投诉。但是,这会产生不同的反应。唯一可能导致这种情况的是不正确的conversationId。很高兴它工作正常。
标签: azure botframework direct-line-botframework