简单对话场景搭建和云小蜜接口集成 | 学习笔记

简介: 简介:快速学习简单对话场景搭建和云小蜜接口集成

开发者学堂课程【智能语音对话机器人训练营课程:简单对话场景搭建和云小蜜接口集成】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/908/detail/14395


简单对话场景搭建和云小蜜接口集成

 

目录:

一、对话机器人的基本架

二、多构多轮对话的概念

三、云小蜜会话接口的使用讲解

四、用云小蜜来搭建一个对话场景


一、对话机器人的基本架

image.png用户发起语音请求 ASR 系统,ASR 系统将语音转换为文本,将文本内容发送给 Chatbot,chatbot 对用户的语音进行理解,做一个答案的生成,再将生成回复的文本发送给 TTS 系统,TTS 在进行语音合成,再将合成的语音发送给用户。

Chatbot 有三个步骤 NLU (自然语言理解)  DM (对话管理)  NLG (自然语言生成),当用户的请求从语音转换为文本之后 Chatbot 对这句话理解是什么意思,做一个对话管理来决定下一步采取什么样的措施采取什么样的动作,第三步根据这个动作生成什么样的回复,将回复的文本给 TTS,再转换成语音交给用户。

所以开发者在开发一个类似于机器人小程序或者 HO 页面的时候,开发的页面在这个层次,用户语音的请求在 HO 页面输入一个请求语音的信号无论是短文件传给 ASR 转成文本,再将文本请求输入给 Chatbot 系统,系统接收到后在内部进行处理生成答案的文本,再用TTS系统生成语音发给用户,这就是整个机器人架构,云小蜜包含 Chatbot 其中的三个步骤 ,它的输入文本形式的用户请求,输出是文本形式的答案;云小蜜扮演的角色就是红框这些东西。

 

二、多构多轮对话的概念

首先黄色框是人说的话,白色的框是机器人的回复。用户说买火车票,机器人回复亲从哪儿出发呀?

用户回答北京,机器人继续回答哪天出发,用户说明天,机器人继续出 亲想坐火车从北京到哪里呀?

用户回答 杭州,机器人就找出明天从北京出发到杭州。这个其实就是一个典型的多轮对话 

多轮对话的概念:

·对话上下文

·对话的历史

·当前对话的状态

·通过 Session 来维护对话上下文

· Sessionld 作为标识

Session 可以认为一通多轮对话的一个标识一个单位,用 Session 描述带上下文的一通对话。

每一个 Session 都赋予一个 Session ID,当 Session ID 保持不变的情况下,用户和机器人一直处于这个多轮对话当中,也就是机器人一直会记得用户。用户在这个多轮对话当中的 Session 的概念。

 有了 Session ID 才能让机器人知道跟用户说话是处于哪个 Session 当中,用什么样的上下文理解用户这段话。


三、云小蜜会话接口的使用讲解

https://help.aliyun.com/document_detail/68183.html?spm=a2c4g.11186623.593.23177818TOhO3d

SDK 参考

智能对话机器人为开发者提供了 Java / TypeScript(NodeJs) / Go / PHP / Python / C# / C++ 七种编程语言的SDK。通过 SDK ,开发者可以免去手工计算API签名的步骤,快速地集成智能对话机器人的会话能力。 

以下是智能对话机器人提供的 SDK 信息:

1.智能对话机器人 SDK 调用

参考 阿里云-SDK 平台 完成 SDK 集成

2.阿里云通用 SDK 调用

参考 阿里云 Java SDK 开发指南 > 快速开始,如果 Maven 没有从中央存储库下载 jar 包,则需要将此依赖项添加到 pom.xml 文件中,否则将报告 NoClassDefFoundError 异常。 

调用示例

public static void main(String[] args) throws Exception {

String accountAccessAK = "XXXXXXXXXXXXXXXXXX";

String accountAccessSK = "XXXXXXXXXXXXXXXXXX";

String popRegion = "cn-shanghai";

String popProduct = "Chatbot";

String popDomain = "chatbot.cn-shanghai.aliyuncs.com";

DefaultProfile.addEndpoint(popRegion, popProduct, popDomain);

IClientProfile profile = DefaultProfile.getProfile(popRegion, accountAccessAK, accountAccessSK);

DefaultAcsClient client = new DefaultAcsClient(profile);

//固定入参

CommonRequest commonRequest = new CommonRequest();

commonRequest.setSysProduct("Chatbot");

commonRequest.setSysMethod(MethodType.GET);

//根据API会有变化

commonRequest.setSysAction("Chat");

commonRequest.setSysVersion("2017-10-11");

commonRequest.putQueryParameter("Utterance", "hi");

//机器人 id

commonRequest.putQueryParameter("InstanceId", "chatbot-cn-xxxxxxxxxxxx");

CommonResponse commonResponse = client.getCommonResponse(commonRequest);

System.out.println(commonResponse.getData());

}      

