对话实现对BOT框架V4明确的解释

问题描述 投票:1回答:1

有没有谁可以解释如何代码BOT框架正常对话?我使用的是空的机器人模板理解的代码每张试图代码从无到有,为什么和如何拼凑。但是,即使读了这么多次之后,我不知道它是如何正确实施或编码在微软博特框架对话框。我读过从微软多次和许多从Microsoft版本或DOC文档,但仍然无法理解它是如何每一段代码联系在一起。即使博客或网站,我发现没有解释为什么需要的代码片段等,但只问你要添加这个那个。我理解的概念,但没有力学。该代码似乎从startup.cs,yourMainBotLogic.cs,dialogClassName.cs,这让我困惑BotAccessors.cs这是程序,以及如何运行步骤跨越。

为什么需要代码/部件的碎片请详细解释一下/有什么用了,为什么它必须是在有这样的文件(例如Startup.cs)。例如;

var accessors = new BotAccessors(conversationState) { ConversationDialogState = conversationState.CreateProperty<DialogState>("DialogState"), }; return accessors;

创建了一个DialogState访问,然后返回。这仅仅是例子,我的代码的描述可能是不对的。

botframework
1个回答
0
投票

你的一切如何结合在一起的问题有些宽泛,但我会尝试一些解释:

startup.cs:BOT配置应该在此装载,和单身创建。包括IStatePropertyAccessors。许多样品含有与机器人特定设置代码BotConfig文件,并从启动调用它。许多样品还包含一个BOT文件。博特文件可以加载一些机器人的服务更容易。但是,他们是没有必要的。 ID和密码仍然可以从应用程序设置,或web.config文件检索和代码可以创建服务。

通常在启动时初始化有些事情是:

  • ICredentialProvider使用由SDK创建BotAdapter和提供JWT Token Auth。对于单一的appid /口令的机器人,该SDK提供了一个SimpleCredentialProvider。如果你的机器人使用集成库,你可以在IBot初始化期间创建一个,或者只是APPID提供botConfig /传:

的WebAPI:

    public static void Register(HttpConfiguration config)
    {
         config.MapBotFramework(botConfig =>
        {
          var appId = ConfigurationManager.AppSettings[MicrosoftAppCredentials.MicrosoftAppIdKey];
          var pass = ConfigurationManager.AppSettings[MicrosoftAppCredentials.MicrosoftAppPasswordKey];

          botConfig.UseMicrosoftApplicationIdentity(appId, pass);
        }
    }

磊:


    public void ConfigureServices(IServiceCollection services)
    {
       services.AddBot(options =>
     {
        options.CredentialProvider = new SimpleCredentialProvider(appId, appPassword);
     });           
    }



  • BotState是提供键进入的IStorage实现对象。该SDK提供了三个例子: ConversationState由{的channelID} /会话/ {的conversationId}作用域 UserState由{的channelID} /用户/ {用户id}作用域 PrivateConversationState由{的channelID} /会话/ {的conversationId} /用户/ {用户id}作用域

  • IStatePropertyAccessors这些是一个实现层提供用于类型访问到所述作用域BotState如上所述。当执行获取/设置,实际的状态存储查询和持久化(通过由SDK提供的内部高速缓冲存储器)。

  • BotAccessors.cs只是为了保持状态类和IStatePropertyAccessors的容器。这是不需要的,但是是为了方便。

yourMainBotLogic.cs:这是适配器的OnTurn实施存在,应该加载对话框栈和处理用户的邮件。对话框堆栈是由包含DialogData的IStatePropertyAccessor一个类型的对话组托管。当通过调用创建上下文此属性访问器执行GET,国家商店进行查询,以填补DialogContext的对话堆栈。

dialogClassName.cs是对话的实现。具体的对话框类型都划定:如何使用他们Dialog types的例子是在GitHub和文档样本英寸

与其他asp.net应用中,当应用程序首次加载(见aspnet-web-api-posterlifecycle-of-an-aspnet-mvc-5-application并注意Microsoft.Bot.Builder.Integration.AspNet.Core使用的IApplicationBuilder扩展消息处理程序添加到请求管道ApplicationBuilderExtensionsMicrosoft.Bot.Builder.Integration.AspNet.WebApi使用一个HttpMessageHandler实现)启动运行。但是,您可以选择不使用集成库,并创建自己的控制器。像这样的例子:MVC-Bot

V4其他参考资料

© www.soinside.com 2019 - 2024. All rights reserved.