飞书企业自创应用(机器人)

飞书开发者后台:https://open.feishu.cn/app?lang=zh-CN
1、创建企业自建应用,填写应用名称和描述。
2、添加应用能力:机器人
3、权限管理:应用身份权限,开通聊天基础如下权限,其他权限视需求开放:
读取用户发给机器人的单聊消息im:message.p2p_msg:readonly
以应用的身份发消息im:message:send_as_bot
接收群聊中@机器人消息事件im:message.group_at_msg:readonly
获取与发送单聊、群组消息im:message
发送、删除消息表情回复im:message.reactions:write_only
4、事件与回调:事件配置-订阅方式:长连接,添加事件-应用身份事件:接收消息im.message.receive_v1,添加后列表有一列"所需权限",可查看需要的权限是否都开通了,缺得话点击去开通下即可。

5、填写完后创建版本发布。
注:此时还不能飞书和自建应用(机器人)私聊或者群聊,这里有两种解决方法:
方法一:跳过验证,直接在后面的OpenClaw配置时验证。
方法二:运行官方代码,可实现给应用发消息并收到同样消息的回复。文档链接:https://open.feishu.cn/document/develop-an-echo-bot/introduction,下载自己熟悉的语言官方代码示例,复制运行启动指令(命令里面包含应用的App ID和App Secret,切换应用测试时要替换),在本地启动程序,此时才能在飞书中与应用(机器人)发消息,应用回复了同样的消息表示配置好了。

OpenClaw源码及配置文件路径

官方脚本安装后文件路径:
源码安装路径: C:\Users\xxxx\AppData\Roaming\npm\node_modules\openclaw>
配置文件/工作区等路径:C:\Users\xxxx\.openclaw

源码目录里面有帮助文档。

OpenClaw配置飞书

1、OpenClaw创建Agent:
# 注:飞书单机器人与多机器人配置文件格式不一样,多机器人必须在配置文件中用accounts包裹。
# 单飞书机器人:在命令行执行时顺便就能配置,方便。
# 多飞书机器人:在配置消息渠道时跳过,需要再配置文件中手动配置。
# 这里一般只需要命令行帮创建文件和配置文件格式,后面auth、model可以选择no,channels可以跳过。
openclaw agents add zhuguan
openclaw agents add yuangong01

检查配置是否成功:
> openclaw agents list	 // 显示现有所有agent
> 配置文件的agents下会多一个list,显示现有所有agent
> openclaw目录下生成每个agent对应的workspace的工作区。
2、创建消息渠道(飞书)
# 使用代码时删除 // 的注释信息,JSON中不允许有注释。
# account_id_01:accountID,根据自己业务命名,尽量用小写字母,因为有些逻辑生成的配置文件会转成全小写的。
# defaultAccount 用于控制当出站 API 未显式指定 accountId 时,使用哪个飞书账户。

"channels": {
    "feishu": {
      "defaultAccount": "main",
      "accounts": {
        "zhuguan": {
          "enabled": true,
          "name": "机器人-主管",
          "appId": "cli_xxxx",
          "appSecret": "xxxxxxxxxxxxxxx",
          
          // ====== 私信策略 Starrt ========
          "dmPolicy": "pairing",
          // ====== 私信策略    End ========
          
          // ====== 群组策略 Starrt ========
          "groupPolicy": "open" 	// 群组策略
          // ====== 群组策略    End ========
        },
        "yuangong01": {
          "enabled": true,
          "name": "机器人-员工01",
          "appId": "cli_xxxx",
          "appSecret": "xxxxxxxxxxxxx",
          
		   // ====== 私信策略 Starrt ========
          "dmPolicy": "open",
          "allowFrom": [
            "*"
          ],
		  // ====== 私信策略    End ========
		 
		 // ====== 群组策略 Starrt ========
          "groupPolicy": "open"		// 群组策略
          // ====== 群组策略    End ========
        }
      }
    }
  }
# 编辑完上述内容后,执行openclaw doctor --fix ,openclaw会补充一些默认的配置,OpenClaw配置文件执行子继承父配置,并在子配置中可以重复配置进行覆盖。

# allowFrom 有两种配置方式
# 方法一:openclaw.json文件直接配置,如上配置。
# 方法二:未授权的用户在飞书与机器人对话,会返回一个命令,管理员在openclaw中执行后,会在.openclaw/creadentials下生成一个对应channels/feishu/accounts下accountId的*-allowFrom.json文件记录授权用户飞书ID。
# allowFrom :群聊授权策略同理。
3.1飞书机器人-正在输入状态-开/关
参数配置:feishu.typingIndicator: true/false   # 默认 true
参数说明:
true:"正在输入"过程。
false:跳过“正在输入”反应调用。
3.2、群组及私信策略(了解即可)
OpenClaw飞书配置说明文档:https://docs.openclaw.ai/zh-CN/channels/feishu

