电话机器人接口NLP接口怎样设置

94 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

和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":“描述” } 
``` |
| --------------------------------------------------------