微信用程序发送消息经常被限制 ,平替方案 飞书和钉钉的限制对比 python发送消息
飞书(Lark)和钉钉(DingTalk)作为企业级通讯工具,相较于微信,对自动化消息发送的限制较少。它们都提供了开放的 API 接口,允许开发者通过编程方式发送消息。以下是对飞书和钉钉的详细分析:飞书是字节跳动推出的企业级通讯工具,提供了丰富的 API 接口,支持消息发送、群管理、用户管理等功能。2. 钉钉(DingTalk)钉钉是阿里巴巴推出的企业级通讯工具,同样提供了丰富的 API 接口,支
飞书(Lark)和钉钉(DingTalk)作为企业级通讯工具,相较于微信,对自动化消息发送的限制较少。它们都提供了开放的 API 接口,允许开发者通过编程方式发送消息。以下是对飞书和钉钉的详细分析:
1. 飞书(Lark)
飞书是字节跳动推出的企业级通讯工具,提供了丰富的 API 接口,支持消息发送、群管理、用户管理等功能。
限制情况
- 开放性强:飞书的 API 接口对开发者非常友好,支持多种消息类型(文本、图片、富文本、卡片消息等)。
- 权限控制:飞书的消息发送需要管理员授权,确保只有合法的应用可以发送消息。
- 频率限制:飞书对 API 调用有一定的频率限制,但通常足够满足企业日常需求。
- 安全性高:飞书支持 OAuth2.0 认证和 IP 白名单,确保接口调用的安全性。
如何使用飞书 API 发送消息
- 创建应用:
- 登录飞书开发者平台(https://open.feishu.cn/)。
- 创建一个企业自建应用,并获取
App ID
和App Secret
。
- 获取访问令牌(Access Token):
- 使用
App ID
和App Secret
调用 API 获取Access Token
。
- 使用
- 点击链接申请并开通任一权限即可: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_id
、user_id
、chat_id
和 email
的方法:
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_id
、user_id
、union_id
)有不同的用途和获取方式,需根据实际需求选择。
如果还有其他问题,可以参考飞书开放平台的官方文档或 API 调试工具。
2. 钉钉(DingTalk)
钉钉是阿里巴巴推出的企业级通讯工具,同样提供了丰富的 API 接口,支持消息发送、群管理、审批流程等功能。
限制情况
- 开放性强:钉钉的 API 接口对开发者非常友好,支持多种消息类型(文本、链接、Markdown、卡片消息等)。
- 权限控制:钉钉的消息发送需要管理员授权,确保只有合法的应用可以发送消息。
- 频率限制:钉钉对 API 调用有一定的频率限制,但通常足够满足企业日常需求。
- 安全性高:钉钉支持 OAuth2.0 认证和 IP 白名单,确保接口调用的安全性。
如何使用钉钉 API 发送消息
- 创建应用:
- 登录钉钉开发者平台(https://open.dingtalk.com/)。
- 创建一个企业内部应用或小程序,并获取
AppKey
和AppSecret
。
- 获取访问令牌(Access Token):
- 使用
AppKey
和AppSecret
调用 API 获取Access Token
。
- 使用
- 发送消息:
- 使用
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,避免微信的限制问题。
如果你需要更详细的实现步骤或示例代码,请随时提问!
更多推荐
所有评论(0)