【发布时间】:2020-11-05 01:57:14
【问题描述】:
我正在尝试使用 Nodejs + botframework v4.9.2 为刚刚创建的频道创建新的对话。
我已经
- 使用 POST https://graph.microsoft.com/beta/teams/${teamId}/channels 创建了新频道
- 新标签使用 POST https://graph.microsoft.com/beta/teams/${req.teamId}/channels/${req.channelId}/tabs
- 我可以在 Teams UI 中看到新频道和标签
- 试图通过
Conversations.createConversation从 bot sdk 创建新对话,它基本上是调用 POST https://directline.botframework.com/v3/conversations 并传递新的频道 ID 并获得 405 BadArgumentThis channel does not support this operation
我在本地运行机器人并通过 ngrok 进行代理。 我也可以访问 GET /v3/conversations。
更新代码
获取团队成员GET ${graphUrl}/groups/${teamId}/members
创建新频道
const createChannelRequest: IGraphCreateChannelBody = {
"@odata.type": "#Microsoft.Teams.Core.channel",
displayName: channelName,
description: `This channel is for incident id : ${incidentId}`,
members: membersIds.map(memberId => (
{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"user@odata.bind": `https://graph.microsoft.com/beta/users('${memberId}')`,
roles: ["owner"]
}
))
};
return await graphClient.createChannel(teamId, createChannelRequest);
createChannel 基本上是POST ${graphUrl}/teams/${teamId}/channels
创建新标签POST ${graphUrl}/teams/${req.teamId}/channels/${req.channelId}/tabs 其中channelId 是createChannelResponse.id
创建新对话
const client = new BotConnector.ConnectorClient(credentials, {baseUri: serviceUrl});
const {bot} = TurnContext.getConversationReference(activity);
const createConversationResponse = await client.conversations.createConversation({
bot,
activity: incidentActivity,
members: teamMembers.value.map(member => ({
id: member.id,
name: member.displayName
})),
channelData: {
channel: {
id: newIncidentChannelId
},
tenant: {
id: tenantId
}
},
isGroup: true
});
createConversation 失败并返回 405
【问题讨论】:
-
你的机器人真的安装到频道了吗?如果没有,它将无法发起对话
-
是的。我可以与之交流。
-
啊,在这种情况下,您不需要“createConversation”,您需要“SendToConversation”,因为对话已经存在。
-
@HiltonGiesenow 抱歉,我可能解释得不清楚。我已经为团队安装了机器人。我正在尝试创建新组并向那里发送一些消息。据我了解,我应该为新创建的小组创建新的对话。我无法使用 sendToConversation,因为我没有现有的。
-
@user1469253 - 我们可以看到您正在使用 Direct Line 端点。这意味着您的
Conversations对象的连接器客户端必须具有 Direct Line 基本 URI。你能给我们一个实际的代码示例来展示你是如何构造这些对象的吗? (由于这个帖子里还有很多人,如果你想让我看到你的回复,你需要@提及我。)
标签: botframework microsoft-teams