1、私信策略参考(dmPolicy)
Value				Behavior
"pairing"			默认值,未知用户会收到配对码,需要管理员批准配对才能私聊机器人
"allowlist"			仅允许指定用户私聊机器人,需配合私信 allowlist(open_id 列表)参数使用
"open"				允许所有用户(要求 allowFrom 参数中有 "*")
"disabled"			禁用私信

 2、群组策略(groupPolicy):
"open" = 允许群组中的所有人(默认)
"allowlist" = 仅允许机器人在指定群组工作,需配合allowedGroups参数使用
"disabled" = 禁止机器人在任何群组工作
2. 提及要求(channels.feishu.groups.<chat_id>.requireMention):
true = 需要 @ 提及(默认)
false = 无需提及也会回复

3、飞书渠道配置参考
Setting	Description	Default
channels.feishu.enabled	启用/禁用渠道	true
channels.feishu.domain	API 域名(feishu 或 lark)	feishu
channels.feishu.connectionMode	事件传输模式	websocket
channels.feishu.defaultAccount	出站路由的默认账户 ID	default
channels.feishu.verificationToken	webhook 模式必填	-
channels.feishu.encryptKey	webhook 模式必填	-
channels.feishu.webhookPath	webhook 路由路径	/feishu/events
channels.feishu.webhookHost	webhook 绑定主机	127.0.0.1
channels.feishu.webhookPort	webhook 绑定端口	3000
channels.feishu.accounts.<id>.appId	App ID	-
channels.feishu.accounts.<id>.appSecret	App Secret	-
channels.feishu.accounts.<id>.domain	按账户覆盖 API 域名	feishu
channels.feishu.dmPolicy	私信策略	pairing
channels.feishu.allowFrom	私信 allowlist(open_id 列表)	-
channels.feishu.groupPolicy	群组策略	open
channels.feishu.groupAllowFrom	群组 allowlist	-
channels.feishu.groups.<chat_id>.requireMention	要求 @ 提及	true
channels.feishu.groups.<chat_id>.enabled	启用群组	true
channels.feishu.textChunkLimit	消息分块大小	2000
channels.feishu.mediaMaxMb	媒体大小限制	30
channels.feishu.streaming	启用流式卡片输出	true
channels.feishu.blockStreaming	启用分块流式传输	true
4、绑定agent与消息渠道(channels)
# agentId:在openclaw.json配置文件或者在openclaw agents list里面找。
# accountId:channels.feishu.accounts.xxxx,xxxx即为accountId。
"bindings": [
    {
      "agentId": "zhuguan",
      "match": {
        "channel": "feishu",
        "accountId": "zhuguan"
      }
    },
    {
      "agentId": "yuangong01",
      "match": {
        "channel": "feishu",
        "accountId": "yuangong01"
      }
    }
  ],
5、检查绑定信息

openclaw agents bindings 或 openclaw agents list --bindings

6、验证openclaw与飞书配置是否生产

在飞书中分别与机器人单独或拉入群中对话看是否有大模型返回的信息(如果没回消息看下openclaw窗口的日志,有需要开通权限的ctrl+鼠标左键直接跳转开通即可)。
取决于单聊和群聊的策略:
群聊策略配置open时,在群里@即可聊天。
私聊策略配置:
“dmPolicy”: "pairing"时(默认值),会返回一段授权命令,执行下命令后,即可聊天。执行命令后会在.openclaw/creadentials下生成一个对应channels/feishu/accounts下accountId的*-allowFrom.json文件记录授权用户飞书ID。
“dmPolicy”: “open”,且allowFrom中有*时,则所有用户可以直接访问聊天。

7、在飞书中验证

配置完人设后,可以在飞书中对不同的机器人通过"你是谁?"“你能做什么?”"如何完成这项任务?"等问题测试回复效果。

8、飞书调用OpenClaw日志解读
09:29:39+08:00 [feishu] feishu[yuangong01]: received message from ou_779089c2eca41f420101574bae2a0460 in oc_310884827e242fad8bab129831807793 (p2p)
09:29:39+08:00 [feishu] feishu[yuangong01]: Feishu[yuangong01] DM from ou_779089c2eca41f420101574bae2a0460: 你用什么模型算的
09:29:39+08:00 [feishu] feishu[yuangong01]: dispatching to agent (session=agent:yuangong01:feishu:direct:ou_779089c2eca41f420101574bae2a0460)
09:30:34+08:00 [feishu] feishu[yuangong01]: dispatch complete (queuedFinal=true, replies=1)

参数解释:
received :OpenClaw接收到飞书机器人消息
Feishu[xxx] DM from:接收到的消息内容
dispatching to agent xxx:消息分发给指定的agent
dispatch complete:OpenClaw处理完成并返回给飞书。
- queuedFinal:
	false = 未结束(还在思考、还在调用工具、还在重试)
	true = 彻底结束(不会再输出了)
- replies:回复的消息条数。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。