我使用带有多语言生成文件的bot composer创建了一个bot项目。我创建了一个自定义操作来识别哪种语言机器人应该启动对话/聊天,这将在问候对话框/欢迎消息之前被调用。
我已经将bot部署到Wats应用程序通道,默认语言为英语(en-US) (Bot ->Project-> Bot语言-->English)。
即使认为bot是部署到Azure网页应用程序的英语语言,但如果自定义的行动对话结果返回意大利语( "it-it“)语言,bot应该显示问候响应与”it-it“lg文件响应。
如何在Bot中实现这种功能?
例:自定义动作输出: en-Us
机器人:嗨,欢迎来到多语言机器人
例:定制行动产出(意大利):it-it
Bot:多语言机器人中的Ciao,benvenuto
发布于 2021-06-11 12:57:31
解决方案:在Bot项目中创建您自己的中间件组件。我提供了一些步骤来遵循如何使用部分编码创建中间件。
代码:
public class LanguageDetectionMiddleware : IMiddleware
{
public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default)
{
//Step1: Fetch Channel Data
// Step2: Fetch Coutry Code and Number : Since I am using wats app channel, I will get phone number of any user with country code and number.
string channelLocale = await FetchLocaleFromChannelMobileNumber(Channeldata);
//Step4 : Assign turn activity locale to ChannelLocale.
turnContext.Activity.Locale = channelLocale;
//save the language to user state.
await this.userstate.SaveChangesAsync(turnContext, false, cancellationToken);
}
}要在Startup.cs文件中执行的代码更改:
//step5: Add middleware in startup.cs file adapter
.Use(s.GetService<LanguageDetectionMiddleware>());
// step6: Add Language Middle to Configure Services
services.AddSingleton(sp =>
{
return new LanguageDetectionMiddleware(sp.GetService<IBotTelemetryClient>(), userState);
});https://stackoverflow.com/questions/67096451
复制相似问题