钉钉群机器人签名版SDK—Python3版

Python对接钉钉接口 dingtalk-sdk 网上关于Python调用钉钉SDK的例子还是比较少的,特此整理。记录自己的点滴进步。 安装钉钉SDK pip3 install dingtalk-sdk pip3 install dingtalk-sdk[cryptography] from dingtalk import SecretClient, AppKeyClient app_key = "你的app_key" app_secret = "你的app_secret" corp_id = "你的agentid(crop_id)" # 新 ac 阅读详情

本文介绍如何使用Python3程序通过钉钉群机器人发送消息到群中。
钉钉群机器人有三种安全设置,本文使用加签方式,理论上兼容其他两种。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#钉钉群机器人 Python3版

import time,datetime
import hmac,hashlib,base64
import urllib.parse
import requests
import json

class DINGDING:

    apiurl = "https://oapi.dingtalk.com"

    def __init__(self, accesstoken, secret):
        self.access_token   = accesstoken
        self.secret         = secret

    # 发送消息,群机器人
    def send_message_group(self, type, data):
        if type not in ["text", "link", "markdown", "actionCard", "feedCard"] or not data:
            raise Exception("ERROR type %s or empty data"%(type))
            return

        msg = {
            'msgtype' : type,
        }

        if type == "text":
            msg[type] = {'content' : data}
        elif type == "link":
            msg[type] = data
        elif type == "markdown":
            msg[type] = data
        elif type == "actionCard":
            msg[type] = data
        elif type == "feedCard":
            msg[type] = {'links' : data}
        else:
            msg["msgtype"] = "text"
            msg["text"] = {'content' : "不支持的消息类型 " + type}

        params = {
            'timestamp'    :str(round(time.time() * 1000))
        }
        params['sign'] = self.signature(params)
        url = self.apiurl + '/robot/send?access_token=%s&timestamp=%s&sign=%s'%(self.access_token, params['timestamp'], params['sign'])
        return self.http_request_v2(url, method = "POST", headers=self.header(params), params = msg)
    
    # headers头
    def header(self, params):
        headers = {}
        headers['Content-Type'] = "application/json"
        return headers

    # 签名函数
    def signature(self, params):
        string_to_sign = (params['timestamp'] + "\n" + self.secret)
        hmac_code = hmac.new(self.secret.encode('utf-8'), string_to_sign.encode('utf-8'), digestmod=hashlib.sha256).digest()
        return urllib.parse.quote((base64.b64encode(hmac_code)))

    # 请求函数
    def http_request_v2(self, url, method="GET", headers={}, params=None):
        headers['User-Agent'] = 'Mozilla/5.0 \(Windows NT 6.1; WOW64\) AppleWebKit/537.36 \(KHTML, like Gecko\) Chrome/39.0.2171.71 Safari/537.36'
        if method == "GET":
            response = requests.get(url, headers=headers)
        elif method == "POST":
            data = bytes(json.dumps(params), 'utf-8')
            response = requests.post(url, headers=headers, data=data)
        elif method == "DELETE":
            response = requests.delete(url, headers=headers, data=data)

        result = response.json()
        return result

调用方法

dingding = DINGDING("", "")

