我的机器人用英语在Facebook上工作,而不是用法语

时间:2017-06-20 09:50:53

标签: c# facebook azure botframework luis

我使用BotFramework和Luis.ai创建了一个机器人。我的想法是创建一个bot be-languages(英语和法语)。为此,我在luis.ai中创建了2个应用程序(每种语言一个)。在我的代码中,我创建了2个luis对话框。

我希望当用户开始与我的机器人(和他的facebook是法语)对话时..当他点击“Démarrer”机器人开始使用FrenchLuis.cs

当用户说:嗨或你好(例如)...英文版的机器人响应。

当用户点击“开始使用”机器人开始使用EnglishLuis.cs时,用户开始与我的机器人(以及他的facebook是英文版)对话

在这一刻,我的机器人可以在英文版的facebook中开始对话......但是当用户输入:Démarrer时,机器人无法识别那是frenchluis.ai

在这一刻,我的法语版facebook的机器人出现了一些错误:($“哎呀!我们的系统存在一些问题”);

我在stackoverflow中创建了另一张票,但我仍有问题。

以下是链接:How to switch between two luis.ai dialog with different languages

我在代码中做的一些更改是在RootDialog.cs中:

namespace FirstBotApplication.Dialogs
{
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Connector;

[Serializable]
public class RootDialog : IDialog<object>
{
   public async Task StartAsync(IDialogContext context)
    {
        context.Wait(MessageReceivedAsync);
    }

    public virtual async Task MessageReceivedAsync(IDialogContext context, 
    IAwaitable<IMessageActivity> result)
    {
        var message = await result;

        if (message.Text.ToLower().Contains("Get Started") ||
            message.Text.ToLower().Contains("hello") ||
            message.Text.ToLower().Contains("hi"))
        {
            await context.Forward(new AllTheBot(), 
       this.ResumeAfterOptionDialog, message); context.Done(true);
        }
        else if (message.Text.ToLower().Contains("Démarrer") || 
       message.Text.ToLower().Contains("salut") || 
     message.Text.ToLower().Contains("french") || 
       message.Text.ToLower().Contains("francais") || 
    message.Text.ToLower().Contains("french"))
        {
            await context.Forward(new FrenchLuis(), this.ResumeAfterOptionDialog, message); context.Done(true);
        }
        else
        {
            await context.PostAsync($"Ooops! There are some problems with our system");
        }
    }

    private async Task ResumeAfterOptionDialog(IDialogContext context, 
  IAwaitable<object> result)
    {
        await context.PostAsync($"Resume!");
    }
     }
}
当我用法语开始用Facebook开始对话时,

Image1链接:

image1

image2

1 个答案:

答案 0 :(得分:0)

我刚试过以下代码:

else if (message.Text.ToLower().Contains("démarrer") ||
                 message.Text.ToLower().Contains("salut") ||
                 message.Text.ToLower().Contains("french") ||
                 message.Text.ToLower().Contains("francais") ||
                 message.Text.ToLower().Contains("french"))

我能够进入我伪造的FrenchLuis.cs并实现你想要的流程。但是,要继续帮助您,我需要查看FrenchLuis.cs类的内容。你能发这个吗?