文档首页/ 云客服/ API参考/ 机器人管理/ 对话接口(V2)/ 对话交互后接口(inaction=9)
更新时间:2024-09-24 GMT+08:00
分享

对话交互后接口(inaction=9)

接入方执行完放音、文字交谈等操作后,将当前操作的结果作为入参,继续请求ODFS下一次的操作,以下是请求参数结构。

inparams 参数

参数名称

数据类型

参数位置

必选/可选

描述

call_id

String

body

True

呼叫唯一标志,与userid 取值相同,给流程使用。

不超过64位

call_dst_id

String

body

True

接入标识

1、语音导航场景传入被叫号码;

2、语音外呼问卷场景时为问卷类型id;

3、其他交互场景时传入接入标识。

不超过20位

flow_result_type

String

body

True

结果类型。

  • 1:语音识别输入或者文字输入
  • 2:语音按键输入
  • 3:正常无输入(只播放)
  • 4:录音结束
  • -1:其他
  • 5:数字人流媒体服务

input

String

body

True

对话交互结果。

  • 语音识别结果或者文字输入:语音识别结果为id值,格式为redis值编号key+@+inter_no;文字输入结果则直接为文字内容
  • 语音按键结果:按键值,如"1","201801"等
  • playover:放音结束
  • timeout:超时
  • nomatch:识别或按键失败
  • sys_err:系统异常
  • hangup:挂机
  • recordend:录音结束

当结果为hangup时,可触发ODFS的拆线响应。

不超过1024位

auth_token

String

body

True

授权信息,取接入控制系统返回的token值。

请参见C3 智能助手平台接口鉴权方式

recordFileName

String

body

False(支持全流程录音的语音导航场景特有字段)

全流程录音的路径文件名,例如:Y:/record/1/20200421/xxxxxx.wav

inter_idx

String

body

False(语音导航场景特有字段)

交互次数,直接取上一次ODFS返回的inter_idx值即可。

begin_play

String

body

False(语音导航场景特有字段)

放音开始时间

end_play

String

body

False(语音导航场景特有字段)

放音结束时间

result_time

String

body

False(语音导航场景特有字段)

结果产生的时间

inter_no

String

body

False(语音导航场景特有字段)

识别标识

IACmd

String

body

False(语音导航场景特有字段)

智能匹配和智能工单填写专用字段

智能匹配时,只支持值为match

智能工单时,可取值如下:

match:请求填单

rematch:当识别的事项分类错误时,重新识别

confirm:当座席点选某字段时,告知odfs该字段已确认

TextSource

String

body

False(语音导航场景特有字段)

当IACmd为match时,用于区分输入文本来自座席还是用户(智能匹配、智能工单相同),值为staff或customer

staff:座席

customer:用户

当IACmd为confirm时,传入座席点选的字段名,如:对象二级

当IACmd为rematch时,可不填

feedback

int

body

False

反馈的满意度: 1(满意);0(不满意)

feedbackContent

String

body

False

反馈的不满意原因(如果反馈为满意则为空)

mediaType

String

body

False

媒体类型(文本,音频,视频...

例如:audio,video...)

call_media_type

String

body

False

呼入ivr的呼叫类型,文本:0 音频:1视频:3

channelType

String

body

False

渠道类型

  • WEB(Web)
  • INSTAGRAM(Instagram)
  • TELEGRAM(Telegram)
  • WECHAT(微信)
  • FACEBOOK(Facebook)
  • TWITTER(X (Twitter))
  • EMAIL(邮件)
  • LINE
  • WHATSAPP(WhatsApp)
  • 5G(5G消息)
  • SMS(短信)。
    说明:

    括号里为界面字段,区别于接口传参字段。

refeedbackContentcordFileName

String

body

False

录音文件名

action

String

body

数字人回复图元

操作类型。

  • 3: interrupt
  • 4:callback

action_result

int

body

False

  • 0:流媒体处理成功
  • 1:流媒体处理失败
  • 2:流媒体处理异常

ExtParams参数

参数名称

数据类型

参数位置

必选/可选

描述

transin_data

String

body

False

由接入方跟OIAP约定的随路数据参数,例如IVR传入的数据包参数

release_reason

String

body

False(语音导航场景特有字段)

ivr上报给odfs呼叫拆线的原因码:

0、业务流程正常拆线;

1、系统异常拆线;

2、用户拆线;

queueIndex

String

body

False(查询排队信息场景特有)

查询技能队列的排队位置

agentCount

String

body

False(查询排队信息场景特有)

查询技能队列的在线座席数

estimateTime

String

body

False(查询排队信息场景特有)