result = dingding.send_message_group("text", "https://blog.youkuaiyun.com/bitquant\n比特量化\n" + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'));

link_card = {"title":"比特量化", "text":"今年中秋节公司有豪礼相送", "picUrl":"http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png", "messageUrl" :"https://www.baidu.com/"}
result = dingding.send_message_group("link", link_card);

markdown_card = {"title":"比特量化", "text":"#### 杭州天气 @150XXXXXXXX \n> 9度,西北风1级,空气良89,相对温度73%\n> ![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)\n> ###### 10点20分发布 [天气](https://www.dingtalk.com) \n"}
result = dingding.send_message_group("markdown", markdown_card);

card = {
    "title": "乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身", 
    "text": '![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png)  ### 乔布斯 20 年前想打造的苹果咖啡厅 \n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划', 
    "btnOrientation": "0", 
    "singleTitle" : "阅读全文",
    "singleURL" : "https://www.dingtalk.com/"
}

card = {
    "title": "我 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身", 
    "text": "![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png) \n\n #### 乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划", 
    "hideAvatar": "0", 
    "btnOrientation": "0", 
    "btns": [
        {
            "title": "内容不错", 
            "actionURL": "https://www.dingtalk.com/"
        }, 
        {
            "title": "不感兴趣", 
            "actionURL": "https://www.dingtalk.com/"
        }
    ]
}
result = dingding.send_message_group("actionCard", card);

data = [] #列表
data.append({"title":"中秋节礼品领取", "picURL":"http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png", "messageURL" :"https://www.baidu.com/"})
data.append({"title":"多图文2标题", "picURL":"http://d.hiphotos.bdimg.com/wisegame/pic/item/f3529822720e0cf3ac9f1ada0846f21fbe09aaa3.jpg", "messageURL" :"https://www.baidu.com/"})
data.append({"title":"多图文3标题", "picURL":"http://g.hiphotos.bdimg.com/wisegame/pic/item/18cb0a46f21fbe090d338acc6a600c338644adfd.jpg", "messageURL" :"https://www.baidu.com/"})
# # print(data)
result = dingding.send_message_group("feedCard", data);
print(result)
    pass

效果图
在这里插入图片描述

钉钉python接口对接,同步通讯录组织架构 python通过钉钉接口获取钉钉企业的信息。 1. 安装钉钉sdk pip install dingtalk-sdk 例子:https://github.com/007gzs/dingtalk-django-example 文档:https://dingtalk-sdk.readthedocs.io/zh_CN/latest/client/index.html 可以通过 pip install dingtalk-sdk进行下载安装,然后就可以使用了。 在install dingtalk-sdk之前需要pi 阅读详情

相关推荐

python项目对接钉钉SDK

钉钉SDK 对接sdk还是遇到不少问题的 文章目录钉钉SDK一. 第三方web网站扫码登录1. 流程二. 加解密1.注册事件三. 调试 钉钉python版SDK文档地址:https://dingtalk-sdk.readthedocs.io/zh_CN/latest/ 钉钉官方服务端文档:https://open-doc.dingtalk.com/microapp/serverapi2 为了避...

宅神的博客 1万+

python/Django对接dingtalk-sdk企业内部开发对接钉钉过程手记

python/Django对接dingtalk-sdk企业内部开发对接钉钉过程手记

Runaway_pilot 5761

VBA一键汇总多个工作簿-名称相同的工作表-的指定区域数据

VBA一键汇总多个工作簿-名称相同的工作表-的指定区域数据 日常工作,我们经常需要汇总相同格式的工作簿的某个工作表的数据 如1月业绩、2月业绩。。。。12月业绩等 姓名 数量 数据22 22 数据23 23 数据24 24 数据25 25 数据26 26 数据27 27 数据28 28 数据29 29 数据30 30 数据31 31 数据32 32 数据33 33 数据34

陈表达的博客 5981

【练习】通过python SDK获取钉钉企业内部应用token&子部门ID列表

练习钉钉通过Python SDK获取token(get方式)和获取部门管理子部门ID列表(POST方式)

qq_23938507的博客 1225

PCIE Lane Margining Linux 环境配置

Copy all the provided files in folder PYC38 or PYC310 to the created pcie_lmt folder. Index of /ftp/python/3.8.10/Copy below commands to a file and rename it as "scan_pcie.py", the commands are from "685662 PCIe-LMT-Gen4_Gen5-r0p77.pdf" in the lane margi

mysongshine的博客 1436

IntelliJ IDEA 2025.1 + Gradle 镜像配置避坑指南:解决依赖下载慢的终极方案

本文针对IntelliJ IDEA 2025.1开发环境中Gradle依赖下载缓慢的问题,提供了详细的镜像配置避坑指南。通过解析Gradle依赖解析机制,重点指导如何正确配置阿里云等国内镜像仓库,并分享验证配置生效、排查常见错误及高级优化技巧,旨在彻底解决依赖下载难题,提升开发效率。

weixin_28835551的博客 532

【亲测免费】 钉钉Python SDK完全指南

钉钉Python SDK完全指南 1. 项目介绍 钉钉dingtalk-sdk 是一个专为开发者设计的,用于轻松集成钉钉开放平台API的Python库。它支持多种Python环境,包括Python 2.7及3.4以上的版本,并且兼容cryptography和PyCrypto库进行消息的加密与解密操作。此SDK旨在简化企业内部开发以及应用服务商(ISV)对接钉钉的各项功能,提供稳定而全面的接口调用能...

gitblog_00518的博客 2192

浅谈车载控制器产线EOL实现方式

1、控制器生产产线上电路检测设计 2、客户总装产线检测设计

u012406840的博客 2万+

【亲测免费】 钉钉 Python SDK 安装与使用教程

钉钉 Python SDK 安装与使用教程 1. 项目的目录结构及介绍 钉钉 Python SDK 项目的目录结构如下: dingtalk-sdk/ ├── dingtalk/ │ ├── __init__.py │ ├── api.py │ ├── client.py │ ├── ... ├── docs/ │ ├── conf.py │ ├── index.rst │ ...

gitblog_00814的博客 815

NLP实践——利用自己的语料进行Mask Language Model预训练

#!/usr/bin/env python # coding: utf-8 # In[1]: import os import json import copy from tqdm.notebook import tqdm import torch from torch.optim import AdamW from torch.utils.data import DataLoader, Dataset from transformers import BertForMaskedLM, BertTo

weixin_44826203的博客 1万+

国科大学习资料--自然语言处理(宗成庆)-2019期末考试题

国科大学习资料–自然语言处理(宗成庆)-2019期末考试题 国科大学习资料–自然语言处理(宗成庆)-2019期末考试题 国科大学习资料–自然语言处理(宗成庆)-2019期末考试题

无名何许人的博客 2438

钉钉机器人推送消息

这种方式只需要在钉钉中拉一个群,人员超过三个人即可拉一个聊天的群,然后设置智能群助手,添加机器人:机器人设置:webHook地址就是下面的url地址(不包含sign和timestamp): https://oapi.dingtalk.com/robot/send?加签的key就是下面代码中的的secret的值。

qq_34905631的博客 4867

基于Simulink的BCH码编解码仿真建模示例

BCH码是一类循环码,能够纠正一定数量的随机错误。灵活性:可以根据需要选择不同的码长和纠错能力。高效性:适用于短码长和中等码长的场景,广泛用于卫星通信、存储系统等。实现简单:编码和解码过程可以通过硬件或软件高效实现。在本示例中,我们将使用MATLAB/Simulink中的和模块来完成BCH码的编解码操作,并通过仿真验证其误码率(BER)性能。通过本指南,我们介绍了如何基于Simulink搭建一个BCH码的编解码模型,并进行了仿真以验证其性能。背景介绍:理解BCH码的基本原理及其在通信系统中的应用。

xiaoheshang_123的博客 190

python3 钉钉 加签名 钉钉群机器人告警 脚本

python3 钉钉 加签名 钉钉群机器人告警 脚本

想练武,就得下功夫 1089

Vue3 + 高德地图实现车辆电子围栏监控与报警

通过本文的实现,我们完成了一个通用的车辆电子围栏监控功能:支持多种围栏类型。支持进入/离开/双向报警。使用缓存机制避免重复告警。可与Vue3 + 高德地图无缝集成。在实际项目中,可以结合WebSocket 实时定位,实现车辆的实时监控 + 围栏告警系统🚀。

专注于前端开发与实战技巧,记录从零到一的学习与项目经验。分享 Vue3 / JavaScript / TypeScript / Flutter /Uniapp等前端技术,以及 性能优化、工程化、最佳实践。 1034

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

钉钉python的sdk应用

python通过钉钉接口获取钉钉企业的信息。 1. 安装钉钉sdk pip installdingtalk-sdk 2. 在钉钉的开发者平台配置开发者权限,拿到corpId和secret CORP_ID = 'XXXXXXXXXXXXXXXXXXXX' SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...

qq_26608423的博客 3883

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

使用Python搭建钉钉机器人的教程

在钉钉中,打开你想要添加机器人的群组。点击右上角的群组设置图标,然后选择「智能群助手」。在智能群助手页面中,选择「自定义机器人」。点击「添加机器人」,然后按照提示完成机器人的创建过程。

weixin_63783406的博客 3972

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

钉钉Python SDK实战指南

钉钉Python SDK实战指南 项目介绍 钉钉Python SDK 是一个由 @blackmatrix7 开发的第三方Python库,旨在简化企业和开发者在集成钉钉API时的工作流程。它支持基于Python的应用程序轻松接入钉钉的各项服务,包括但不限于权限验证、智能办公自动化、企业通讯录管理、消息通知等功能。该SDK要求Python 3.x环境,并依赖于Redis或Memcached等缓存服务...

gitblog_00127的博客 1082

日增进:手把手教你搭建钉钉预警机器人

摘要 随着生产上线业务的不断增多以及无人值守需求的日益增长,钉钉预警机器人的出现极大的解决了我们的问题。本文从0到1详细介绍讲解下钉钉预警机器人的搭建与自定义,分为机器人搭建,预警内容开发,上线部署三大步 机器人搭建 以下所有的配置开发均来源于钉钉官网文档,喜欢阅读官网或者有更进一步个性化的需求可前往查看,也可以跟随笔者站在初级开发者的角度来一步步搭建 首先是先要有一个群以及你有这个群添加机器人的权限,然后 添加机器人 群设置--智能群助手--添加机器人--自定义,选择添加,然后进行相关设置

神芷迦蓝寺 4083

利用钉钉机器人,实现python向钉钉发送消息

参考钉钉的开发文档 https://open.dingtalk.com/document/robots/customize-robot-security-settings。加签方式需要把timestamp+“\n”+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)。最终拼接到调用的url中:https://oapi.dingtalk.com/robot/send?

weixin_44100044的博客 1871

钉钉自定义机器人发送群消息(加签方式、http发送)

发送方法直接调用sendDingTalkMsg()方法,一个是发送给全体成员,一个是根据手机号发送给具体人。在钉钉群里创建自定义机器人(群设置-机器人-添加机器人),选择自定义机器人。添加成功后有一个Webhook,也就是机器人的发送消息的url。主要需要Webhook,和 secret密钥。

weixin_63541561的博客 3567

钉钉添加自定义机器人,实现每周定时@某人

钉钉添加自定义机器人,实现每周定时@某人

adorable_的博客 1万+

钉钉自定义机器人配置python3.x

1、获取自定义机器人webhook(自行获取) 2、安全设置这里选择“加签”,根据自己情况选择。 3、签名设置 第一步,把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)。 第二步,把 timestamp和第一步得到的签名值拼接到URL中。...

