如何在Node Bot V4中实现确认提示默认语言环境

时间:2019-08-26 09:57:53

标签: botframework azure-bot-service

我正在尝试根据用户的首选语言环境来确认提示用户。但是即使Locale是西班牙语,V4 bot也会以英语提示用户。

这是我在v4节点中的代码:

 const { ConfirmPrompt } = require('botbuilder-dialogs');
    const CONFIRM_PROMPT_ES = 'confirmPrompt_ES';
    const CONFIRM_PROMPT_EN = 'confirmPrompt_EN';

// added dialogs to dialogSet

    this.addDialog(new ConfirmPrompt(CONFIRM_PROMPT_ES,false,**'es-mx'**))
                .addDialog(new ConfirmPrompt(CONFIRM_PROMPT_EN))



           if(constant.lang==='es'){
           console.log('---entered into spanish prompt block---');
             stepContext.context.activity.locale='es-mx';
           return await stepContext.prompt(CONFIRM_PROMPT_ES, { prompt: constant.liketostorevin }); 
       }
       else{
           console.log('---entered into english prompt block---');
            return await stepContext.prompt(CONFIRM_PROMPT_EN, { prompt: constant.liketostorevin });
       }

请让我知道是否有人知道如何处理。预先感谢。

2 个答案:

答案 0 :(得分:0)

这是一个与传入的语言环境值有关的错误。目前,语言环境需要格式化为区域性+语言环境和小写字母(例如'fr-fr')。如果仅传递区域性或大写语言环境(例如“ fr”,“ FR”或“ en-FR”),则提示默认为“ en-us”。

进行此调整,您应该进行。请注意,如果未在活动中指定语言环境,则ConfirmPrompt的defaultLocale选项为读取。否则,它将被忽略。

作为参考,此问题记录为问题here,并且在this PR中有匹配的修复程序。

希望有帮助!

答案 1 :(得分:0)

我对代码进行了以下更改。现在,该漫游器能够根据语言环境提示确认。

var confPrompt=new ConfirmPrompt(CONFIRM_PROMPT_ES,false,'es-mx');
**confPrompt.confirmChoices= ['Sí', 'No']**

this.addDialog(confPrompt)
.addDialog(new ConfirmPrompt(CONFIRM_PROMPT_EN))

 return await stepContext.prompt(CONFIRM_PROMPT_ES, { prompt: constant.liketostorevin });

希望这对像我这样的人会有所帮助:)