热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python+钉钉API实现发送文件消息

python3.7+钉钉API实现自动发送文件消息需求:每天固定时间需要向钉钉群推送数据文件1.由于钉钉群机器人推送消息类型只支持text,link,markdown等形式,并不支

python3.7+钉钉API实现自动发送文件消息

需求:每天固定时间需要向钉钉群推送数据文件
1.由于钉钉群机器人推送消息类型只支持text,link,markdown等形式,并不支持文件和图片类媒体文件的推送,所以咱们这里就需要用到钉钉的API接口来实现了,进入钉钉开放平台:
《python+钉钉API实现发送文件消息》在这里咱们是可以看到支持文件类消息的,下面怎么实现呢
2.群消息的推送是需要三个参数的,access_token(调用接口凭证),chatid(群会话id,可以通过jsapi工具获取,后边详情介绍),msg(步骤1),咱们一个一个参数来看《python+钉钉API实现发送文件消息》
3.access_token:

def getAccess_token():
url = 'https://oapi.dingtalk.com/gettoken?appkey=********&appsecret=*******'
appkey = '*********' # 管理员账号登录开发者平台,应用开发-创建应用-查看详情-appkey
appsecret = '********' # 应用里的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"]
return access_token

4.msg中的media_id:
钉钉推送媒体文件需要先上传至媒体文件中,生成一个独立的media_id,然后进行调用才可以
《python+钉钉API实现发送文件消息》access_token和type两个参数都显然没有问题,这个media_id怎么传递呢,它需要的是文件名为media,并且包含filelength、content-type等信息,咱们可以把需要上传的文件放在files的参数里来实现

def getMedia_id():
access_token = getAccess_token() # 拿到接口凭证
path = '*********' # 文件路径
url = 'https://oapi.dingtalk.com/media/upload?access_token=' + access_token + '&type=file'
files = { 'media': open(path, 'rb')}
data = { 'access_token': access_token,
'type': 'file'}
response = requests.post(url, files=files, data=data)
json = response.json()
return json["media_id"]

是不是发现没有headers,在网上看到过很多例子都将文件以multipart/form-data形式把数据放在了headers里面,结果你发现人家压根不读你的头信息,你说气不气,这也是这文档坑的地方了,文件也上传了,media_id咱们也拿到了,接下来就可以愉快的推送文件了
5.推送消息至钉钉群:

def SendFile():
access_token = getAccess_token()
media_id = getMedia_id()
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())

6.完整代码:

# -*- coding: utf-8 -*-
import requests
import json
def getAccess_token():
url = 'https://oapi.dingtalk.com/gettoken?appkey=********&appsecret=*******'
appkey = '*********' # 管理员账号登录开发者平台,应用开发-创建应用-查看详情-appkey
appsecret = '********' # 应用里的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"]
return access_token
def getMedia_id():
access_token = getAccess_token() # 拿到接口凭证
path = '*********' # 文件路径
url = 'https://oapi.dingtalk.com/media/upload?access_token=' + access_token + '&type=file'
files = { 'media': open(path, 'rb')}
data = { 'access_token': access_token,
'type': 'file'}
response = requests.post(url, files=files, data=data)
json = response.json()
return json["media_id"]
def SendFile():
access_token = getAccess_token()
media_id = getMedia_id()
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()

7.chatid的获取:
进入JSAPI控制台https://wsdebug.dingtalk.com,手机钉钉扫码登录(主管理员),往下划,执行v0.1.2中的biz.chat.chooseConversationByCorpId,这时手机会弹出选择群聊,选择你需要获取chatid的群,JSAPI控制台就会出现chatid和群聊名称。
《python+钉钉API实现发送文件消息》

语音和图片类消息同道理,鄙人菜鸟一枚,才疏学浅,希望路过的各位大佬希望不吝赐教!

    对python感兴趣的朋友们可以扫码关注公众号,会不定时更新一些python基础、网络爬虫、数据分析等知识,也欢迎大家前来探讨交流,公众号加星标,不迷路!

《python+钉钉API实现发送文件消息》


推荐阅读
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
liaojiawei
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有