小龙虾配置飞书机器人(适合本地部署)

🚀 OpenClaw 手把手教学:配置飞书机器人

📖 目录

  1. 前置准备
  2. 创建飞书应用
  3. 配置机器人能力
  4. 获取必要凭证
  5. [配置 OpenClaw](#配置 OpenClaw)
  6. 测试机器人

前置准备

在开始之前,请确保你具备以下条件:

✅ 必需条件

  • OpenClaw 已安装

    bash 复制代码
    # 检查是否已安装
    openclaw --version
  • 飞书管理员权限

    • 需要创建企业自建应用的权限
    • 或联系管理员协助创建

📋 准备清单

  • OpenClaw 已安装并运行
  • 有飞书企业管理员权限
  • 基本的命令行操作能力

创建飞书应用

步骤 1:进入飞书开放平台

  1. 打开浏览器,访问 飞书开放平台
  2. 使用��书账号登录
  3. 点击右上角 "开发者后台"

步骤 2:创建企业自建应用

  1. 点击 "创建企业自建应用"

  2. 填写应用信息:

    • 应用名称OpenClaw AI 助手(可自定义)
    • 应用描述基于 OpenClaw 的 AI 智能助手(可自定义)
    • 应用图标:上传一个喜欢的图标(建议 120x120)
  3. 点击 "创建"

步骤 3:记录应用信息

创建成功后,你会看到:

复制代码
App ID: cli_xxxxxxxxxxxxxxxx
App Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

⚠️ 重要:立即保存这两个值,后面会用到!


配置机器人能力

步骤 4:启用机器人功能

在应用详情里面,添加应用能力,选择机器人。

步骤 5:配置权限

  1. 点击左侧 "权限管理"
  2. 搜索并添加以下权限:
权限名称 权限标识 用途
获取与发送单聊、群组消息 im:message 接收和发送消息
获取用户基本信息 contact:user.base:readonly 获取用户信息
获取群组信息 im:chat:readonly 获取群聊信息
发送富文本消息 im:message:send_as_bot 以机器人身份发送消息
  1. 点击 "批量添加""确认"

步骤 6:发布版本(重要)

  1. 点击左侧 "版本管理与发布"
  2. 点击 "创建版本"
  3. 填写版本信息:
    • 版本号1.0.0
    • 更新说明首次发布,支持基础对话功能
  4. 点击 "保存"
  5. 点击 "申请发布"
  6. 等待管理员审批(通常几分钟内)

获取必要凭证

步骤 7:获取 App ID 和 App Secret

  1. 在应用详情页,点击左侧 "凭证与基础信息"

  2. 你会看到:

    复制代码
    App ID: cli_xxx
    App Secret: xxxxx

就是前面保存的。这个是开发者应用的凭证。其实也是对应机器人的凭证。

配置 OpenClaw

步骤 8:创建配置文件

编辑 OpenClaw 配置文件:

或者直接和龙虾对话配置:我正在配置飞书,对应的开发者应用 appid 是 xxx, appSecret 是 xxx ,帮我配置一下

步骤 11:重启 OpenClaw

bash 复制代码
# 重启服务
openclaw gateway

# 检查状态
openclaw status

预期输出:

复制代码
✓ OpenClaw 运行中
✓ Gateway: http://0.0.0.0:18789
✓ 飞书通道: 已连接

测试机器人

由于本地部署无法实现双向交流(其实也可以通过ngrok 实现,但是不安全),所以这里是实现单项推送。

首先我们已经配置好了机器人和开发者应用的信息。那么怎么让机器人给我们的飞书发送消息呢。

首先每个飞书在每个开发者应用中,都有一个唯一的openid (同一个飞书用户在不同的应用下openid 不同),所以我们需要获取在对应应用下的openid 。正常我们是看不到的,需要通过接口获取。

shell 复制代码
#!/bin/bash

# =================🔧 配置区域 (请修改这里) =================
APP_ID="cli_xxx"
APP_SECRET="xxx"
PHONE_NUMBER="xxxx"  # 替换为你要查询的手机号 (不需要加+86,接口通常自动识别或根据企业设置,若报错可尝试 "+86156...")
# =======================================================

echo "🚀 开始执行三步查询流程..."
echo "--------------------------------------------------"

# --- 第一步:获取 tenant_access_token ---
echo "1️⃣ 正在获取 Access Token..."
TOKEN_RESP=$(curl -s -X POST "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" \
  -H "Content-Type: application/json" \
  -d "{
    \"app_id\": \"$APP_ID\",
    \"app_secret\": \"$APP_SECRET\"
  }")

# 解析 Token
ACCESS_TOKEN=$(echo "$TOKEN_RESP" | grep -o '"tenant_access_token":"[^"]*"' | cut -d'"' -f4)

if [ -z "$ACCESS_TOKEN" ]; then
  echo "❌ 第一步失败:无法获取 Token。"
  echo "返回信息: $TOKEN_RESP"
  exit 1
fi
echo "✅ Token 获取成功: ${ACCESS_TOKEN:0:10}..."
echo ""

# --- 第二步:通过手机号获取 user_id ---
echo "2️⃣ 正在通过手机号 ($PHONE_NUMBER) 查询 user_id..."
# 注意:根据你的案例,mobiles 数组直接传字符串即可
STEP2_RESP=$(curl -s -X POST "https://open.feishu.cn/open-apis/contact/v3/users/batch_get_id?user_id_type=user_id" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"emails\": [],
    \"include_resigned\": false,
    \"mobiles\": [
        \"$PHONE_NUMBER\"
    ]
}")

