首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Bot Composer中设置动态特定的LG文件以启动会话

如何在Bot Composer中设置动态特定的LG文件以启动会话
EN

Stack Overflow用户
提问于 2021-04-14 17:30:15
回答 1查看 227关注 0票数 1

我使用带有多语言生成文件的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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-11 12:57:31

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

代码:

代码语言:javascript
复制
 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文件中执行的代码更改:

代码语言:javascript
复制
  //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);
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67096451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档