添加另一种语言的确认提示

时间:2018-09-04 12:49:25

标签: javascript node.js botframework chatbot

如何根据用户选择的语言以另一种语言添加确认提示和再见消息。假设我要添加说再见的西班牙语版本

 .cancelAction(
    "cancelRequest", "Thank you for reaching out, Good bye!",
    {
        matches: /^nevermind$|^cancel$|^cancel.*request/i,
        confirmPrompt: "This will cancel your request. Are you sure?"
    }
);

3 个答案:

答案 0 :(得分:1)

您可以使用根据语言设置值的变量来执行此操作。然后可以使用此变量从对象中获取相应的文本。

例如:

var language = "spanish";
	
var cancelTextFromLang = {
	spanish: "Gracias por comunicarte, ¡Adiós!",
	english: "Thank you for reaching out, Good bye!",
	french: "Merci d'avoir tendu la main, au revoir!"
};

console.log(cancelTextFromLang[language])

您可以将其应用于您的给定代码,如下所示:

var language = "spanish";

var cancelTextFromLang = {
    spanish: "Gracias por comunicarte, ¡Adiós!",
    english: "Thank you for reaching out, Good bye!",
    french: "Merci d'avoir tendu la main, au revoir!"
};

.cancelAction(
    "cancelRequest", cancelTextFromLang[language],
    {
        matches: /^nevermind$|^cancel$|^cancel.*request/i,
        confirmPrompt: "This will cancel your request. Are you sure?"
    }
);

答案 1 :(得分:0)

我正在使用session.userData.languagePreference,我正在考虑在cancelAction内添加一个if语句,但是语法错误,我不能在其中放置if语句:/

.cancelAction(
    if ( session.userData.languagePreference = 0;) {

  "cancelRequest", "Thank you for reaching out, Good bye!",
  {
      matches: /^nevermind$|^cancel$|^cancel.*request/i,
      confirmPrompt: "This will cancel your request. Are you sure?"
  }
);

答案 2 :(得分:-1)

Bot Framework支持本地化。您可以在节点here中了解有关如何执行此操作的信息。此页面将说明如何通过提示用户或自动确定机器人用户的语言。它还介绍了如何为提示添加语言字符串。

机器人本地化的关键是session.preferredLocal()方法。此方法保存并获取用户特定的语言环境首选项。

确定语言环境并对其进行设置的最简单方法是提示用户。这是一个Node示例

bot.dialog('/localePicker', [
function (session) {
    // Prompt the user to select their preferred locale
    builder.Prompts.choice(session, "What's your preferred language?", 'English|Español');
},
function (session, results) {
    // Update preferred locale
    var locale;
    switch (results.response.entity) {
        case 'English':
            locale = 'en';
            break;
        case 'Español':
            locale = 'es';
            break;            
    }
    session.preferredLocale(locale, function (err) {
        if (!err) {
            // Locale files loaded
            session.endDialog(`Your preferred language is now ${results.response.entity}`);
        } else {
            // Problem loading the selected locale
            session.error(err);
        }
    });
}

]);

此代码的第一部分提示用户输入他们喜欢的语言,并为他们提供英语和西班牙语作为两个可用选项。然后根据用户的响应,通过调用session.preferredLocale()来设置语言环境代码。

为了利用用户的首选语言环境,您将需要一个相应的本地化提示文件。这些文件将包含相应语言的各种漫游器提示。您将要使用的每种语言都需要一个文件。

通常,这些文件将位于./locale/{language}/index.json中,其中{language}是语言代码(例如“ en”或“ es”)。这些文件是json,看起来像这样: 英文

{
    "greeting": ["Hello!", "Hi there"]
}

和西班牙语

{
    "greeting": ["Hola!", "Hola"]
}

这是代码外观的一个例子

var bot = new builder.UniversalBot(connector, [
function (session) {
    session.send("greeting");
    session.beginDialog('/localePicker');
},
function (session) {
    builder.Prompts.text(session, "text_prompt");
}
]);

在幕后,基本上是什么情况,将搜索session.preferredLocale()返回的index.json文件以查找提示,如果找到提示,则返回该提示,否则将返回默认语言环境的提示集。 / p>