# 调用智能对话

# 功能说明

调用机器人的智能对话功能

# 请求 uri

/v2/bot/query

# 请求类型

POST

# 请求参数

# params

字段名 类型 含义
query string 用户发送的消息
env string 默认是 online, debug 是测试环境, online 是线上环境
first_priority_skills Array<string> 限定技能命中范围 比如:["技能 1"],只匹配命中“技能 1”中的所有问答内容
second_priority_skills Array<string> 限定技能命中范围 比如:["技能 2"],只匹配命中“技能 2”中的所有问答内容,比 first_priority_skills 命中优先级低
user_name string 用户昵称
avatar string 用户头像
userid string 用户 ID(可以是任何值)

# 返回参数

# data

字段名 类型 含义
answer string 命中的回答
answer_type string 回答的类型
skill_name string 技能名
intent_name string 意图名
msg_id string 消息 id
options Array<Option> 推荐问题列表 (有推荐时才出现该字段)
status string 机器人回复的状态, 可能的数值:FAQ、NOMATCH、CONTEXT_FAQ、GENERAL_FAQ、FAQ_RECOMMEND
slots Array<SlotDetail> 槽位数据
  • Option
字段名 类型 含义
ans_node_name string 推荐的分类
title string 推荐标准问题
answer string 推荐回答
confidence float 推荐信息指数
  • SlotDetail
字段名 类型 含义
name string 槽位名称
value string 槽位值
norm string 归一化的值

# 富文本回答说明

返回数据中 answerstring 类型,除了文本类型的回答外,其他类型的回答都可以通过 JSON.parse 解析为 object 来查看

# 纯文本类型

{
  "answer": "你好呀,请问你有什么需要帮助"
}

# 文本类型(含推荐问法)

{
  "answer": "暂未找到与之对应的答案,我们会尽快处理。 官方公众号:微信对话开放平台 <a href=\"weixin://bizmsgmenu?msgmenucontent=今天北京多少度&msgmenuid=今天北京多少度\">今天北京多少度</a>"
}

# 文本类型(含超级链接)

{
  "answer": "请前往<a href=\"https://chatbot.weixin.qq.com/\">openai</a>进行配置"
}

# H5

以下展示的 JSON.parse(answer)之后的数据结构

{
  "news": {
    "articles": [
      {
        "title": "实时更新:新型肺炎疫情最新动态",
        "description": "腾讯新闻第一时间同步全国新型肺炎疫情动态,欢迎关注、转发",
        "url": "https://news.qq.com/zt2020/page/feiyan.htm",
        "picurl": "http://mmbiz.qpic.cn/mmbiz_jpg/W3gQtpV3j8D8kZRqfpTJlfVqubwgFQf47H0GWlGV6leaDF80ZpdtuFhQVsCsM3YKmwkujXzdjR2k6aWfA41ic7Q/0?wx_fmt=jpeg",
        "type": "h5"
      }
    ]
  }
}

news.articles 数组中每一项的字段描述为:

字段 类型 描述
title string 文章标题
description string 文章描述
url string 文章链接
picurl string 图片链接
type string 表示该文章的类型,有'h5'和'mp'两种,mp 表示公众号文章,h5 表示在对话开放平台配置的 h5

# 公众号图片

以下展示的 JSON.parse(answer)之后的数据结构

{
  "image": {
    "media_id": "KegpipQG9t-klMo25My4e4BCZFcmKvgMcpMFAkC-VFE",
    "url": "http://mmbiz.qpic.cn/mmbiz_jpg/W3gQtpV3j8Bax22dhRiccWAb2AtVjal28XmqnhDW22dMn3RA5EoGkpolMO3tD9kQC1Hf9AjEJI66K40xQsNtXgQ/0?wx_fmt=jpeg"
  }
}

image 中每个字段描述为:

字段 类型 描述
media_id string 公众号图片素材 ID
url string 公众号图片 url

# 小程序

以下展示的 JSON.parse(answer)之后的数据结构

{
  "miniprogrampage": {
    "title": "openai对话插件",
    "appid": "wx8c631f7e9f2465e1",
    "pagepath": "pages/index/index",
    "thumb_media_id": "KegpipQG9t-klMo25My4e8zpBjhjg3JMrMSpgjikB4U",
    "thumb_url": "http://mmbiz.qpic.cn/mmbiz_png/W3gQtpV3j8BYhWgfHT5Hfg6auN94c2ec4BBhDOMtPQrx6vEMc1rR4iaDKxDLOfZ1jBUqIEEY4YpvEj6ktSyXT7g/0?wx_fmt=png"
  }
}

miniprogrampage 中每个字段描述为:

字段 类型 描述
title string 小程序标题
appid string appid
pagepath string 小程序跳转页面路径
thumb_media_id string 公众号图片素材 ID
thumb_url string 公众号图片 url

# 合并回答

