c# - 聊天机器人可以在本地机器人框架模拟器中正常工作,但不能在天蓝色聊天机器人中工作

标签 c# asp.net-core-2.0 chatbot

我使用 c# 在 Asp.net core 中创建了一个聊天机器人,当用户第一次打开聊天机器人时,我遇到了有关欢迎消息的问题。当我使用 Microsoft bot 框架模拟器时,它工作正常。但是当我在天蓝色机器人选项中创建机器人服务时,它不是通过欢迎消息。但是,是的,当您输入任何内容并按发送按钮后,它会显示一条欢迎消息。意味着,天蓝色机器人收到任何消息然后它会响应,但我想在用户打开聊天机器人面板时首先显示我的欢迎消息。知道其中的解决方案是什么吗?

我使用了这段代码,它在本地机器人框架模拟器中工作正常,但在天蓝色机器人中却不行。

namespace Microsoft.BotBuilderSamples
{
    public class DialogAndWelcomeBot<T> : DialogBot<T> where T : Dialog
    {
        public DialogAndWelcomeBot(ConversationState conversationState, UserState userState, T dialog, ILogger<DialogBot<T>> logger)
            : base(conversationState, userState, dialog, logger)
        {
        }

        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)
                {   
                    var replyOne = MessageFactory.Text($"Hi there! I'm bot. ");
                    await turnContext.SendActivityAsync(replyOne, cancellationToken);
                    var replyTwo = MessageFactory.Text($"How may i assist you?");
                    await turnContext.SendActivityAsync(replyTwo, cancellationToken);
                }
            }
        }
    }
}

最佳答案

您可以引用此代码。它会对你有所帮助。

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(
                $"Hello Bot");
            connector.Conversations.ReplyToActivityAsync(reply);
        }
    }
}

关于c# - 聊天机器人可以在本地机器人框架模拟器中正常工作,但不能在天蓝色聊天机器人中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57036018/

相关文章:

c# - 如何使用 Protobuf-net 处理复杂对象?

c# - Windows 8 Store 应用程序关闭时保存数据

asp.net-core-2.0 - ASP.NET Core 2 Url 重写中间件以从 .xxx 重定向到 .yyy 扩展

asp.net - 所提供的防伪 token 验证失败。 cookie token 和请求 token 已交换

node.js - Viber - 发送键盘消息时隐藏用户字段输入

无法连接到 Twitch IRC 服务器,IP 地址问题,C 语言

c# - 使用 linq 组运算符平展查询结果的正确方法是什么

c# - 如何在 ASP.NET Core 2.2 项目中为子域正确启用 CORS?

dialogflow-es - 更改 DialogFlow 机器人中的日/月语言

c# - 在程序崩溃后取回变量