1

我使用具有多种语言生成文件的机器人作曲家创建了一个机器人项目。我创建了一个自定义操作来确定哪种语言机器人应该发起对话/聊天,这将在问候对话之前/欢迎消息之前被调用。

我已将 bot 部署到 Wats App 频道,默认语言为英语(en-US)(Bot Composer --> Project Settings--> Bot Languages-->English)。

即使机器人以英语部署到 Azure Web 应用程序,但如果自定义操作对话框结果返回意大利语(“it-it”)语言,机器人应该只显示带有“it-it”lg 文件响应的问候响应。

如何在 Bot Composer 中实现这种功能?

例如:自定义操作输出:en-Us

机器人:嗨,欢迎使用多语言机器人

例如:自定义操作输出(意大利):it-it

机器人:Ciao,多语言机器人中的本维努托

4

1 回答 1

0

解决方案:在 Bot Composer 项目中创建自己的中间件组件。我提供了步骤来遵循如何使用部分编码创建中间件。

代码:

 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);
        });
于 2021-06-11T12:57:31.210 回答