【发布时间】:2017-04-07 10:55:52
【问题描述】:
我正在尝试向我创建并发布到 azure 服务的机器人发送消息,以便机器人可以开始向其部分用户发送消息。
我正在尝试首先在 Postman 上发出请求,以便我可以为该交互构建一个控制器。
我正在执行以下请求:
POST https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
Body:
grant_type:client_credentials
client_id: my_ms_app_id
client_secret: my_ms_app_secret
scope: https://api.botframework.com/.default
由此我得到承载授权的响应:
{
"token_type": "Bearer",
"expires_in": 3599,
"ext_expires_in": 0,
"access_token": "eyJ0eXA..."
}
然后我继续以下请求:
POST https://skype.botframework.com/v3/conversations
Content-Type: application/json
Authorization: Bearer eyJ0eXAi....
{
"bot": {
"id": "i don't have this id so i pass some string",
"name": "connector controller"
},
"isGroup": false,
"members": [
{
"id": "28:...", //ID of the bot I want to send the message to
"name": "Sp Bot"//Name of the bot I want to talk to
},
{
"id": "i don't have this id so i pass some string",
"name": "connector controller"
}
],
"topicName": "News Alert"
}
作为回应,我得到了与“id”匹配的对话 id:“我没有这个 id,所以我传递了一些字符串”: { “id”:“我没有这个 id,所以我传递了一些字符串” }
然后我继续执行以下 POST 请求:
POST. https://skype.botframework.com/v3/conversations/i don't have this id so i pass some string/activities
Authorization: Bearer eyJ0...
Content-Type:application/json
我收到以下回复:
400 Bad Request
{
"error": {
"code": "ServiceError",
"message": "The conversationId 29... and bot .... doesn't match a known conversation"
}
}
看起来问题出现在第二个和第三个 post 方法之间。看起来https://skype.botframework.com/v3/conversations 没有与我输入的 Id 的机器人生成对话。
所以当我对机器人进行最后一次调用时:https://skype.botframework.com/v3/conversations/.../activities 我总是会收到 serviceError 消息。
【问题讨论】:
-
你没有机器人的ID?我假设您的机器人已在 dev.botframework.com 中注册,因此您应该拥有该机器人的 ID。
-
我确实有我想与之通信的机器人的 ID。但我这样做的全部原因是因为要与我的机器人交谈的应用程序不是机器人......而是另一个 c# 应用程序。这不可能吗? @Ezequiel
-
所以你有一个需要与你的机器人对话的应用程序?所以基本上,您正在创建一个自定义“频道”,对吧?您是否考虑过使用 DirectLine?
-
@EzequielJadib 是的,我想创建一个自定义频道。我还没有找到有关如何通过直接线路做到这一点的信息
-
在下面查看我的答案
标签: botframework