Chat 接口

描述

根据机器人实例ID与其进行会话。

请求参数 

名称

类型

是否必填

描述

Action

string

系统规定参数,取值:Chat

Instanceld

string

机器人实例ID。登录智能对话机器人控制台,左侧面板选择开发者->基本配置,查看机器人示例信息,可获得该实例ID

Utterance

string

机器人访问者的输入

Sessionld

string

会话ID,用于标识一个访问者的会话和保持上下文信息。对于一个新的访问者,首次调用Chat接口时无需传递此字段,机器人会开启一个会话,并在Chat接口的响应中返回该会话的Sessionld。对于该访问者的后续轮次的会话,调用Chat接口时传递当前会话的
Sessionld,机器人即可基于Sessionld继续该轮次会话

Knowledgeld

string

知识库词条的知识标题的ID.若指定此ID,那么机器人会直接返回指定的知识标题指定视角的答案

Senderld

string

访问者ID。用于识别当前会话中的用户

SenderNick

string

当前会话中访问的昵称

Tag

string

可以传递任何内容参数,该参数将会直接在返回结果中透传回来

Perspective.1

string

视角编码,用于调用同一知识标题下不同视角的答案。在拼装请求参数时,需要以
Perspective.1={视角编码}的格式传递参数。如:
&Perspective.1=FZJBY3raWr。使用SDK时以SDK中定义的参数为准。目前仅支持一个视角答案的调用。

Recommend

Boolean

默认true,会话API保持出推荐逻辑;如果recommend =false则不出推荐

RecommendNum

Integer

推荐问题数量,1-10,当出推荐的时候才生效,返回不大于RecommendNum的推荐问题数量

返回参数

名称 

类型

描述

Messageld

String

本条会话应答消息的ID

Sessionld

string

本次会话的ID

Messages

 

Array of Message

消息的列表

Associate 

Array of Associate

推荐信息

四、用云小蜜来搭建一个对话场景

image.png如图所示,用简单的线框图,来描绘一下多轮对话的样子,一个典型的多轮对话,多个对话轮次,一个轮次,都是由用户说一句,机器人回复一句,来组成的。所以在这里用一个简单的线框图,就可以描绘出一个多轮对话。

比如这里用户说我要查天气,机器人说 查哪里的天气,这就是一轮对话,然后接下来第二轮,用户说北京然后机器人说北京天气晴,这相当于多轮对话的第二轮对话。

在云小蜜的产品里也是基于这个模型来建模的。

首先在阿里云首页打开云小蜜,到达云小蜜的控制台首页。

创建一个机器人,就是一个说话的对象,所有的问题问这个机器人,会回答你所有的问题。赋予这个机器人所具有的技能,比如查天气,订火车票,操控智能家居。

创建一个机器人,并进行自己命名,选择机器人类型,机器人服务语言。在机器人管理当中找到对话流管理,配置机器人具有对话的能力

点击保存草稿并点击测试,把当前的对话流提交到测试环境,测试环境就相当于一个沙盒,这时候左边弹出一个调试窗

调试窗的目的就是模拟在线上的对话,然后可以在这里进行调试,当调试完成时就可以点击发布

机器人管理里的会话接口有 会话接口信息

用户说节点

image.png

节点名称:用户说查天气

意图名称:查天气意图

意图是用户查天气所会说的话术,机器人会根据这些话术理解用户的意图, 

image.png

机器人回复天气状况

回复节点

image.png

名称:机器人回复天气状况

文本回复:北京天气晴

机器人想:

判断节点 服务调用 函数节点 赋值节点

对话基本元素

组装对话流的原理,就是人类和机器对话的本质,一问一答间,尽显大道至简之风。系统将三种对话现象高度抽象提炼,成为组成对话流的三个基本元素:触发节点、函数节点、回复节点。

新建一个 查火车票 

用户输入节点:

节点名称:用户说查火车票

填槽节点:

名称:收集参数

函数节点:

名称:查询火车票信息

回复节点:

名称:机器人告知车票情况

意图名称:查火车票

用户话语:我要查火车票  帮我买一张火车票 我要查从明天京出发天津的火车票 语义槽推荐:系统-地级市 系统-日期

在收集参数里会发现三个要收集的的参数被列集在这里

通过反问配置收集缺失信息:

反问问题:你从哪里出发  你到哪里去  哪天出发

