c# - 欢迎消息在网络聊天中不可见,但在模拟器中有效

标签 c# c#-4.0 botframework direct-line-botframework

IConversationUpdateActivity update = message;
        using (var scope = Microsoft.Bot.Builder.Dialogs.Internals.DialogModule.BeginLifetimeScope(Conversation.Container, message))
        {
            var client = scope.Resolve<IConnectorClient>();
            if (update.MembersAdded.Any())
            {
                foreach (var newMember in update.MembersAdded)
                {
                    if (newMember.Id != message.Recipient.Id)
                    {
                        var reply = message.CreateReply();
                        reply.Text = $"Welcome {newMember.Name}!";
                        client.Conversations.ReplyToActivityAsync(reply);
                    }
                }
            }
        }

我是使用 Microsoft BotFramework 进行 ChatBot 开发的新手。

我已经注册并部署了一个简单的机器人,它在模拟器上运行良好(即机器人说欢迎使用我的简单机器人),但是当我使用 WebChat 时没有显示欢迎问候语,而是当用户键入 Hi 或之后的任何文本时显示问候语。 已经去了各种教程和解决方案,但没有得到确切的原因。我正在使用 Microsoft.Bot.Builder v3.12

最佳答案

我刚刚测试了您的代码并得到了相同的行为。奇怪的是,当机器人加入时似乎只有一个对话更新,而不是一个为机器人,一个为用户。我正在调查这个。如果您想尝试一下,以下代码可以正常工作:

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! I'm Botty McBotface and this is a welcome message");
            connector.Conversations.ReplyToActivityAsync(reply);
        }
    }
}

关于c# - 欢迎消息在网络聊天中不可见,但在模拟器中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47694305/

相关文章:

c# - 没有调用的C#事件

javascript - Microsoft Bot Framework 中是否需要为每个 'endDialog' 调用 'beginDialog' ?什么时候应该调用 'endDialog' ?

botframework - 允许聊天机器人使用多个 Microsoft App ID

c#-4.0 - Workflow Foundation - Literal 仅支持值类型和不可变类型 System.String

c# - Linq:选择 1:N 关系的 N 侧的项目

c# - 从 Microsoft Bot Framework Channel 中查找 skype 的用户名

c# - 基于全局组的安全脚本?

c# - 控制台应用程序中的存储过程

c# - .Net 4.0 System.Web.Security.MembershipProvider 引用不明确?

c# - 使用列表和未定义类型作为参数和返回类型