我正在使用Microsoft C#Bot框架v4构建一个Bot。第一次将漫游器添加到团队时,我希望它主动向团队中的每个成员1:1消息进行自我介绍。我知道即使用户以前没有与机器人进行交互,也应该可以与用户聊天。 documentation中描述了此过程:
在使用主动消息传递向用户发送欢迎消息时,必须记住,对于大多数接收消息的人来说,他们没有接收消息的原因。这也是他们第一次与您的应用进行互动;这是您创造良好的第一印象的机会。最好的欢迎信息包括:
- 他们为什么收到此消息。用户应该很清楚他们为什么收到消息。如果您的漫游器已安装在某个频道中,并且您向所有用户发送了欢迎消息,请让他们知道该漫游器安装在哪个频道中以及可能是谁安装的。
对我来说,这表明我应该能够与该频道的每个成员发起聊天消息,但是我无法让漫游器向该频道中除我以外的任何人发送消息。在Microsoft提供的TeamsConversationBot sample中,有一个MessageAllMembers()方法似乎正是我要寻找的方法,但是当我在代码中调用它并将该机器人添加到Teams的团队中时,该机器人才是给我发消息。
这是我正在使用的MessageAllMembers()代码:
private async Task MessageAllMembersAsync(ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
var Id = turnContext.Activity.TeamsGetChannelId();
var serviceUrl = turnContext.Activity.ServiceUrl;
var credentials = new MicrosoftAppCredentials(_configuration["MicrosoftAppId"], _configuration["MicrosoftAppPassword"]);
ConversationReference conversationReference = null;
var members = await TeamsInfo.GetMembersAsync(turnContext, cancellationToken);
foreach (var teamMember in members)
{
if (teamMember.Id != turnContext.Activity.Recipient.Id) {
var proactiveMessage = MessageFactory.Text($"Hello {teamMember.GivenName} {teamMember.Surname}. I'm a Teams conversation bot.");
var conversationParameters = new ConversationParameters
{
IsGroup = false,
Bot = turnContext.Activity.Recipient,
Members = new ChannelAccount[] { teamMember },
TenantId = turnContext.Activity.Conversation.TenantId,
};
await ((BotFrameworkAdapter)turnContext.Adapter).CreateConversationAsync(
Id,
serviceUrl,
credentials,
conversationParameters,
async (t1, c1) =>
{
conversationReference = t1.Activity.GetConversationReference();
await ((BotFrameworkAdapter)turnContext.Adapter).ContinueConversationAsync(
_configuration["MicrosoftAppId"],
conversationReference,
async (t2, c2) =>
{
await t2.SendActivityAsync(proactiveMessage, c2);
},
cancellationToken);
},
cancellationToken);
}
}
await turnContext.SendActivityAsync(MessageFactory.Text("All messages have been sent."), cancellationToken);
}
它没有抛出任何异常,只是没有按照我的期望做。