Skip to content

飞书

飞书的应用消息源,要注意使用了长连接进行监听,不能启动多个参数相同的消息源,只有其中一个会接收到消息。

涉及到用户或者群组信息时,userId是对应的用户open_id或者群组的open_id,userName对应的用户userId或者群组自定义id(仅在需要单独调用消息发送接口时会用到)。

至少需要基本的机器人消息权限、获取用户基本信息、通讯录中获取部门列表及用户列表相关权限、卡片消息相关权限。

步骤

  • 创建内部应用
  • 添加应用的机器人能力
  • 权限中添加相关权限(建议全选)
  • 事件与回调中-事件配置-订阅方式选择长连接接受事件
  • 如果开启了加密策略,则配置时要填入相关加密参数
  • 修改完成之后发布版本生效

支持的消息类型

  • 文本消息(TEXT)
  • 图片消息(IMAGE)
  • 音频消息(AUDIO)
  • 视频消息(VIDEO)
  • 文件消息(FILE)
  • 富文本消息(RICH_TEXT)
  • 位置信息(POSITION)
  • 联系人卡片(CONTACT_CARD)
  • 卡片消息(CARD)
  • 引用消息(REF)
  • 表情消息(EMOTION)
  • 文章消息(ARTICLE)
  • 音乐消息(MUSIC)
  • 系统消息(SYSTEM)

使用代码配置

typescript
const ppagent = new PPAgent({
  bots: [...],
  sources: [
    {
      name: FeishuSource.params.name,
      options: {
        instanceName: "feishu-source", // 必填,实例名称,需要全局唯一
        appId: "cli_xxx", // 必填,飞书开发者后台应用管理页面获取
        appSecret: "xxxx", // 必填,飞书开发者后台应用管理页面获取
        verificationToken: "xxxx", // 可选,飞书后台应用与回调中开启了加密策略才需要
        encryptKey: "xxxx", // 可选,飞书后台应用与回调中开启了加密策略才需要
        domain: "https://open.feishu.cn", // 可选,飞书开放平台的API域名,默认是 https://open.feishu.cn
        contactsCacheTime: 86400, // 可选,联系人缓存时间,单位是秒,默认24小时
        contactDepartId: "0", // 可选,联系人列表ID,以od-开头表示飞书自动生成的开放id,否则认为是自定义的id
        ignoreNoneUserMessage: true, // 可选,是否忽略非用户发送的消息,默认true
        replayTextMode: "stream", // 可选,文本消息的回复方式,默认使用text格式。可选值:text、rich_text、stream
        cardId: "xxxxx", // 可选,当配置输出位stream时,需要提供卡片ID,否则将使用默认的卡片模板
        richTextTitle: false, // 可选,当使用富文本形式回复时,是否启用标题,默认false
        richTextTitleTemplate: "RE:{title}", // 可选,富文本标题模板,默认是RE:{title}
        thinkingTips: "正在思考中...", // 可选,启用流式回复时,正在思考的提示语
        wavChannel: 1, // 可选,收到的语音转为wav时的通道数
        wavSampleRate: 16000 // 可选,收到的语音转为wav时的采样率
      }
    }
  ],
  agents: [...]
});

// 服务器运行请参考 docs/starter/install_code.md 文件

流式回复支持

飞书支持流式卡片的方式回复,需要将replayTextMode配置为stream。在流式模式下,会先发送一个包含"正在思考中..."的卡片消息,然后随着回复内容的生成不断更新卡片内容,实现类似打字机效果的流式输出。

webhook机器人

WARNING

默认情况使用的是应用机器人。由于webhook机器人无法接受消息,所以只能通过代码调用发送消息的接口实现发送。

飞书支持webhook自定义机器人,可以通过webhook URL发送消息。webhook机器人不支持图片上传,因此只能发送文本信息、不带图的富文本信息和不带图的卡片消息。

使用webhook机器人时,需要在消息中的toInfo字段中包含webhook URL。

注意事项

  • 飞书消息源使用了长连接进行监听,请确保不要启动多个参数相同的消息源
  • 在使用流式回复时,需要确保应用拥有更新消息的权限
  • 使用webhook机器人时,功能会受到限制,无法上传图片和接收消息
  • 使用富文本回复模式时,markdown的图片标签会被提取单独显示
  • 使用流式回复模式时,markdown中的图片标签会被提取并上传到飞书,且嵌入在原来位置显示

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