我有一个简单的机器人,仅由在Azure中运行的Echo Bot示例代码组成,并已连接到GroupMe频道。这是主要bot类中的代码:
public class EchoBot : ActivityHandler
{
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
await turnContext.SendActivityAsync(MessageFactory.Text($"Echo: {turnContext.Activity.Text}"), cancellationToken);
}
protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
foreach (var member in membersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
await turnContext.SendActivityAsync(MessageFactory.Text($"Hello and welcome!"), cancellationToken);
}
}
}
}
当新用户加入或添加到群聊中时,我希望输出如下:
Sam Hanley加入了该小组
Bot:您好,欢迎光临!
但是奇怪的是,没有命中OnMembersAddedAsync
方法,而是命中了OnMessageActivity
方法。僵尸程序只是回显有关要添加新用户的消息,就像这样:
Sam Hanley加入了该小组
Bot:回声:Sam Hanley加入了该小组
我是否错误地认为Bot Framework应该将这些加入消息视为由OnMemberFyresAsync处理的事情?当有人在GroupMe频道中添加到对话中时,我还有其他方法可以识别发送的消息吗?