钉钉群机器人撤回信息-实操详细教程

仅支持企业应用

1.在开发平台创建机器人,勾选机器人配置

发布

最终要在这里能找到才算成功

注:发布后要在钉钉内部群添加机器人选择新建的

第一步:获取accessToken(程序权限)

找到Appkey和AppSecret

复制代码
import requests
import json

def get_access_token():
    url = "https://api.dingtalk.com/v1.0/oauth2/accessToken"
    headers = {
        "Content-Type": "application/json"
    }
    payload = {
        "appKey": '你找到的',
        "appSecret": '你找到的'
    }
    response = requests.post(url, headers=headers, json=payload)
    if response.status_code == 200:
        data = response.json()
        access_token = data.get("accessToken")
        return access_token
    else:
        print("Failed to get access token:", response.text)
        return None


access_token = get_access_token()
print("Access Token:", access_token)

第二步:获取robotCode

第三步获取:openConversationId(群id)

已存在的企业内部群,可调用根据corpid选择会话获取

开发者后台统一登录 - 钉钉统一身份认证

复制代码
import requests

# 替换成自己的

app_key = "你对应的"
app_secret = "你对应的"
corp_id = "你对应的"
group_name = "你对应的"

def get_group_ids(access_token):
    url = "https://oapi.dingtalk.com/chat/list"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {access_token}"
    }
    params = {
        "size": 200,
        "offset": 0,
        "corpId": corp_id
    }
    response = requests.get(url, headers=headers, params=params)
    if response.status_code == 200:
        data = response.json()
        group_list = data.get("chatlist", [])
        for group in group_list:
            if group.get("name") == group_name:
                return group.get("chatid")
        print(f"No group named {group_name} found.")
        return None
    else:
        print("Failed to get group IDs:", response.text)
        return None

def get_access_token():
    url = "https://api.dingtalk.com/v1.0/oauth2/accessToken"
    headers = {
        "Content-Type": "application/json"
    }
    payload = {
        "appKey": '你对应的',
        "appSecret": '你对应的'
    }
    response = requests.post(url, headers=headers, json=payload)
    if response.status_code == 200:
        data = response.json()
        access_token = data.get("accessToken")
        return access_token
    else:
        print("Failed to get access token:", response.text)
        return None


access_token = get_access_token()
print("Access Token:", access_token)


group_ids = get_group_ids(access_token)

print("Group IDs:", group_ids)  #即为access_token

第四步:获取processQueryKeys(消息ID)

复制代码
import requests

url = 'https://api.dingtalk.com/v1.0/robot/groupMessages/send'
headers = {
    'Content-Type': 'application/json',
    'x-acs-dingtalk-access-token': '换成你自己的'
}
data = {
    "msgParam": '{"content":"对应要删的消息"}',
    "msgKey": "sampleText",
    "openConversationId": "换成你自己的",
    "robotCode": "换成你自己的"
}

response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
    result = response.json()
    process_query_key = result.get("processQueryKey")
    print("processQueryKey:", process_query_key)
else:
    print("Request failed with status code:", response.status_code)
    print("Error:", response.text)

第五步:进行消息撤回

复制代码
import requests

def recall_message(access_token, open_conversation_id, robot_code, message_ids):
    url = f"https://api.dingtalk.com/v1.0/robot/groupMessages/recall?x-acs-dingtalk-access-token={access_token}"
    
    data = {
        "openConversationId": open_conversation_id,
        "robotCode": robot_code,
        "processQueryKeys": message_ids
    }
    
    headers = {
        "Content-Type": "application/json"
    }
    
    try:
        response = requests.post(url, json=data, headers=headers)
        
        if response.status_code == 200:
            print("消息撤回成功")
        else:
            print("消息撤回失败")
            # 打印失败理由
            print(response.text)
    except requests.exceptions.RequestException as err:
        print(f"请求发生错误: {err}")

# 设置访问令牌、群会话ID、机器人代码和要撤回的消息ID列表
access_token = "your access token"
open_conversation_id = "XXXX"
robot_code = "XXXX"
message_ids = ["String"]

# 调用撤回消息函数
recall_message(access_token, open_conversation_id, robot_code, message_ids)
相关推荐
别动我齐刘海6 小时前
机器人运动控制学习4——状态估计 State Estimation
c++·人工智能·学习·目标检测·机器学习·机器人·自动驾驶
AI备案指南-满满7 小时前
人工智能拟人化互动服务安全自评估报告的评估要点有哪些?
人工智能·算法·安全·机器人·大模型备案·算法备案
audyxiao00110 小时前
热点快讯│2026年世界机器人大会精彩看点
人工智能·机器人·具身智能·世界机器人大会·wrc2026
熬夜磕代码丶12 小时前
2026 VLA训练数据指南:如何用 Web Scraping 和 Bright Data 扩大机器人训练数据
机器人·具身智能·亮数据·网络数据
皮皮虾❀12 小时前
钉钉AI服务商+AI表格+AI听记+千问办公全产品线一体化实战:从“办公工具各自为战”到“服务商打包部署全套AI办公能力
人工智能·钉钉
皮皮虾❀12 小时前
钉钉AI服务商+知识库梳理+Agent编排+系统集成一体化实战:从“AI回答不专业”到“服务商梳理企业知识库训练专属AI助手
人工智能·钉钉
明德扬13 小时前
机器人为什么需要“感知—控制—计算”一体化?FPGA 多传感器底板设计要点
fpga开发·机器人·fpga
paopao_djshddhdj13 小时前
钉钉培训系统功能与收费详解:企业数字化培训的优选方案
运维·钉钉
chunmiao303214 小时前
Wan3.0正式上线:30秒视频生成,文档PPT也能变视频
机器人
皮皮虾❀15 小时前
钉钉AI服务商+智能体高阶定制+DEAP旗舰版一体化实战:从“通用AI不满足”到“独享算力+自有模型接入的专属智能体
人工智能·钉钉