飞书(Lark)和钉钉(DingTalk)作为企业级通讯工具,相较于微信,对自动化消息发送的限制较少。它们都提供了开放的 API 接口,允许开发者通过编程方式发送消息。以下是对飞书和钉钉的详细分析:


1. 飞书(Lark)

飞书是字节跳动推出的企业级通讯工具,提供了丰富的 API 接口,支持消息发送、群管理、用户管理等功能。

限制情况

  • 开放性强:飞书的 API 接口对开发者非常友好,支持多种消息类型(文本、图片、富文本、卡片消息等)。
  • 权限控制:飞书的消息发送需要管理员授权,确保只有合法的应用可以发送消息。
  • 频率限制:飞书对 API 调用有一定的频率限制,但通常足够满足企业日常需求。
  • 安全性高:飞书支持 OAuth2.0 认证和 IP 白名单,确保接口调用的安全性。

如何使用飞书 API 发送消息

  1. 创建应用
    • 登录飞书开发者平台(https://open.feishu.cn/)。
    • 创建一个企业自建应用,并获取 App IDApp Secret
  2. 获取访问令牌(Access Token)
    • 使用 App IDApp Secret 调用 API 获取 Access Token
  3. 点击链接申请并开通任一权限即可:https://open.feishu.cn/app/{你的appid}/auth?q=contact:contact.base:readonly,contact:department.organize:readonly,contact:contact:access_as_app,contact:contact:readonly,contact:contact:readonly_as_app&op_from=openapi&token_type=tenant
    4 发送消息
    • 使用 Access Token 调用消息发送接口。
      如果有提示
      Error: Access denied. One of the following scopes is required: [contact:contact.base:readonly, contact:department.organize:readonly, contact:contact:access_as_app, contact:contact:readonly, contact:contact:readonly_as_app].应用尚未开通所需的应用身份权限:[contact:contact.base:readonly, contact:department.organize:readonly, contact:contact:access_as_app, contact:contact:readonly, contact:contact:readonly_as_app],

点击链接申请并开通任一权限即可:https://open.feishu.cn/app/{你的appid}/auth?q=contact:contact.base:readonly,contact:department.organize:readonly,contact:contact:access_as_app,contact:contact:readonly,contact:contact:readonly_as_app&op_from=openapi&token_type=tenant

令牌授权

tenant_access_token

如果你的业务逻辑不需要操作用户的数据资源,仅需操作应用自身拥有的资源,例如在应用自身的文档目录空间下创建云文档,则推荐使用 tenant_access_token,无需额外申请授权。

user_access_token

如果你的业务逻辑需要操作用户的数据资源,例如需要在用户的文档目录空间下创建云文档,则推荐使用 user_access_token,无需额外申请授权。

该情况下如果使用 tenant_access_token,则需额外在资源层面为应用添加相应的授权。例如,如果使用 tenant_access_token 调用通讯录,则需在飞书开发者后台的权限管理页面配置应用的通讯录权限范围;而使用 user_access_token 则无需单独配置通讯录权限范围,遵循 user_access_token 所属用户的通讯录权限范围。

###报错 {
“code”: 41050,
“msg”: “no user authority error”,
“error”: {
“log_id”: “20250225094837CCA3CA144D40791F1B03”,
“troubleshooter”: "排查建议查看(Troubleshooting suggestions): https://open.feishu.cn/search?from=openapi&log_id=20250225094837CCA3CA144D40791F1B03&code=41050&method_id=6925375841992245275 "
}
}

排查建议
无用户权限。需将当前操作的用户添加到应用或用户的权限范围内。根据调用 API 的身份不同,解决方案也不同,具体说明如下:
使用 tenant_access_token 调用 API
当前操作的用户需要添加在应用的通讯录权限范围内。通讯录权限范围定义了应用在调用通讯录 API 时可获取的部门、用户的数据范围。应用无法访问不在通讯录权限范围内的数据。
由开发者登录开发者后台,在应用详情页的 开发配置 > 权限管理 > 数据权限 页面内,配置 通讯录权限范围,添加指定用户。

5 权限增加用户基本信息,消息中群基本信息,发送消息信息

应用管理 添加应用中,增加机器人应用

6 在开发者中心发布应用后

管理员在https://feishu.cn/admin ,后台管理

登录管理后台。

在左侧导航栏,选择 工作台 > 应用管理。

在页面右上角,点击 设置管理规则。

在 自建应用审核规则 页签内,选择指定的审核方式,并点击 保存。

8 超级用户管理后台 ,吧这个消息机器人,授权给谁使用

https://feishu.cn/admin/appCenter/manage/{你的应用id}

示例代码
import requests

# 飞书 API 配置
app_id = "你的App ID"
app_secret = "你的App Secret"

# 获取 Access Token
url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
data = {
    "app_id": app_id,
    "app_secret": app_secret
}
response = requests.post(url, json=data).json()
tenant_access_token = response.get("tenant_access_token")

