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

本文展示了如何利用Koa框架结合图灵机器人、青云客和茉莉机器人,实现微信公众号的消息自动回复功能。开发过程中,首先注册机器人账号获取API key,然后在接收到用户文本消息后,调用相应机器人API获取回复内容,并构造XML响应给用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

# 实现思路

用户在公众号会话内发送消息后,后台接收用户的文本消息并将消息发送至智能机器人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
}

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

# 扫码体验

测试号二维码

# 参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定喵君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值