HTTP 接口

在阿里云市场>全部分类>API市场>交通地理

找对应的 API 接口,进行相应的设置。

可以在函数计算的控制台上创建服务,函数,可以写一般简单的函数,第三方接口的查询

函数计算控制台

服务\函数  通过新建服务跟函数

函数代码

http.get(httpRequest,(httpResp) => {

let data = ‘ ’;

httpResp.on( ‘data ‘, (chunk) => {

data += chunk;

});

httpResp.on ( ‘ end ' , ( ) => {

var resultData = JSON.parse(data) ;

var ticketList = resultData.result.list;

var responseString = ticketList.map(t => t.typename+'-'+t.trainnd).join( ‘, ' );

resp.send ( responseString);

});

}) 

收集参数

查火车票.出发地=

查火车票,出发地.origin =北京

查火车票.目的地=杭州

查火车票.目的地.origin =杭州

查火车票.出发日期=2020-08-12

查火车票.出发日期.origin =明天

查火车票.查询火车票信息

·协议

http

· url

https://1942022723137282.cnshanghai.fc.aliyuncs.com/20160815/proxy/news_headline_service/train_ticket_function/?date=2020-08-12&depart_city=%E5%8C%97%E4%BA%AC&arrival_city=%E6%9D%AD%E5%B7%9E

·请求类型

GET

·接口参数

Header

Accept: */*

Content-Type: */*

·接口返回

高铁-G57,高铁-G19,高铁-G55,高铁-G41,高铁-G33,高铁-G163,高铁-G31,高铁-G167,高铁-G419,高铁-G59,高铁-G43,高铁-G35,高铁-G45,高铁-G37,高铁-G273,高铁-G39,直达特快-Z281,动车-D717,快速-K101

相关实践学习
阿里巴巴智能语音交互技术与应用
智能语音交互,是基于语音识别、语音合成、自然语言理解等技术,为企业在多种实际应用场景下,赋予产品“能听、会说、懂你”式的智能人机交互体验。适用于多个应用场景中,包括智能问答、智能质检、法庭庭审实时记录、实时演讲字幕、访谈录音转写等。 本课程主要讲解智能语音相关技术,包括语音识别、人机交互、语音合成等。  
相关文章
|
1月前
|
NoSQL Java Redis
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
410 0
|
1月前
|
存储 JSON Java
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
66 2
|
1月前
|
存储 异构计算
System Generator学习——使用 AXI 接口和 IP 集成器(三)
System Generator学习——使用 AXI 接口和 IP 集成器
26 3
|
1月前
|
存储
System Generator学习——使用 AXI 接口和 IP 集成器(二)
System Generator学习——使用 AXI 接口和 IP 集成器
24 2
|
1月前
|
算法 数据安全/隐私保护 异构计算
System Generator学习——使用 AXI 接口和 IP 集成器(一)
System Generator学习——使用 AXI 接口和 IP 集成器
31 3
|
1月前
|
存储 监控 测试技术
为多渠道销售集成商品API接口
为多渠道销售集成商品API接口是一个涉及技术整合和数据管理的过程。以下是一些关键步骤,可以帮助您实现这个目标:
|
1月前
|
DataWorks NoSQL MongoDB
DataWorks常见问题之如何集成离线数据
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
前端开发 Java Maven
java集成opencv(不踩坑),实现人脸检测小demo(含上传人像图片识别接口),windows,IDEA,Springboot
java集成opencv(不踩坑),实现人脸检测小demo(含上传人像图片识别接口),windows,IDEA,Springboot
273 0
|
1月前
|
监控 供应链 API
为多渠道销售集成商品API接口的正式步骤指南
摘要: 在当今的零售环境中,企业通过多渠道销售策略来扩大市场覆盖范围并提高客户接触率。商品API接口的集成是实现这一目标的关键技术手段之一。本文旨在提供一套系统的步骤指南,帮助企业高效地为其多渠道销售体系集成商品API接口。
|
1月前
|
Web App开发 前端开发 JavaScript
如何快速与呼叫中心系统CTI/API/SDK接口集成
由于呼叫中心系统涉及通信、CTI、终端设备、中继线路等技术与概念,从事信息管理系统、ERP、CRM、工单系统等的研发人员一般不是非常熟悉这部分技术,当需要提供具备呼叫中心能力的解决方案时,往往要用较多的时间来研究这些相对复杂的技术,对接过程比较长,开发调试有一定的阻力,基于此,我们提出一种更加简便高效的集成方法,可以零代码集成呼叫中心平台,实现项目快速上线。
如何快速与呼叫中心系统CTI/API/SDK接口集成

热门文章

最新文章