ConfirmPrompt不会根据给定的本地化更改是或否

时间:2019-09-17 15:13:51

标签: c# .net botframework

当我使用ConfirmPrompt时,我试图更改我的机器人的本地化,以更改是和否响应。我试图更改活动中的本地化,但没有任何变化,只是正常提示是和否。 所以这是我的代码:

private async Task<DialogTurnResult> ConfirmStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) {
    var bookingDetails = (BookingDetails)stepContext.Options;
    bookingDetails.TravelDate = (string)stepContext.Result;
    var messageText = $"Please confirm, I have you traveling to: {bookingDetails.Destination} from: {bookingDetails.Origin} on: {bookingDetails.TravelDate}. Is this correct?";
    var promptMessage = MessageFactory.Text(messageText, messageText, InputHints.ExpectingInput);
    stepContext.Context.Activity.Locale = "fr-BE";

    return await stepContext.PromptAsync(nameof(ConfirmPrompt), new PromptOptions { Prompt = promptMessage }, cancellationToken);
}

我是Bot的新手,我不知道如何更改才能适用于其他语言。

1 个答案:

答案 0 :(得分:1)

目前不完全支持“ fr-BE”。您可以看到受支持的语言here

现在,您的示例中语言环境不起作用的真正原因是您使用以下命令手动设置了语言:

stepContext.Context.Activity.Locale = "fr-BE";

...并且这不适用于ConfirmPrompt。相反,您需要客户端来设置语言环境。对于每个客户端来说都是不同的,但是对于WebChat,您将使用类似以下内容:

window.WebChat.renderWebChat(
    {
        directLine: window.WebChat.createDirectLine({
            token: 'YOUR_DIRECT_LINE_TOKEN'
        }),
        locale: 'fr-FR', // CHANGE ME
    },
    document.getElementById('webchat')
    );

对于仿真器,您可以在“设置”中设置区域设置:

enter image description here


还请注意,使用ConfirmPrompt has a DefaultLocale设置可以确保如果活动上根本没有提供语言环境,则默认使用您设置的任何语言环境。 WebChat和Emulator都将默认设置en-US,因此ConfirmPrompt.DefaultLocale将不适用于WebChat / Emulator。