Teams Bot SDK 无法使用频道 conversationUpdate 参考获取团队信息
Teams Bot SDK fails to get team info using channel conversationUpdate reference
我有一个频道的 conversationUpdate 事件,我将其用作以下代码片段中的 conversationReference
。出于某种原因,当我尝试 运行 这段代码时,我收到一条错误消息:“此方法仅在 MS Teams 团队范围内有效。”尽管据我所知,我提供的事件 是 在团队范围内(进一步证明,conversation.conversationType
是 channel
)。相反,我能够成功调用 TeamsInfo.getPagedMembers()
,如果我不在团队范围内,我预计会失败。
const proactiveChannelHandler = async (turnContext) => {
try {
const teamDetails = await TeamsInfo.getTeamDetails(turnContext);
if (teamDetails) {
await turnContext.sendActivity(`The group ID is: ${teamDetails.aadGroupId}`);
} else {
await turnContext.sendActivity('This message did not come from a channel in a team.');
}
} catch (err) {
console.error(err);
}
}
adapter.continueConversation(conversationReference, proactiveChannelHandler);
我能够使用以下示例成功获取频道列表:
private static async Task ListChannelsAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var channels = await TeamsInfo.GetTeamChannelsAsync(turnContext, null, cancellationToken);
foreach (var channel in channels)
{
if (channel.Name == null)
channel.Name = "General";
}
await turnContext.SendActivityAsync(MessageFactory.Text($"Channels list: {string.Join(", ", channels.Select(c => c.Name).ToArray())}"), cancellationToken);
}
看来问题是我缺少团队 ID 所需的第二个参数。
我有一个频道的 conversationUpdate 事件,我将其用作以下代码片段中的 conversationReference
。出于某种原因,当我尝试 运行 这段代码时,我收到一条错误消息:“此方法仅在 MS Teams 团队范围内有效。”尽管据我所知,我提供的事件 是 在团队范围内(进一步证明,conversation.conversationType
是 channel
)。相反,我能够成功调用 TeamsInfo.getPagedMembers()
,如果我不在团队范围内,我预计会失败。
const proactiveChannelHandler = async (turnContext) => {
try {
const teamDetails = await TeamsInfo.getTeamDetails(turnContext);
if (teamDetails) {
await turnContext.sendActivity(`The group ID is: ${teamDetails.aadGroupId}`);
} else {
await turnContext.sendActivity('This message did not come from a channel in a team.');
}
} catch (err) {
console.error(err);
}
}
adapter.continueConversation(conversationReference, proactiveChannelHandler);
我能够使用以下示例成功获取频道列表:
private static async Task ListChannelsAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var channels = await TeamsInfo.GetTeamChannelsAsync(turnContext, null, cancellationToken);
foreach (var channel in channels)
{
if (channel.Name == null)
channel.Name = "General";
}
await turnContext.SendActivityAsync(MessageFactory.Text($"Channels list: {string.Join(", ", channels.Select(c => c.Name).ToArray())}"), cancellationToken);
}
看来问题是我缺少团队 ID 所需的第二个参数。