以下展示的 JSON.parse(answer)之后的数据结构

   //注意:数组的每一项都要转成字符串
  {
    "multimsg": [
      '{"image":{"url":"https://chatbotassets-75050.gzc.v…32947890.jpg"}}',
      '不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤不孤',
      '{"image":{"url":"https://chatbotassets-75050.gzc.v…01698632947890.jpg"}}',
      '送您一首好运来!!!',
      '{"voice":{"id":293,"url":"https://chatbotassets-75050.gzc.v…a83f9d02385a051d2ccbcb67222.mp3","name":"好运来"}}',
      '祝您早日脱单!!!!不孤不孤!!',
      '{"image":{"url":"https://chatbotassets-75050.gzc.v…2947890.jpg"}}'
     ]
  }
字段 类型 描述
multimsg array 合并回答列表,数组中的每一项为以上单一类型的集合,每一个类型参考其对应的数据结构

选择全部回复后,对应 answer 里的数据会有变化,开发者可以根据 multimsg 来判断,区分消息适配

合并回复答案示例

# 加密

介于本接口所传输数据的敏感性,调用本接口时需要额外进行数据加密,加密算法为 AES CBC,具体算法细节可参考 第三方服务接口 中“加密”一栏的介绍。

# 示例

  • 请求示例
curl 'https://openaiapi.weixin.qq.com/v2/bot/query' \
-H 'X-OPENAI-TOKEN: WVXfTM6cwcIxA0deeCP61XifEeZbMAWXe071YcXciO3ff' \
-H 'X-APPID: Mcf7XpRIQ97ALfW' \
-H 'request_id: 212140c2-b358-4d72-8049-cd4f9053fcc7' \
-H 'timestamp: 1713236762' \
-H 'nonce: bQwdgpvdcs5BV8aZBqK8bbETWM919caJ' \
-H 'sign: e61b9b9bea229dfa97618a3b5750f720' \
-H 'Content-Type: text/plain' \
-d 'QKk1UdeinjDng+sSGRLGeQM5WvtFth0ciD7vpSMPRvFliwPU12BVPTZBVIrma/7hWzCxEBhnE8ScSz6vuYWtD/a67zr1uqw5FYn1IY02ikG+JFJ5eLu8ZX0jTuBDEFGX7iqp88eA/ipPjmE/L2AJhbuvE0kgLFrUaThigYxAU4wUOA0pk/PhRNRSUiZN8KKAcbkaci3XHwvkjhkJgGNEtHlZBzT8/vI17tEMI3opTI9L+BKkMOPdrhRf/cvrN1SSuG4Zm4xB+y/Zxu8Lh8329lY+0Od5UjJngDo3GO2D+LA='

加密前的原始数据:

{
  "query": "我叫我妈妈的姐姐叫什么?",
  "env": "online",
  "first_priority_skills": [],
  "second_priority_skills": [],
  "user_name": "测试用户名",
  "avatar": "https://example.com/img/avatar.png",
  "userid": "123"
}
  • 正确返回示例

接口返回的原始数据:

Vub4qiFmOZnLzDy7x+MhU2HPD5WeyIScQdBso9mYUBMddA2PJcP92tYS3rQ9o2IiJ34pA8dy50snjI0hlaAMZ1I5p/shba26SV/tcvZJDIB/0k0fl154p0wy8bH408tNvlPBBgsLE2rRrUiNFj3X/I8qBHOVTSx691c2zfmlWjUsxvI8Y/YMXTKUx8mXu6ZrxGIEb6ES8BrauNuOOvCWVsOZ8yYIZExal0E5ao+5SjxpPL8j2rx04lIhPbbPjbfwMG0QARonhARQIVJ7dubcGW+3BTd1mlagUnkjttn0kiQ9L1CshZqbJUv7xb+yvGfvqT4q8NB/IXoCNfahBWIKxZWO9knXpbBerPl+f9vkyjHcZ0ggBFlfqzPVFapbVslWBhL56dICrcT4UY2YJqz5b9VSVFknC/iG/bun+IWVO7iZcMr4KsDr1HJ4oLerm2F6Y68GXQqUJP6JavrUW5dakGPJu2QhPu2fxBiP+c0VQ5u4aEfoFozpl6D7UMgRvZLp2LFswVsiUZpLywzyAPj6+2uwf2ExKIMTLSri6iG+HgY=

解密后的数据:

{
  "code": 0,
  "data": {
    "answer": "姨妈",
    "answer_type": "text",
    "intent_name": "亲戚关系问询",
    "msg_id": "212140c2-b358-4d72-8049-cd4f9053fcc7",
    "options": null,
    "skill_name": "亲戚关系",
    "slots": [
      {
        "name": "亲戚称呼1",
        "norm": "妈妈",
        "value": "妈妈"
      },
      {
        "name": "亲戚称呼2",
        "norm": "姐姐",
        "value": "姐姐"
      }
    ],
    "status": "GENERAL_FAQ"
  },
  "msg": "success",
  "request_id": "212140c2-b358-4d72-8049-cd4f9053fcc7"
}