python 钉钉 消息推送 文件传输
1、消息推送
钉钉群添加机器人
方式一:钉钉 群设置添加
群设置 -> 智能群助手 -> 添加机器人 -- 自定义机器人
设置如下: 这里选择 自定义关键字 填写"消息推送" ,只有发送的消息包含了 这个关键字,才会推送这个消息
复制webhook,代码需要用到
def send_massage(message): webhook = 'Your webhook' chatbot = DingtalkChatbot(webhook) chatbot.send_text(msg=message,is_at_all=False,is_auto_at=True,at_mobiles=['@人手机号']) send_massage('消息推送:发送消息"')
如上如果 send_massage 不含 消息推送,则不会发送消息。
方式二:创建一个小程序应用:
- 登录钉钉开发者后台。
说明:只有管理员和子管理员可登录开发者后台。注册企业或个人
注册后登录首页如图
点击应用开发,创建应用,如图创建机器人
创建后点击上线,即可上线该机器人
最后手动在群里可以添加该机器人
在群里查看该机器人,即可看到该机器人 webhook
def send_massage(message): webhook = 'Your webhook' chatbot = DingtalkChatbot(webhook) chatbot.send_text(msg=message,is_at_all=False,is_auto_at=True,at_mobiles=['@人手机号']) send_massage('test:message"')
这里没有设置关键字,所以消息就都可以发送。
2、文件传输
钉钉群机器人推送消息类型只支持text,link,markdown等形式,并不支持文件和图片类媒体文件的推送,所以咱们这里就需要用到钉钉的API接口来实现了,进入钉钉开放平台:https://open-dev.dingtalk.com
首页如下,记到:Corpid,后续会用到
到应用开发,准备创建小程序
开发管理:添加服务器出口IP, 获取IP: http://myip.fireflysoft.net/ 注意:根据网络自动获取,网络不同,ip不同,切如果ip已经被占用,请变更网络
添加接口权限,添加企业会话权限,该权限可以推送文件到群聊,如果无此权限,则无法推送文件。
到此完成了钉钉 推送文件小程序的设置,接下来准备需要的信息:
1、chatid 通过地址 https://wsdebug.dingtalk.com/
使用钉钉管理员的钉钉扫描二维码
然后 定位到 v0.1.2
复制首页的
2、AppKey AppSecret 获取
打开应用开发-> 查看对应的小程序,如图即可获取
最后直接上代码
import requests import json def getAccess_token(): appkey = '****' # 替换自己的key appsecret = '****' # 替换自己的secret url = 'https://oapi.dingtalk.com/gettoken?appkey=%s&appsecret=%s' % (appkey, appsecret) headers = { 'Content-Type': "application/x-www-form-urlencoded" } data = {'appkey': appkey, 'appsecret': appsecret} r = requests.request('GET', url, data=data, headers=headers) access_token = r.json()["access_token"] print(access_token) return access_token def getMedia_id(): access_token = getAccess_token() # 拿到接口凭证 # 获取要推送文件的路径 path = os.getcwd() file = os.path.join(path,'moudleCore.txt') # path = './helloworld.txt' # 文件地址 url = 'https://oapi.dingtalk.com/media/upload?access_token=%s&type=file' % access_token files = {'media': open(file, 'rb')} data = {'access_token': access_token, 'type': 'file'} response = requests.post(url, files=files, data=data) json = response.json() print(json) return json["media_id"] def SendFile(): access_token = getAccess_token() media_id = getMedia_id() chatid = '*****' # 替换自己的chatid # chatid = '******' # 通过jsapi工具获取的群聊id url = 'https://oapi.dingtalk.com/chat/send?access_token=' + access_token header = { 'Content-Type': 'application/json' } data = {'access_token': access_token, 'chatid': chatid, 'msg': { 'msgtype': 'file', 'file': {'media_id': media_id} }} r = requests.request('POST', url, data=json.dumps(data), headers=header) print(r.json()) if __name__ == '__main__': SendFile()
执行后,即可看到群里自动发送了文件如图。

您的资助是我最大的动力!
金额随意,欢迎来赏!

您的资助是我最大的动力!
金额随意,欢迎来赏!
因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Blue·Sky】!
【China-测试开发】技术交流群期待你的加入【 193056556 】
【欢迎扫码关注:日益】微信订阅号【 riyi18 】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!