踩坑记录,需求是,将文件发送到钉钉群。查看钉钉官方文档,需要三步骤。
第一步,去钉钉开发者平台创建应用,获取appkey以及appSecret.
使用这俩参数,get请求: https://oapi.dingtalk.com/gettoken 地址, 并在连接后拼接上appkey=“创建应用得到的”&appsecret=“创建应用得到的”。请求会返回access_token。
第二步 拿到返回的access_token,请求上传媒体文件到钉钉服务器的接口,post请求:https://oapi.dingtalk.com/media/upload 地址,url后需要拼接上 access_token=“获取的access_token”&type=file
files = {'media': open(file, 'rb')}
data = {'access_token': access_token,
'type': 'file'}
response = requests.post(url, files=files, data=data)
返回的response中会包含media_id。
第三步 拿到第二步返回的media_id,进行第三步发送到钉钉群的方法。此方法需要一个chatid。方法如下:
进入https://open.dingtalk.com/tools/explorer/jsapi?id=10303,左侧栏选择chooseChat,手机钉钉扫右侧二维码,登录钉钉开发者后台之后corpId默认填充不用填,isAllowCreateGroup和filterNotOwnerGroup选False,右侧点运行调试,在手机上选中接受文件的群获取chatid
最后post请求:f’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)
最后说一下遇到的坑,在上传文件的时候,发现有的文件可以上传,有的不能,最后发现,文件名称包含中文的就不可以。于是升级了requests以及urllib包到最新版本后,可以成功上传了。
pip install --upgrade urllib3
pip install --upgrade requests