本文已参与「新人创作礼」活动,一起开启掘金创作之路。
和smartivr接口的区别,smartivr接口只实现了把ASR识别结果提交给http接口进行处理,根据http接口返回的动作执行放音等操作。
新一代电话机器人接口实现了话术解析引擎,可以不依赖外部接口直接完成整个机器人对话过程。
开始执行流程
| ```
| ----------------------------------------------------------------------------------------------------------------------------------------------- |
- flowname 流程名字,不需要.josn后缀
## [](http://www.ddrj.com/callcenter/robot.html#%E6%B5%81%E7%A8%8B%E6%89%A7%E8%A1%8C%E6%AD%A5%E9%AA%A4%E8%AE%B0%E5%BD%95 "流程执行步骤记录")流程执行步骤记录
| ```
CREATE TABLE `conversation` ( `createtime` DATETIME NULL DEFAULT NULL COMMENT '记录生成事件', `callid` VARCHAR(50) NULL DEFAULT NULL COMMENT '通话ID' COLLATE 'utf8_unicode_ci', `current_appid` VARCHAR(50) NULL DEFAULT NULL COMMENT '当前执行APPID' COLLATE 'utf8_unicode_ci', `sequence` INT(11) NULL DEFAULT NULL COMMENT '序列号', `current_flowid` VARCHAR(50) NULL DEFAULT NULL COMMENT '当前流程ID' COLLATE 'utf8_unicode_ci', `input_type` INT(11) NULL DEFAULT NULL COMMENT '输入类型0:TEXT 1:DTMF 2:COMPLETE 10:CREATE 11:DESTORY', `input_args` VARCHAR(1024) NULL DEFAULT NULL COMMENT '输入参数' COLLATE 'utf8_unicode_ci', `input_nlp_args` VARCHAR(50) NULL DEFAULT NULL COMMENT 'nlp处理后的参数' COLLATE 'utf8_unicode_ci', `input_start_time` DATETIME NULL DEFAULT NULL COMMENT '输入开始时间', `input_duration` INT(11) NULL DEFAULT NULL COMMENT '输入持续时间', `matching_method` INT(11) NULL DEFAULT NULL COMMENT '匹配方法0:mismatch 1:boot 2:regex 3:full 4:any', `matching_condition` VARCHAR(256) NULL DEFAULT NULL COMMENT '匹配表达式' COLLATE 'utf8_unicode_ci', `matching_keyword` VARCHAR(50) NULL DEFAULT NULL COMMENT '匹配关键词' COLLATE 'utf8_unicode_ci', `response_type` INT(11) NULL DEFAULT NULL COMMENT '响应类型 1:flow 2:kb 3:mismatch', `response_description` VARCHAR(50) NULL DEFAULT NULL COMMENT '响应描述' COLLATE 'utf8_unicode_ci', `response_id` VARCHAR(50) NULL DEFAULT NULL COMMENT '响应的FlowID,或者PromptID' COLLATE 'utf8_unicode_ci', `response_action` VARCHAR(50) NULL DEFAULT NULL COMMENT '响应动作' COLLATE 'utf8_unicode_ci', `response_args` VARCHAR(2048) NULL DEFAULT NULL COMMENT '响应参数' COLLATE 'utf8_unicode_ci', `repetition` INT(11) NULL DEFAULT NULL COMMENT 'kb:rompt重复播放次数 ,mismatch:连续未匹配次数 flow:已经执行次数', `potential` VARCHAR(50) NULL DEFAULT NULL COMMENT '意向ID' COLLATE 'utf8_unicode_ci', `record` VARCHAR(260) NULL DEFAULT NULL COMMENT '录音' COLLATE 'utf8_unicode_ci' ) COLLATE='utf8_unicode_ci' ENGINE=InnoDB ;
``` |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- createtime 记录生成事件
- callid 通话ID
- current_appid 当前执行APPID
- sequence 序列号,当前执行动作的次数
- current_flowid 当前流程ID
- input_type 输入类型0:TEXT 1:DTMF 2:COMPLETE 10:CREATE 11:DESTORY 20:FLOWID 30:ERROR
- TEXT asr转换后的文字
- DTMF 按键
- COMPLETE 动作执行完成
- CREATE 进入流程创建上下文(input_args是话术名字:version[话术文件.json可以设置一个version字段设置话术版本])
- DESTORY 离开流程销毁上下文
- FLOWID 流程ID,比如通过知识库或者return动作切换流程(input_args:如果空就是返回父流程,否则就是流程ID)
- ERROR 错误信息,比如切断流程失败(input_args:发生错误的流程ID,matching_condition:错误的流程ID,response_description:错误信息)
- input_args 输入参数,input_type TEXT时asr识别结果,DTMF时按键内容。COMPLETE是完成输入参数
- asr识别结果前缀说明
- 前缀F:一句话识别完成
- 前缀E:ASR错误
- 前缀S:用户还在说话,实时识别中。
- dtmf按键内容
- d:未匹配到终止符
- D:已经匹配到终止符
- 完成输入参数
- DONE() 输入完成,DONE(F:识别内容1F:识别内容2)
- TIMEOUT() 输入超时了,TIMEOUT(F:放音时候的识别内容S:超过最大说话时间了)。如果没检测到声音就是TIMEOUT()。TIMEOUT(S:识别内容)这样的也代表一次ASR调用,也要对ASR进行计费。
- ERROR() 遇到错误
- BREAK() 外部程序执行了uuid_break
- input_nlp_args nlp 接口返回的数据
- input_start_time 输入开始时间,比如说话开始时的时间
- input_duration 输入持续时间 ,比如说话的持续时间
- matching_method 匹配方法0:mismatch 1:boot 2:regex 3:full 4:any 5:flowid
- mismatch 未匹配到条件
- boot 创建流程时从start进入第一个引导结点(开场白)
- regex 正则表达式匹配
- full 完整的关键词匹配
- any 任意匹配(就是关键词设置为any)
- flowid 匹配到流程ID
- matching_condition 匹配表达式 ,就是被匹配成功的关键词,或者正则表达式
- matching_keyword 匹配关键词,就是text中被匹配中的部分
- response_type 响应类型 0:none 1:flow 2:kb 3:mismatch 4:switchflow 5:timeout 6:globalflow 7:brotherflow 8:noiserule 9:disablebreak
- none 没反应动作
- flow 匹配到子流程
- kb 匹配到知识库
- mismatch 执行未匹配放音
- switchflow 切换流程节点
- timeout 执行无输入放音
- globalflow 匹配到全局流程
- brotherflow 匹配到源流程的子流程
- noiserule 匹配到噪音规则
- disablebreak 匹配到禁止打断。
- response_id 响应的FlowID,或者PromptID
- response_action 响应动作,执行那个FS的APP
- response_args 响应参数,APP的参数
- repetition kb:prompt重复播放次数 ,timeout和mismatch:连续未匹配次数 flow:已经执行次数
- potential 意向ID
- record 当前输入的录音文件,text输入的时候才有,一个动作(一次放音)的多次说话会记录到一个录音文件。
## [](http://www.ddrj.com/callcenter/robot.html#NLP%E6%8E%A5%E5%8F%A3 "NLP接口")NLP接口
全局配置设置了NLP接口地址,并且节点配置了FLOWID,那么会调用NLP接口进行处理。
NLP接口原理,话术引擎把输入的数据和需要匹配的关键词发送给NLP接口,由NLP接口返回匹配命中的关键词。
请求参数
| ```
{ "flowid": "F1", "nlpid": "1", "callid": "58b0733b-8a80-4fdc-860b-ad7e5bb85fbe", "flowkeywords": "o%7Chello%7Cok%7Cyes%7Cno%7Cwo%7Cxuhuaiyi", "kbkeywords": "lixi%7Cgongs%7Cnali%7Chello%7Cok%7Cyes%7Cno", "input": "text", "text": "SHello%20hello" }
``` |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
- flowkeywords 所有子流程的所有关键词
- kbkeywords 关联知识库的所有关键词
- input 输入类型
- text 输入参数
NLP接口返回数据
| ```
{ "keyword":"输入结果匹配到的关键词", "description":“描述” }
``` |
| --------------------------------------------------------