查询技能队列的预计等待时间

idleAgentCount

String

body

False(查询排队信息场景特有)

查询技能队列的空闲座席数

请求消息样例

{
    "userid": "1528780879-9581",
    "inaction": 9,
    "inparams": {
        "call_id": "1528780879-9581",
        "call_dst_id": "10086", 
        "flow_result_type":"1",
        "input":"帮我查一下我的话费",
        "inter_idx": "1",
        "begin_play": "2018090407:16:24",
        "end_play": "2018090407:16:30",
        "result_time":"2018090407:16:3",
        "inter_no":"0"
    },
   "extparams": {
        "transin_data":"95,22714,0,,1,1,,test_gdj_01005",
        "queueIndex":"2",
        "agentCount":"5",
        "estimateTime":"10",
        "idleAgentCount":"1"
    }
}

ODFS判断如果 flow_result_type = 1 且 input = (识别结果id值) 时会调用Redis获取转写文本(key=识别结果id值中redis值编号key),获取到的识别文本格式为字符串(非JSON格式)。

Lua脚本获取Redis结果示例代码如下,示例中代码key值为“msg”字符串。

ODFS接收到inaction为8/9/11的请求后,根据TUC的配置,都可能返回几种不同的响应,即outaction=9/10/11/12,以下分别描述:

表1 outparams参数(outaction=9:对话交互类操作)

参数名称

数据类型

参数位置

必选/可选

描述

call_id

String

body

True

呼叫唯一标志。与userid 取值相同,给流程使用。

prompt_type

String

body

True

交互类型。

  • 0:语音交互播放指定提示音(全路径)
  • 1:语音交互播放指定提示
  • 2:语音交互播放TTS内容
  • 3:文字交互
  • 4:对呼叫方录音
  • 5:视频播放
  • 6:多媒体
  • 7:卡片
  • 8:变量音
  • 9:语音文本混合放音
  • 10:数字人交互

prompt_wav

String

body

False(语音导航场景特有字段)

当prompt_type=0,4,5 时填播放或录音的文件全路径名(必须保证为UAP可读取的路径);

当prompt_type=1 时填语音文件名(不包含路径头,播放时由IVR拼接路径头)

prompt_text

String

body

True

TTS动态文本内容/文字对话内容,

当prompt_type为2,3,6,7时必填

language

String

body

True

语种id(TTS放音以及ASR识别必须传)

0:中文

1:英文

inter_idx

String

body

False(语音导航场景特有字段)

ODFS侧记录的与用户连续交互的次数。

model_type

String

body

O(语音导航场景特有字段)

模板类型。由7位数字组成,前三位分别代表放音\识别\按键的支持情况:

  • 100:只播放。
  • 101:按键打断播放, 不支持识别。
  • 110:识别打断播放, 不支持按键。
  • 120:识别不打断播放, 不支持按键。
  • 122:按键+识别,不打断播放。
  • 111:按键+识别,打断播放。
  • 102:按键不打断播放, 不支持识别。紧接着两位代表最大按键长度,后两位是*#是否做为功能键(1功能键-#代表确定,*代表取消,0不作为功能键-普通输入键)。 如:1011201代表支持放音按键,不支持识别,最大按键长度为12位,#为确认键。1101200 代表支持放音识别,不支持按键,后面四位1200无效。

timeout

String

body

False(语音导航场景特有字段)

放音超时时长(秒),放音结束后等待输入超时时间。

tone

String

body

False(语音导航场景特有字段)

当prompt_type=4 录音时必传

true:录音开始前播放“嘀”音

false:录音开始前不播放“嘀”音

vendor

String

body

False(语音导航场景特有字段)

ASR语音识别扩展参数

grammar

String

body

False(语音导航场景特有字段)

ASR语法文件名(包含路径和后缀)

question_id

String

body

False(语音外呼问卷场景特有字段)

问题序号(外呼场景使用),如Q1,Q2;(废弃)

question_name

String

body

False(语音外呼问卷场景特有字段)

问题名称(外呼场景使用)

(废弃)

answer_id

String

body

False(语音外呼问卷场景特有字段)

问题答案(外呼场景使用),

  • 是:Y;
  • 否:N;
  • 超时:TIMEOUT;
  • 拒识:NOMATCH;
  • 其他异常:ERROR

如问题设定非“是”“否”这种答案,则需要以实际约定配置的结果为准

(废弃)

flowRecordFlag

String

body

False

是否需要录音标志。

  • 0:需要
  • 1:不需要

flowRecordPath

String

body

False

需要录音时返回录音文件的路径。

ttsGroupId

