前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信公众号接入智能聊天机器人

微信公众号接入智能聊天机器人

作者头像
薛定喵君
发布2020-08-24 17:19:59
3.1K0
发布2020-08-24 17:19:59
举报
文章被收录于专栏:薛定喵君薛定喵君

本文主要介绍如何接入智能聊天机器人实现对用户消息的回复。

实现思路

用户在公众号会话内发送消息后,后台接收用户的文本消息并将消息发送至智能机器人API后转发API的返回结果给用户(是不是很简单? )。

开发准备

注册一个智能机器人账号,可以选择图灵机器人、茉莉机器人、青云客机器人...等等,获取key和密钥

关键代码

本示例实现了图灵机器人、青云客及小茉莉机器人的简单接入

app.js主要代码

const getRawBody = require('raw-body')
const xml2js = require('xml2js')
const rp = require('request-promise')
const config = require('./config.js')

router.post('/', async (ctx, next) => {
  var data = await getRawBody(ctx.req, {
    length: ctx.length,
    limit: '1mb',
    encoding: ctx.charset,
  })
  const xml = await parseXMLAsync(data)
  const createTime = Date.parse(new Date())
  const msgType = xml.xml.MsgType[0]
  const toUserName = xml.xml.ToUserName[0]
  const toFromName = xml.xml.FromUserName[0]

  if (msgType == 'text') {

    // 接入智能聊天机器人自动回复
    // 1.图灵机器人
    let txt = await tlRobot(content)
    // 2.青云客机器人
    // let txt = await qykRobot(content)
    // 3.茉莉机器人
    // let txt = await mlRobot(content)

    ctx.body = `<xml>
		 <ToUserName><![CDATA[${toFromName}]]></ToUserName>
		 <FromUserName><![CDATA[${toUserName}]]></FromUserName>
		 <CreateTime>${createTime}</CreateTime>
		 <MsgType><![CDATA[text]]></MsgType>
		 <Content><![CDATA[${txt}]]></Content>
		 </xml>`
  }
})

async function qykRobot(content) {
  let rtn = await rp({
      method: 'GET',
      uri: `http://api.qingyunke.com/api.php?key=free&appid=0&msg=${content}`,
    }),
    txt = JSON.parse(rtn).content
  return txt
}

async function mlRobot(content) {
  let rtn = await rp({
      method: 'GET',
      uri: `http://i.itpk.cn/api.php?question=
      ${content}&limit=5&api_key=${config.robotKey}&api_secret=${config.robotSecret}`,
    }),
    rt = unescape(rtn.replace(/\\/g, '%')).replace(/%r%n/g, ''),
    txt = ''

  if (typeof rt == 'string') {
    if (rt.indexOf('{') != -1) {
      try {
        let obj = JSON.parse(rt.trim())
        if (typeof obj == 'object' && obj) {
          txt = '【' + obj.title + '】\n' + obj.content
        }
      } catch (e) {
        console.log(e)
      }
    } else {
      txt = rt
    }
  }
  return txt
}

async function tlRobot(content) {
  let params = {
      reqType: 0,
      perception: {
        inputText: {
          text: content,
        },
      },
      userInfo: {
        apiKey: config.apiKey,
        userId: config.userId,
      },
    },
    options = {
      method: 'POST',
      uri: 'http://openapi.tuling123.com/openapi/api/v2',
      body: JSON.stringify(params),
    },
    rt = await rp(options),
    txt = JSON.parse(rt).results[0].values.text
  return txt
}

机器人能力根据第三方有所不同

扫码体验

测试号二维码

参考资料

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现思路
  • 开发准备
  • 关键代码
  • 扫码体验
  • 参考资料
相关产品与服务
腾讯云小微
腾讯云小微,是一套腾讯云的智能服务系统,也是一个智能服务开放平台,接入小微的硬件可以快速具备听觉和视觉感知能力,帮助智能硬件厂商实现语音人机互动和音视频服务能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档