【问题标题】:I got the same message twice我两次收到相同的消息
【发布时间】:2017-11-10 00:39:30
【问题描述】:

如果新用户开始对话,我使用此代码发送不同的消息:

IConversationUpdateActivity update = message;
            var client = new ConnectorClient(new Uri(message.ServiceUrl), new MicrosoftAppCredentials());
            if (update.MembersAdded != null && update.MembersAdded.Any())
            {
                foreach (var newMember in update.MembersAdded)
                {
                    if (newMember.Id != message.Recipient.Id)
                    {
                        var reply = message.CreateReply();
                        reply.Text = $"Welcome {newMember.Name}! You are a new member! If you want to see help menu , type : help";
                        client.Conversations.ReplyToActivityAsync(reply);
                    }
                }
            }

我的问题是,当用户在 facebook 中点击:Get started 时,此消息会出现两次。

你能帮帮我吗?

【问题讨论】:

  • update.MembersAdded 中是否有超过 1 个新成员?
  • 我不知道?你知道如何解决吗?
  • 你能在 foreach 行上断点并单步执行代码吗?我不确定到底是什么问题,但这将是一个开始寻找的好地方。任何更多细节都可以帮助您找到答案。

标签: c# facebook bots botframework


【解决方案1】:

Facebook 将对话本身包含在成员列表中:

所以你需要把if 语句改成这样:

if (newMember.Id != message.Recipient.Id && newMember.Id != message.Conversation.Id)
{ 
   // send welcome message

【讨论】:

  • 代码不准确;您链接的帖子只是提到您需要添加 if 以检查收件人;你不需要检查对话。ID 而且帖子来自模拟器,他正在谈论 facebook
  • @stuartd 你的意思是我也可以捕捉到人的用户名?可以说欢迎人的{用户名}
  • @user2454923 message.From.Name 应该给你这个名字,虽然我没有在这个特定的场景中测试过。
  • 当我在 Facebook 上测试这个时,我收到了没有用户名的消息让用户重置机器人,重新启动它。Thnx in advace
  • @stuartd 在模拟器中我收到消息:欢迎用户
【解决方案2】:

我正在调查 facebook 名称部分... 您应该可以插入以下代码:

            else if (message.Type == ActivityTypes.ConversationUpdate)
        {
            IConversationUpdateActivity iConversationUpdated = message as IConversationUpdateActivity;
            if (iConversationUpdated != null)
            {
                ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl));

                foreach (var member in iConversationUpdated.MembersAdded ?? System.Array.Empty<ChannelAccount>())
                {
                    // if the bot is added, then
                    if (member.Id == iConversationUpdated.Recipient.Id)
                    {

                        var reply = ((Activity)iConversationUpdated).CreateReply($"Hi Friend I'm Botty McBotface");
                        connector.Conversations.ReplyToActivityAsync(reply);
                    }
                }
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-26
    • 2017-10-05
    • 2010-10-30
    • 1970-01-01
    • 2017-02-05
    • 2018-12-31
    • 1970-01-01
    相关资源
    最近更新 更多