String

body

False

TTS服务器在Uap上配置的GroupId

ttsSoundEffect

String

body

False

TTS声效

男生朗读:0

女生朗读:1;

ttsSoundSpeed

String

body

False

TTS音速:

低速朗读:0;

中速朗读:1;

高速朗读:8

ttsMRCPVendor

String

body

False

TTS扩展参数,即它的mrcp vendor参数,当前最大长度40

asrMRCPId

String

body

False

ASR服务器在Uap上配置的MRCPId

asrSlotName

String

body

False

解析ASR识别槽位使用的关键字

asrRecognizeType

String

body

False

ASR识别类型

普通识别:0;

智能识别:1

asrNoInputTimeout

String

body

False

用户无话超时时长,默认100,单位s

asrRecognitionTimeout

String

body

False

识别结果超时时长,默认200,单位s

asrSpeechCompleteTimeout

String

body

False

用户停顿超时长,默认500,单位s

responseSource

int

body

False

回复来自机器人还是静默座席,机器人--0,静默座席--1

specialRecognize

int

body

False

是否使用抓包录制的识别

原始识别--0,抓包录制识别--1

action

String

body

数字人回复图元

操作类型。

  • 1:start
  • 2:stop
  • 5:sendtext
表2 Prompt_text格式说明【for 智能信息匹配业务】

参数名称

数据类型

参数位置

必选/可选

Value描述

来源

sentiment_analysis

String

body

False

情绪检测类型:

negative,

positive,

neutrality

TUC实时质检

sentiment_analysis_score

Integer

body

False

情绪检测得分

0-100

TUC实时质检

role

String

body

False

用户类型

座席:staff

用户:customer

其他:空字符串

TUC实时质检

sensitive_word

Json Object

body

O

敏感词的提醒信息

{"违禁语":["密码"]}

TUC敏感词配置

Intend

String

body

True

客户意图

说明文本

TUC意图

recomand_KP

List

body

False

推荐知识点信息

业务知识库

call_script

Json String

body

True

话术推荐

说明:

intentcode是TUC意图码,允许为空intentDsp是意图描述,不能为空

{

{intentcode:“”, intentDsp:“”,"status":"",childintent[{intentcode:“”, intentDsp:“”,"status":""},{intentcode:“”, intentDsp:“”, "status":""}…]}

{ intentcode:“”, intentDsp:“”, "status":""}

}

ODFS资源模板配置

call_script_matchedstep

String

body

False

意图码

对应上述call_script中的意图码

表示话术进展(被匹配的步骤)

TUC意图

表3 Prompt_text格式说明【for 智能工单填写业务】

参数名称

数据类型

参数位置

必选/可选

描述

使用方法

beginIndex

String

body

True

实体在文本中的开始索引位置

实体在文本中的开始索引位置

endIndex

String

body

True

实体在文本中的结束索引位置

实体在文本中的结束索引位置

type

String

body

True

抽取的实体类型

用于标注此实体的识别类型,不需要填入表单

entity

String

body

True

实体内容,已做规则化

用于填入表单对应字段

tag

String

body

True

表单中待填写的字段名

如:对象二级

响应消息样例1

{
    "userid": "1528780879-9581",
    "outaction": 9,
    "outparams": {
        "call_id": "1528780879-9581",
        "prompt_type": "1",
        "prompt_wav": "welcome",
        "prompt_text": "查询话费",
        "language": "0",
        "inter_idx": "1",
        "model_type":"1011201"
        "timeout": "10",
        "tone": "",
        "grammar": "",
        "question_id": "Q1",
        "question_name": "问题1",
        "answer_id": "Y"       
    }
}
表4 outparams参数(outaction=12:查询类操作)

参数名称

数据类型

参数位置

必选/可选

描述

call_id

String

body

True

呼叫唯一标志,与userid 取值相同,给流程使用。

prompt_type

String

body

True

查询类型。

  • 1:通话在技能队列中排队时,查询当前技能队列排队信息;
  • 2:通话不在技能队列排队,进入技能队列前,根据技能队列Id查询排队信息;
  • 3:根据座席工号,查询座席所在技能队列信息
  • 5: 音视频切换操作

moduleName

String

body

False

模块名称,图元的名称

inter_idx

String

body

False(语音导航场景特有字段)

ODFS侧记录的与用户连续交互的次数。

changeType

String

body

True

切换类型.

  1. 音频:1
  2. 音视频:3

响应消息样例

{
    "outaction": 12,
    "outparams": {
        "call_id": "1528780879-9581",
        "prompt_type": "1",
        "inter_idx": "1",
        "moduleName":"查询",
        "xxx":"xxx" //扩展
    }
}
表5 outparams参数(outaction=11:对话转接类操作)

参数名称

数据类型

参数位置

必选/可选

描述

call_id

String

body

True

呼叫唯一标志,与userid 取值相同,给流程使用。

call_sor_id

String

body

True

用户标识。(语音导航、语音外呼场景传入用户号码,其他交互场景传入用户id)

trans_type

String

body

True

对话转移类型

  • 1:转人工(路由码方式转技能队列)
  • 2:转IVR
  • 3:转人工(技能名称方式转技能队列)
  • 4:转人工(转座席工号)
  • 5:转接第三方号码
  • 6:在线数字辅助
  • 7:转人工(转熟客,目前仅支持多媒体)
  • 8:转人工(转座席所在技能队列,目前仅支持多媒体)
  • 31:转多媒体留言(转熟客)
  • 32:转多媒体留言(转技能队列)
  • 33:转多媒体留言(转座席)

route_value

String

body

True

路由值信息,依赖trans_type取值,当trans_type= 如下值时:

1,route_value=技能队列后续接入码

2,route_value=IVR流程接入码

3,route_value=技能队列名称

4,route_value=座席工号

5,route_value=第三方号码

6,流程路由码

7,无

8,座席工号

31,无

32,技能队列名称或者接入码

33,座席工号

trans_data

String

body

False

随路数据(转人工时传递)

calling_num

String

body

O

呼叫转移第三方号码时,优先使用此号码作为主叫号码

record_path

String

body

O

录音全路径名(仅当route_value=第三方号码时生效,启动会场录音,当为空或不存在时则不录音)

inter_idx

String

body

O(语音导航场景特有字段)

ODFS侧记录的与用户连续交互的次数。

trans_idx

String

body

O(语音导航场景特有字段)

跳转序数。

question_id

String

body

False(语音外呼问卷场景特有字段)

问题id(外呼场景使用)(废弃)

question_name

String

body

False(语音外呼问卷场景特有字段)

问题名称(外呼场景使用)(废弃)

answer_id

String

body

False(语音外呼问卷场景特有字段)

问题答案(外呼场景使用)(废弃)

响应消息样例2

{
    "userid": "1528780879-9581",
    "outaction": 11,
    "outparams": {
        "call_id": "1528780879-9581",
        "call_sor_id": "13500000001",
        "calling_num":"1234567890",
        "trans_type": "1",
        "route_value": "123456789",
        "inter_idx": "1",
        "trans_idx": "1",
        "question_id": "Q1",
        "question_name": "问题1",
        "answer_id": "Y"       
    }
}
表6 outparams参数(outaction=10:对话拆线类操作)

参数名称

数据类型

参数位置

必选/可选

描述

call_id

String

body

True

呼叫唯一标志,与userid 取值相同,给流程使用。

call_sor_id

String

body

True

用户标识。(语音导航、语音外呼场景传入用户号码,其他交互场景传入用户id)

call_dst_id

String

body

True

接入标识

(1、语音导航场景传入被叫号码;

2、语音外呼问卷场景时为问卷类型id;

3、其他交互场景时传入接入标识)。

start_time

String

body

True

对话交互开始时间

end_time

String

body

True

对话交互结束时间。

release_reason

String

body

False

odfs流程走到结束图元是否是正常流程逻辑

0、正常业务逻辑进入结束图元;

1、流程遇到异常、超时等没有容错业务逻辑处理时走到结束图元。

region_id

String

body

False(语音导航场景特有字段)

用户归属地。

entrance_id

String

body

False(语音导航场景特有字段)

入口维度。

exit_id

String

body

False(语音导航场景特有字段)

出口维度,取值同入口维度。

user_type_id

String

body

False(语音导航场景特有字段)

用户类型。

suilu_region_id

String

body

False(语音导航场景特有字段)

呼叫接入地。

一通会话结束,都要以IVR发起inaction=9/11且input=hangup的请求后,ODFS触发拆线响应,返回给IVR后为结束标记,IVR此后不再调用ODFS的接口。

响应消息样例3

{
    "userid": "1528780879-9581",
    "outaction": 10,
    "outparams": {
        "call_id": "1528780879-9581",
        "call_sor_id": "13500000001",
        "call_dst_id": "10086",
        "start_time": "2018090407:16:24",
        "end_time": "2018090407:30:24",
        "release_reason": "0",
        "region_id": "025",
        "entrance_id": "03",
        "exit_id": "05",
        "user_type_id": "01",
        "suilu_region_id":"025"
     }
}

相关文档