# 发送消息
send_url = "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id""
headers = {
    "Authorization": f"Bearer {tenant_access_token}",
    "Content-Type": "application/json"
}
data = {
    "receive_id": "ou_用户ID",  # 接收消息的用户或群组 ID
    "msg_type": "text",
    "content": '{"text":"你好,这是一条自动发送的消息!"}'
}
response = requests.post(send_url, headers=headers, json=data).json()
print(response)

以下是获取飞书的 open_iduser_idchat_idemail 的方法:

1. 获取 open_id

  • 通过 API 调试台:登录飞书开放平台的 API 调试台,选择“通过手机号或邮箱获取用户 ID”接口,输入手机号或邮箱后调用接口即可获取对应用户的 open_id
  • 通过接口调用:使用飞书提供的接口(如 /open-apis/contact/v3/users/batch_get_id),传入手机号或邮箱,返回结果中会包含 open_id

2. 获取 user_id

  • 通过管理后台:租户管理员可以在飞书管理后台查看用户详情,获取 user_id
  • 通过接口调用:使用上述接口(/open-apis/contact/v3/users/batch_get_id),在返回结果中选择 user_id
  • 权限要求:需要开启“获取用户 User ID”权限。

3. 获取 chat_id(群聊 ID)

  • 通过 API 调试台:登录飞书开放平台的 API 调试台,选择“获取群信息”接口,输入相关参数后调用接口,即可获取群聊的 chat_id
  • 通过机器人加入群聊:创建一个应用并开启机器人能力,将机器人加入目标群聊后,调用接口获取机器人所在的群列表,从中获取 chat_id
  • 通过创建群接口:如果是由机器人创建群聊,可在创建群的接口响应中直接获取 chat_id

4. 获取 email

  • 通过接口调用:使用接口(如 /open-apis/contact/v3/users/batch_get_id),在返回结果中会包含用户的 email
  • 通过用户信息接口:调用获取用户详情的接口(如 /open-apis/authen/v1/access_token),返回结果中会包含用户的邮箱信息。

注意事项

  • 获取用户信息的接口通常需要相应的权限,确保在飞书开放平台中正确配置权限。
  • 不同的 ID 类型(如 open_iduser_idunion_id)有不同的用途和获取方式,需根据实际需求选择。

如果还有其他问题,可以参考飞书开放平台的官方文档或 API 调试工具。

2. 钉钉(DingTalk)

钉钉是阿里巴巴推出的企业级通讯工具,同样提供了丰富的 API 接口,支持消息发送、群管理、审批流程等功能。

限制情况

  • 开放性强:钉钉的 API 接口对开发者非常友好,支持多种消息类型(文本、链接、Markdown、卡片消息等)。
  • 权限控制:钉钉的消息发送需要管理员授权,确保只有合法的应用可以发送消息。
  • 频率限制:钉钉对 API 调用有一定的频率限制,但通常足够满足企业日常需求。
  • 安全性高:钉钉支持 OAuth2.0 认证和 IP 白名单,确保接口调用的安全性。

如何使用钉钉 API 发送消息

  1. 创建应用
    • 登录钉钉开发者平台(https://open.dingtalk.com/)。
    • 创建一个企业内部应用或小程序,并获取 AppKeyAppSecret
  2. 获取访问令牌(Access Token)
    • 使用 AppKeyAppSecret 调用 API 获取 Access Token
  3. 发送消息
    • 使用 Access Token 调用消息发送接口。
示例代码
import requests

# 钉钉 API 配置
app_key = "你的AppKey"
app_secret = "你的AppSecret"

# 获取 Access Token
url = f"https://oapi.dingtalk.com/gettoken?appkey={app_key}&appsecret={app_secret}"
response = requests.get(url).json()
access_token = response.get("access_token")

# 发送消息
send_url = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"
headers = {
    "Content-Type": "application/json"
}
data = {
    "agent_id": "你的AgentId",  # 应用的 AgentId
    "userid_list": "用户ID",    # 接收消息的用户 ID
    "msg": {
        "msgtype": "text",
        "text": {
            "content": "你好,这是一条自动发送的消息!"
        }
    }
}
response = requests.post(send_url, headers=headers, json=data).json()
print(response)

如果是 群# 向群聊发送消息
message_url = ‘https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id’

但是群消息的话,需要管理吧这个聊天机器人 拉到群里面。

3. 飞书和钉钉的限制对比

特性 飞书(Lark) 钉钉(DingTalk)
API 开放性 高,支持多种消息类型 高,支持多种消息类型
权限控制 需要管理员授权 需要管理员授权
频率限制 有频率限制,但通常足够使用 有频率限制,但通常足够使用
安全性 支持 OAuth2.0 和 IP 白名单 支持 OAuth2.0 和 IP 白名单
开发文档 详细,易于上手 详细,易于上手
适用场景 企业内部通讯、自动化办公 企业内部通讯、自动化办公

4. 总结

  • 飞书和钉钉 都提供了开放的 API 接口,支持消息发送和自动化操作,且限制较少。
  • 相较于微信,飞书和钉钉更适合企业级应用场景,且 API 调用更加稳定。
  • 如果你需要发送消息,推荐使用飞书或钉钉的 API,避免微信的限制问题。

如果你需要更详细的实现步骤或示例代码,请随时提问!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