百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

开源专题五:Botpress 对话机器人引擎Dialog Engine

suiw9 2024-10-23 18:46 37 浏览 0 评论

Botpress使用我们所谓的对话引擎来处理对话。对话引擎负责与机器人的每次互动。它处理用户输入和机器人响应。但是在两者之间,发生了很多事情。

Overview

对话引擎使用代表机器人总体对话逻辑的流程,流程由执行一系列指令的节点组成。指令是Node生命周期的一部分,可以执行Actions。Actions通常是您自己编写的代码,是由Botpress或其他人提供的代码(稍后会详细介绍)。

Flows

较复杂的机器人通常分为多个较小的Flow,而不只是一个较大的流程。将漫游器分解为多个流的原因是为了简化可维护性和可重用性。

Flow Lifetime

Flow总是startNode从其*.flow.json文件的开始。起始节点指示开始节点的名称。一旦选择了节点,对话引擎将使活动节点的指令排队。然后它将顺序处理指令。

对话引擎是基于事件的,默认情况下是非阻塞的,这意味着流将执行它可以执行的所有操作,直到需要等待为止。

注意:目前有两个原因导致Flow“等待”:

* 节点被标记为等待用户输入

* 一个节点无法满足转换到另一个节点的条件

处理完第一个节点后,对话框引擎将继续执行Flow中的下一个节点,直到到达最后。

节点也有自己的生命周期,节点在Flow中负责执行具体的工作,而Flow仅是用于编排它们。这个有点类似操作系统的Process和Thread。

Storage

流作为JSON文件存储在机器人的源文件中。在本教程的上下文中,流存储在data/bots/trivia-bot/flows/文件夹中。每个流都分为两个文件:逻辑(*.flow.json)和特定于视觉的属性(*.ui.json)。拆分这些内容是为了使维护和检查更改更加容易。

  • *.ui.json 文件几乎总是可以从代码审查中忽略,因为它们不影响机器人的功能。
  • *.flow.json从理论上讲,文件也可以由开发人员手动创建,而不是使用GUI。技能就是这种情况,我们将在后面介绍。

Nodes

Node是机器人对话逻辑的主要单元。一个活动对话(我们称为“ 会话 ”)始终只有一个活动节点。一个节点通常过渡到另一个节点或流。如果没有,则对话结束。然后,来自用户的下一条消息将成为一个全新会话的一部分。

甲节点被分离成三个不同的阶段:的OnEnter(A),的onReceive(B)和onNext(C)。

Node Lifetime

onEnter

onEnter进入节点时将执行的指令列表。如果定义了多个动作,则将依次执行所有动作。

onReceive

onReceive是当节点成为活动节点时收到消息时将执行的指令列表。一旦定义了动作,该节点将自动等待用户输入(橙色节点)。

保留该属性不使用时,该节点将处于非阻塞状态(黑色),这意味着它将直接从流动onEnter到onNext。



全流程onReceive

您可以定义一个onReceive指令,该指令将始终在每个节点的onRecieve之前执行。

示例:接收时全流程

Audit Trail:记录在此特定流范围内接收到的消息的特定日志

Authentication Gate:运行一些验证

Sentiment Analysis:确保对话情绪保持健康

要定义新的“new Flow-wide On Receive Actions”,请导航至相关Flow,然后双击方格背景上的任意位置以显示“Flow Properties Pop up”。您也可以单击Flow编辑器左上角的链接。在“ On Receive”部分下,单击“ Add Action ”按钮以添加新操作。



onNext

onNext(也称为Transitions)与Flow-wide Transitions完全相同,除了条件仅在执行之后onReceive或onEnter已执行的情况下进行评估。

特殊情况:如果未定义任何条件,则默认行为是对话结束。如果定义了条件但不匹配,则什么也不会发生,即当前节点保持活动状态,并且当条件匹配时它将流动。默认情况下,onNext仅在onReceive重新调用后才会重试。

目标:转换始终有一个目标,我们称之为目标。有可能:

  • 不同的节点
  • 不同的流程
  • 上一个流程(请参阅流程堆栈)
  • 自身(回过头来)
  • 对话结束

全流程onNext

当条件成功时,使用Flow-wide onNext指令可以覆盖节点转换。

示例:全流程onNext

身份验证门:如果用户未通过身份验证,则将其重新路由到登录流程情感分析:如果会话质量下降,则将用户重新路由到人工后备节点匹配流范围内的意图,例如“ cancel”等。

State

每个对话都有一个与之关联的State。状态在会话会话开始时创建,并在会话结束时销毁。

在本教程的上下文中,这意味着将在输入“ entry ”节点之前和执行“ over ”节点之后立即创建状态。

注意:状态是对话的全局状态,因此,如果对话跨越多个流,则该状态将为所有流共享

Session Timeout

当对话框引擎正在等待非活动用户的输入时,一段时间后会话将超时。超时允许您根据需要优雅地结束对话。在删除会话之前进行一些处理也很有用。例如,您可以将用户联系信息保存到外部数据库,或者告诉用户如何与您联系,或者通知用户其会话已超时。

Timeout Flow

您可以使用超时流来处理超时逻辑。它就像常规流程一样工作。您要做的就是向timeout.flow.json您的漫游器添加一个Flow ,并指定一个起始节点。对话框引擎将在用户下一次超时时检测您的超时流。

Timeout Node