# 解析 user_id (从 data.user_list[0].user_id 中提取)
# 使用 python 解析更稳妥,如果没装 python 则用 grep/sed 简易解析
if command -v python3 &> /dev/null; then
    USER_ID=$(echo "$STEP2_RESP" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('data',{}).get('user_list',[{}])[0].get('user_id',''))" 2>/dev/null)
else
    # 简易解析 fallback
    USER_ID=$(echo "$STEP2_RESP" | grep -o '"user_id":"[^"]*"' | head -1 | cut -d'"' -f4)
fi

if [ -z "$USER_ID" ]; then
  echo "❌ 第二步失败:未找到 user_id。"
  echo "返回信息: $STEP2_RESP"
  echo "💡 提示:请检查手机号是否正确,或应用是否有【读取用户手机号】权限。"
  exit 1
fi
echo "✅ 找到 user_id: $USER_ID"
echo ""

# --- 第三步:通过 user_id 获取 open_id ---
echo "3️⃣ 正在通过 user_id ($USER_ID) 查询 open_id..."
# 构造 URL: .../users/{user_id}?department_id_type=open_department_id&user_id_type=user_id
TARGET_URL="https://open.feishu.cn/open-apis/contact/v3/users/${USER_ID}?department_id_type=open_department_id&user_id_type=user_id"

STEP3_RESP=$(curl -s -X GET "$TARGET_URL" \
  -H "Authorization: Bearer $ACCESS_TOKEN")

# 解析 open_id
if command -v python3 &> /dev/null; then
    OPEN_ID=$(echo "$STEP3_RESP" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('data',{}).get('user',{}).get('open_id',''))" 2>/dev/null)
    NAME=$(echo "$STEP3_RESP" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('data',{}).get('user',{}).get('name',''))" 2>/dev/null)
else
    OPEN_ID=$(echo "$STEP3_RESP" | grep -o '"open_id":"[^"]*"' | head -1 | cut -d'"' -f4)
    NAME=$(echo "$STEP3_RESP" | grep -o '"name":"[^"]*"' | head -1 | cut -d'"' -f4)
fi

if [ -z "$OPEN_ID" ]; then
  echo "❌ 第三步失败:未找到 open_id。"
  echo "返回信息: $STEP3_RESP"
  echo "💡 提示:请检查应用是否有【读取用户信息】权限。"
  exit 1
fi

echo "--------------------------------------------------"
echo "🎉 查询成功!"
echo "👤 姓名:$NAME"
echo "🆔 User ID: $USER_ID"
echo "🔑 Open ID : $OPEN_ID"
echo "--------------------------------------------------"

修改上面的3个配置:

APP_ID="cli_xxx"

APP_SECRET="xxx"

PHONE_NUMBER="xxxx" # 替换为你要查询的手机号 (不需要加+86,接口通常自动识别或根据企业设置,若报错可尝试 "+86156...")

然后保存为lark.sh。 然后 sh lark.sh(如果是win,就把这段代码给到豆包,让它翻译成win 版本的)

拿到openid 之后,告诉小龙虾,你的飞书用户openid 是这个。让它记下来。

然后就可以告诉小龙虾做一些事情了,比如写一篇最新的育儿文章,然后发到你的飞书。

相关推荐
GitCode官方3 小时前
WGAI v5.2 重磅升级:解锁 YOLOv26 支持与 AGV 机器人巡检核心能力
人工智能·yolo·机器人·开源·atomgit
追雨潮3 小时前
OpenClaw 完整部署指南(Ubuntu + 阿里云海外版)+ 飞书接入 + 2026.3.x 权限修复--新手教程
ubuntu·阿里云·飞书·openclaw
IT WorryFree3 小时前
飞书应用权限全解析:权限类型、等级划分与审核规则推荐(管理员必备)
飞书
gf132111112 小时前
python_查询并删除飞书多维表格中的记录
java·python·飞书
QYR-分析16 小时前
2026-双足行走机器人行业发展综述
人工智能·机器人
智能交通技术18 小时前
iTSTech:自动驾驶、无人机与机器人在物流中的协同应用场景分析 2026
人工智能·机器学习·机器人·自动驾驶·无人机
爱学习的小道长19 小时前
OpenClaw 解决运行一些漏洞
安全·ai·飞书
ZPC821020 小时前
PPO 在ROS2 中训练与推理
人工智能·算法·机器人
才兄说20 小时前
机器人租赁效果好吗?任务前现场演示
机器人