qq_27026145的博客 1223

调用钉钉api报错:机器人发送签名过期;solution:签名生成时间和发送时间请保持在 timestampms 以内

调用钉钉api报错机器人发送签名过期;solution签名生成时间和发送时间请保持在timestampms以内。

weixin_44329964的博客 5617

钉钉python实现审批(通过软件和钉钉审批流的结合)

为了实现工单系统,又不想自己去结合钉钉的组织架构实现一套审批流,所以采用钉钉的审批结合自己的系统去实现工单。 由钉钉实现审批流,软件实现查询,记录工单等。 一、具体流程 二、具体的实现方式 获取token的函数 def getToken(self): ''' 获取钉钉的token :return: 钉钉token ''' url ...

qq_26608423的博客 1万+

python下载钉钉api_DingTalk SDK for Python

dingtalk-sdk 是一个钉钉开放平台的第三方 Python SDK, 实现了 企业内部开发 和 应用服务商(ISV)的 API。功能特性企业内部开发接入api应用服务商(ISV)接入api安装目前 dingtalk-sdk 支持的 Python 环境有 2.7, 3.4, 3.5, 3.6 和 pypy。dingtalk-sdk 消息加解密同时兼容 cryptography 和 PyCry...

weixin_39784774的博客 1065
上一篇: 企业微信群机器人SDK Python版
下一篇: 百万年薪程序员必会的 5 种技术
比特量化
博客等级 码龄7年 952粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比特量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值