与超时流非常相似,应该调用超时节点,该节点timeout应该属于当前流。您不必将其链接到任何其他节点。对话框引擎将根据其名称检测节点。

Timeout Transition

另一个需要一些编码的选项是将属性添加timeoutNode到*.flow.json文件中,并将其分配给应处理超时的节点的名称。它可以是任何节点,不需要称为特定方式。

? 重要说明:对话引擎处理完超时后,将删除会话。

Actions

一个行动是在Node.js的虚拟机执行JavaScript代码。可以是您想要的任何东西。调用API,将某些内容存储在数据库中或将某些内容存储在键值存储中。操作由onEnter和onReceive指令调用。有两种类型的动作:

  • 脚本:用户定义的操作,用于运行自定义代码。
  • Output:一个输出动作,用于使机器人输出一些东西。

要了解有关操作的更多信息,请参阅“ 自定义代码”部分。

Skills

构建了几个流程/机器人之后,您会很快注意到,有一些常见的模式会一遍又一遍地实现。技能可以解救。

技能是在流程之上的更高层次的抽象。实际上,技能是动态生成器。

它们可以看作是多个流甚至多个漫游器之间的可重用组件。

Install Skills

每个技能都必须由一个模块公开。模块可以承载许多技能。您所要做的就是安装所需的模块,您将可以使用其技能。

Use Skills

Botpress Flows GUI应该使用技能。安装技能模块后,在“图形流程编辑器”中导航至流程,然后在顶部工具栏中找到“插入技能”下拉菜单:



填写表单后,您将能够单击流中的任何位置以插入其他节点要使用的技能。

Persistence

技能以流的形式存储在该data/bots/your-bot/flows/skills文件夹下。

您还可以通过GUI可视化生成的技能:



Editing skills

生成技能节点后,您可以单击该节点,然后单击左侧面板上的“编辑”以编辑该节点,这将在后台自动更新生成的流程。


相关推荐

俄罗斯的 HTTPS 也要被废了?(俄罗斯网站关闭)

发布该推文的ScottHelme是一名黑客,SecurityHeaders和ReportUri的创始人、Pluralsight作者、BBC常驻黑客。他表示,CAs现在似乎正在停止为俄罗斯域名颁发...

如何强制所有流量使用 HTTPS一网上用户

如何强制所有流量使用HTTPS一网上用户使用.htaccess强制流量到https的最常见方法可能是使用.htaccess重定向请求。.htaccess是一个简单的文本文件,简称为“.h...

https和http的区别(https和http有何区别)

“HTTPS和HTTP都是数据传输的应用层协议,区别在于HTTPS比HTTP安全”。区别在哪里,我们接着往下看:...

快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别

什么是协议?网络协议是计算机之间为了实现网络通信从而达成的一种“约定”或“规则”,正是因为这个“规则”的存在,不同厂商的生产设备、及不同操作系统组成的计算机之间,才可以实现通信。简单来说,计算机与网络...

简述HTTPS工作原理(简述https原理,以及与http的区别)

https是在http协议的基础上加了一层SSL(由网景公司开发),加密由ssl实现,它的目的是为用户提供对网站服务器的身份认证(需要CA),以至于保护交换数据的隐私和完整性,原理如图示。1、客户端发...

21、HTTPS 有几次握手和挥手?HTTPS 的原理什么是(高薪 常问)

HTTPS是3次握手和4次挥手,和HTTP是一样的。HTTPS的原理...

一次安全可靠的通信——HTTPS原理

为什么HTTPS协议就比HTTP安全呢?一次安全可靠的通信应该包含什么东西呢,这篇文章我会尝试讲清楚这些细节。Alice与Bob的通信...

为什么有的网站没有使用https(为什么有的网站点不开)

有的网站没有使用HTTPS的原因可能涉及多个方面,以下是.com、.top域名的一些见解:服务器性能限制:HTTPS使用公钥加密和私钥解密技术,这要求服务器具备足够的计算能力来处理加解密操作。如果服务...

HTTPS是什么?加密原理和证书。SSL/TLS握手过程

秘钥的产生过程非对称加密...

图解HTTPS「转」(图解http 完整版 彩色版 pdf)

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。...

HTTP 和 HTTPS 有何不同?一文带你全面了解

随着互联网时代的高速发展,Web服务器和客户端之间的安全通信需求也越来越高。HTTP和HTTPS是两种广泛使用的Web通信协议。本文将介绍HTTP和HTTPS的区别,并探讨为什么HTTPS已成为We...

HTTP与HTTPS的区别,详细介绍(http与https有什么区别)

HTTP与HTTPS介绍超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的...

一文让你轻松掌握 HTTPS(https详解)

一文让你轻松掌握HTTPS原文作者:UC国际研发泽原写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。...

如何在Spring Boot应用程序上启用HTTPS?

HTTPS是HTTP的安全版本,旨在提供传输层安全性(TLS)[安全套接字层(SSL)的后继产品],这是地址栏中的挂锁图标,用于在Web服务器和浏览器之间建立加密连接。HTTPS加密每个数据包以安全方...

一文彻底搞明白Http以及Https(http0)

早期以信息发布为主的Web1.0时代,HTTP已可以满足绝大部分需要。证书费用、服务器的计算资源都比较昂贵,作为HTTP安全扩展的HTTPS,通常只应用在登录、交易等少数环境中。但随着越来越多的重要...

取消回复欢迎 发表评论: