更新时间:2022-11-18 GMT+08:00
分享

处理会话

功能介绍

问答会话API由开启会话、处理会话、关闭会话三个接口组成。用户可通过调用该接口与机器人进行会话。该接口即将下线,请优先使用问答机器人API接口进行调用。

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

POST https://{endpoint}/v1/{project_id}/qabots/{qabot_id}/sessions/{session_id}

表1 路径参数

参数

是否必选

参数类型

描述

endpoint

String

终端节点,即调用API的请求地址。

不同服务不同区域的endpoint不同,您可以从终端节点中获取。

project_id

String

项目ID,用于资源隔离。请参见获取项目ID

qabot_id

String

机器人标识符,qabot编号,UUID格式。如:303a0a00-c88a-43e3-aa2f-d5b8b9832b02。

进入问答机器人的Console界面,在“机器人名称/ID”列显示对应的qabot_id。

session_id

String

会话标识符,UUID格式。如:c04e6f7b-61d7-4a2d-a0c8-f9ecd2f62359。

具体获取方式请参见开启会话章节。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。

用于获取操作API的权限。获取Token接口响应消息头中X-Subject-Token的值即为Token。

Content-Type

String

消息体的类型(格式),参数值为“application/json”。

表3 SessionExtends

参数

是否必选

参数类型

描述

tag_ids

Tag object

待匹配的答案标签信息。

domain_ids

Array of string

问题类别id列表。

只有属于这些问题类别的知识库问答对才会被匹配到。

获取domain_ids方法:

登录对话机器人控制台,在“问答机器人 > 知识库 > 问答管理”界面,鼠标指向问题类别,获取domain_ids。

source

String

问题来源。

支持用户自定义,最终体现在问答日志里。

表4 Tag

参数

是否必选

参数类型

描述

should

Array of strings

必须要包含其中之一的答案标签id列表。

响应参数

状态码: 200

表5 QaBotAnswers

参数

参数类型

描述

answers

Array of QaBotAnswer objects

问答机器人回复。

表6 QaBotAnswer

参数

参数类型

描述

qa_pair_id

String

问答对ID,UUID格式,如:305cd440-ab4f-4704-9b30-ffa4e82a5606。

st_question

String

标准问题,如:桌面云打不开。

answer

String

知识库中的语料答案,包含该字段时,为直接回答;不包含时,为推荐答案。

score

Double

相似度得分,精确到小数点后3位。

domain

String

问题类别。

top_score_question

String

最高评分的扩展问或标准问。

表7 ChatAnswers

参数

参数类型

描述

answer

String

答案,如:美好的一天祝您一切顺利。

score

Float

闲聊的置信度,范围:[0.0,1.0 ]。0.0表示兜底回复。

表8 TaskBotAnswers

参数

参数类型

描述

answer

String

答案, 如:请问您需要查询哪里的天气?

skill_id

String

技能标识符,UUID格式。如:9eece064-bdb5-43cb-8e0f-8c19a929e25c。

skill_responses

Array of SkillResponse objects

技能信息。

表9 SkillResponse

参数

参数类型

描述

skill_id

String

输入问题,不能为空,UUID格式,如:9eece064-bdb5-43cb-8e0f-8c19a929e25c。

skill_version

String

skill的版本。

frame

Frame object

命中意图。

candidate

object

候选意图,具体参见表15

locked

Boolean

技能是否被锁定,默认是false

related_intenions

Array of RelatedIntention objects

相关意图信息。

表10 Frame

参数

参数类型

描述

intention

String

意图。

confidence

Double

命中意图置信度。

current_slots

Array of CurrentSlot objects

当前槽位列表。

history_slots

Array of HistorySlot objects

历史槽位列表。

reply

String

机器人回复。

task_complete

Boolean

任务是否完成。

flow_complete

Boolean

对话流程是否结束

candidate_words

Array of Strings

候选词。

intention_alias

String

意图名称。

表11 CurrentSlot

参数

参数类型

描述

slot_id

String

槽位ID,UUID格式,如:9eece064-bdb5-43cb-8e0f-8c19a929e25c。

slot_identification

String

用户设置的槽位标识

slot_name

String

槽位名称。

slot_values

Array of SlotValue objects

槽位值。

表12 SlotValue

参数

参数类型

描述

word

String

词。

norm_word

String

归一化后的标准词。

begin_position

Integer

词的起始位置。

end_position

Integer

词的结束位置。

表13 HistorySlot

参数

参数类型

描述

slot_identification

String

用户设置的槽位标识

slot_name

String

槽位名称。

slot_values

Array of HistorySlotWord objects

槽信息。

表14 HistorySlotWord

参数

参数类型

描述

word

String

词。

norm_word

String

归一化后的词。

表15 CandidateIntention

参数

参数类型

描述

candidate_intention

String

候选意图。

candidate_confidence

Double

候选意图置信度。

表16 RelatedIntention

参数

参数类型

描述

intention

String

意图名称。

confidence

Double

意图置信度。

状态码: 400

表17 响应Body参数

参数

参数类型

描述

error_code

String

调用失败时的错误码。 调用成功时无此字段。

error_msg

String

调用失败时的错误信息。 调用成功时无此字段。

请求示例

  • 请求示例
    POST https://{endpoint}/v1/{project_id}/qabots/{qabot_id}/sessions/{session_id}
    
    Request Header:
    Content-Type: application/json
    X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...
    Request Body:
    {
        "question": "桌面云打不开了"
    }
  • Java语言请求代码示例
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class CBSDemo {
    
        public void cbsDemo() {
            try {
                //endpoint、projectId、qabot_id等需要替换成实际信息。
                URL url = new URL("https://{endpoint}/v1/{project_id}/qabots/{qabot_id}/sessions/{session_id}");
                String token = "用户获取得到的实际token值";
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setRequestMethod("POST");
                connection.setDoInput(true);
                connection.setDoOutput(true);
                connection.addRequestProperty("Content-Type", "application/json");
                connection.addRequestProperty("X-Auth-Token", token);
    
                //输入参数
                String body = "{\"question\": \"桌面云打不开了\"}";
    
                OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
                osw.append(body);
                osw.flush();
                InputStream is = connection.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                while (br.ready()) {
                    System.out.println(br.readLine());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            CBSDemo CBSDemo = new CBSDemo();
            CBSDemo.cbsDemo();
        }
    }

响应示例

状态码:200

成功响应示例

{
    {
        "answers":
        [
            {
                "score": 0.949,
                "answer": "重启电脑",
                "domain": "桌面云",
                "qa_pair_id": "888899999",
                "st_question": "桌面云打不开",
                "top_score_question": "桌面云打不开"
            }
        ],
        "recommend_answers":
        []
    },
    "session_id": "73e84311-32a0-43ff-9735-bb2be1150624"
}

状态码:400

失败响应示例

{
    "error_code":"CBS.0011",
    "error_msg":"auth failed"
}

状态码

状态码请参见状态码

错误码

错误码请参见错误码

相关文档