机器人平台知识库设置动态抓取的答案 | Chatopera

本文介绍了如何在Chatopera机器人平台上利用知识库路由功能动态获取答案,避免手动同步更新。通过设置routeDirectReply,可以从多轮对话中调用自定义JavaScript函数,实现与业务系统的HTTPAPI交互,动态获取如采购、库存和供应商管理等信息。这种方法减少了延迟和维护成本,并提供了高级进阶使用,如使用用户输入作为触发器进入多轮对话。

问题描述

在智能对话机器人中,知识库管理可能涉及到从业务系统获得答案,实时的同步答案一个是造成延迟,一个是成本高:在多个地方维护。 比如,在业务场景中,有三个子业务系统,分别是【采购系统】/【库存管理系统】/【供应商管理】。每个系统都有一些常见问题,比如采购部门的负责人及联系方式,库存管理系统的负责人及联系方式,这些信息在不同子系统的某个网页上,或者通过 API 调用可以查询到。

在传统方案中,知识库的答案通过手动复制同步,而且这个过程几乎都需要人工完成。
在这里插入图片描述
但是,因为有 HTTP API 存在,这个过程可以更简单。一个可行的方案如下:
在这里插入图片描述

目前,Chatopera 机器人平台支持这样的使用场景,接下来具体说明。

解决方案

Chatopera 机器人平台管理控制台上 BOT 开发者可以维护知识库的不同类型的答案,除了录入固定的答案,Chatopera 机器人平台知识库也支持通过调用多轮对话的话题来从多轮对话获得答案。在多轮对话中,支持自定义 JavaScript 函数,就使得知识库设置动态抓取的答案可行,我们称之为:知识库路由
在这里插入图片描述

知识库路由

在知识库的答案或多轮对话的函数中设置回复时,可以用 routeDirectReply 来指定一个话题和匹配器获得答案。

语法

将知识库答案按照如下语法设置

routeDirectReply#["TOPIC_NAME", "TOPIC_GAMBIT_ID"]

TOPIC_NAME: 对话名称

TOPIC_GAMBIT_ID: 触发器名称

工作原理

将知识库答案路由到多轮对话的话题,然后从多轮对话获得答案。
在这里插入图片描述
目前,知识库路由(routeDirectReply答案)只在多轮对话检索 API 上支持,多轮对话检索中,自动优先检索知识库。

Chatopera 多轮对话检索过程,优先级:知识库 > 脚本 > 兜底回复。
在这里插入图片描述

功能示例

下面我们用一个示例介绍这个功能的使用。
1)知识库问题 -

采购部门的负责人联系方式是什么?

2)知识库答案 -

routeDirectReply#["__depart_purch_incharge", "__contact_info"]

在控制台设置如下 -
在这里插入图片描述

3)在多轮对话设计器中,设置机器人的回复内容

在机器人管理控制台,打开【多轮对话】版块,点击【下载多轮对话设计器】。
在这里插入图片描述
安装后,启动应用并通过机器人设置页面的 clientId 和 secret 导入机器人。
创建新的技能:__depart_purch_incharge
在新的技能中,添加用户说法:

+ __contact_info
- ^get_purch_incharge_contact()

在这里插入图片描述

在函数中,添加新的函数。

const DATA_URL = "https://gitee.com/chatopera/chatbot-samples/raw/master/assets/demo-contact.json"

// 使用 HTTP 访问 API 动态获得答案
exports.get_purch_incharge_contact = async function() {
    debug("fetchInfo: fetch from remote url %s ...", DATA_URL);
    let resp = await http.get(DATA_URL);
    debug("fetchInfo: ", resp.data)
    return resp.data["name"] + "(" + resp.data["phone"] + ")";
}

在多轮对话设计器中进行测试:
在这里插入图片描述

4)在机器人控制台进行测试

在这里插入图片描述

下一步,就可以接入到业务系统,比如春松客服。在返回结果中,除了使用文本的形式,还可以支持自定义的数据结构,在春松客服中,返回结果支持展示为卡片、图文、按钮、列表的形式,详细参考(https://docs.chatopera.com/products/cskefu/work-chatbot/message-types.html)。

高级进阶

使用用户输入作为触发器

在一些情况下,按照用户的输入进入多轮对话匹配触发器更方便,那么在设置路由答案时,使用如下方法。

TOPIC_GAMBIT_ID 的值为 $ctx.textMessage$ 时,则使用当前对话的用户输入,在 TOPIC_NAME 中进行检索。

举例

1)知识库问题 -

采购部门的负责人联系方式是什么?

2)知识库答案 -

routeDirectReply#["__depart_purch_incharge", "$ctx.textMessage$"]

在控制台设置如下 -
在这里插入图片描述
那么,在多轮对话设计器中,这个规则可以更新为:
在这里插入图片描述

通过这样设置,多轮对话与知识库的整体使用可以更智能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值