# iFLYOS 对话流平台简介

iFLYOS 对话流平台是一款集合语音识别、语音合成以及自然语言处理等 AI 技术,为开发者提供智能会话开发服务的平台。通过对话流平台,开发者可以以对话业务为中心,实现符合业务需求的多轮对话服务。

# 应用场景

凡是涉及多轮对话、上下文信息保持,以及交互流程和跳转逻辑设计和开发的场景,都适合采用iFLYOS 对话流平台来开发。针对这些场景,采用对话流的开发模式相比纯技能开发模式具有设计思路更清晰、表达更直观、开发更高效等特点。

# 电话客服

对话流可以无缝对接到人工客服系统,极大降低客服人力成本。对接人工客服系统时,可采用以下几种方式:

  1. 客服机器人优先:电话接通后,简单问题或常见问题由对话流接管,复杂问题转接到人工客服。
  2. 人工客服优先:人工坐席空闲时,直呼人工坐席。人工坐席繁忙时,转接到对话流接管。

对话流服务可以广泛用于:业务办理,商品预订,生活助理等。

# 电话销售和回访

你可以通过对话流服务完成电话销售和电话回访业务。对意向客户或老用户进行对话引导和信息收集。

# 游戏类

你也可以通过对话流服务完成对游戏的开发。用户开始游戏后,通过和用户的多轮交互推进游戏的进程。

# 概念一览

iFLYOS 对话流平台涉及到的基本概念一览表:

概念 含义说明
对话流 多轮人机交互场景下实现完整的人机对话过程,通过可视化流程的形式展现
流程 一个对话流通常包含一个或多个具体的流程,有主流程和子流程之分
节点 组成流程的基本元素,节点和节点之间通过连线进行连接。每个节点的说明详见对话流和节点
意图 用户请求的目的,详见意图管理
常用表达 用户说的话,也叫语料。详见常用表达
表达参数 用户常用表达中包含的关键参数信息,也叫词槽或语义槽。详见参数
词典 用户常用表达中的一类名词。详见词典管理
回复 人机对话过程中机器回复用户的内容,在回复节点里配置。详见回复管理

# 全局上下文

在多轮人机交互的场景里存在很强的上下文关系。例如在电话预订酒店场景里用户说“我要订酒店”,然后经过询问入住日期,用户回了“明天晚上”,系统结合上下文语境判断这是入住酒店的时间,而如果抛开上下文语境这就只是一个相对的时间点,抽取不出其他任何信息。另外一种场景,用户已经告知要预订上海的酒店,然后忽然问了一句“最近那边的天气怎么样”,系统也要能判断出用户的意图是查询上海的天气。

# session对象

对话流平台通过一个全局session对象来实现上下文信息保持,具体来讲,在对话流的开始会初始化一个session对象,以后对话流经历的每一个节点,本质上都是在更新session对象,各个节点间的数据传递也是通过session来实现的。

​ session为一个json对象,格式如下:

{
    "session": {        
        "query": {
            "text": "合肥的空气质量"
        },
		"nlu": {
            "intent": "airQuality"
        },
		"slots": {
            "city": "合肥"
        },
        "weatherdata": {
            "tempLow": "10℃",
            "airQuality": "良",
            "temp": 25,
            "weather": "多云",
            "tempHigh": "25℃"
        }
    }
}

session对象中内置了一些通用节点,含义说明如下:

字段名称 含义说明
session 上下文会话信息
session.query 用户查询对象
session.query.text 用户查询文本
session.nlu 语义理解结果(最近一轮交互)
session.nlu.intent 语义理解的意图(最近一轮交互)
session.slots 表达参数信息(和用户每一轮交互提取到的语义槽,通过键值对的形式保存到该节点)

此外,开发者也可以根据需要添加自定义节点到session根节点下,例如上面的weatherdata为开发者自定义的节点,用以存储对话流在执行过程中的天气数据。

# 语义继承

session.slots节点保存了和用户每一轮交互的语义槽信息,因此可以很方便地实现意图间的语义继承。例如针对上面预订酒店然后询问天气的场景,涉及酒店和天气两个意图,包含相同的表达参数city。用户告知预订上海的酒店以后,系统会将city信息保存到session.slots节点。当用户后面再问“那边的天气怎么样”,city参数的值会自动继承给天气意图。

注意

  • 要实现意图间的语义继承,同一个对话流下的多个意图,相同含义的表达参数应保持相同命名。