Skip to content

QQ机器人

步骤

  • 登录QQ开放平台
  • 应用管理中的机器人页面创建机器人,填写相关信息
  • 进入机器人管理页面,在管理-开发管理中可以得到appId等信息
  • 在开发-开发管理-消息URL配置中,配置你可能发送图片的域名地址(可选,不配置有可能收不到图片)
  • 在开发-回调配置中,配置请求地址为: 域名/api/{instanceName}/receive,验证成功后,全选单聊事件、群聊事件、互动事件,保存配置
  • 根据配置信息,按照下方的代码创建实例或者在可视化页面配置

注意,QQ机器人在未上线之前,只能测试账号和群使用。测试正常后需要在QQ后台上线。 在测试环境中(pnpm dev 或者手动设置了process.env.NODE_ENV环境变量为development),默认的apiBase为QQ的沙箱地址https://sandbox.api.sgroup.qq.com,生产环境中(Docker运行默认为生产环境),默认使用QQ的正式地址https://api.sgroup.qq.com因此如果你的机器人尚未发布,且使用Docker运行,要手动把apiBase设置为沙箱地址。同理如果在测试环境中,想使用QQ正式地址,也需要手动设置

支持的消息类型

  • 文本消息
  • 图片消息
  • 文件消息
  • 音频消息
  • 富文本消息
  • 文章卡片
  • 位置信息
  • 音乐卡片
  • 联系人卡片

使用代码配置

typescript
const agent = new PPAgent({
  sources: [
    {
      name: "qq",
      options: {
        instanceName: "qq-bot",
        appId: "你的机器人App ID",
        appSecret: "你的机器人App Secret",
        // apiBase: "https://api.sgroup.qq.com", // 可选,API地址,注意沙箱环境为https://sandbox.api.sgroup.qq.com
        // tokenBase: "https://bots.qq.com", // 可选,用于获取token的API域名
        me: {
          userId: "机器人的openid",
          userName: "机器人名称",
          nickName: "机器人昵称",
        },
        // audioEncodeRate: 32000, // 可选,音频编码的码率
        // audioDecodeRate: 32000, // 可选,音频解码的码率
        // canUseMarkdown: false, // 可选,是否启用Markdown功能,必须具备markdown权限
        // messageIdCacheHourPeriod: 20, // 可选,消息ID缓存的有效期(小时)
      }
    }
  ],
  bots: [...], // 机器人配置
  agents: [...], // 智能体配置
});

服务器运行请参考 install_code.md 文件。

流式回复支持

QQ机器人不支持流式卡片方式回复。

注意事项

  1. QQ机器人默认不支持Markdown格式,如果你的机器人获邀使用了Markdown功能,才能设置canUseMarkdowntrue

  2. 沙箱环境和正式环境使用不同的apiBase,如果你的机器人是沙箱环境,且当前是正式环境运行(Docker运行的默认值),需要手动指定apiBasehttps://sandbox.api.sgroup.qq.com

  3. 如果你遇到语音消息语速不正常,可以尝试调整audioEncodeRateaudioDecodeRate参数。

  4. QQ机器人不支持获取用户列表接口,所以无法获取好友列表。