我正在尝试根据用户的首选语言环境来确认提示用户。但是即使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 });
}
请让我知道是否有人知道如何处理。预先感谢。
答案 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 });
希望这对像我这样的人会有所帮助:)