首页 > 编程语言 > 详细

python 钉钉 消息推送 文件传输

时间:2020-10-26 19:52:32      阅读:97      评论:0      收藏:0      [点我收藏+]

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 不含 消息推送,则不会发送消息。

 

方式二:创建一个小程序应用:

    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(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

复制首页的 

未认证服务商
CorpId 并替换其中的xxx,点击执行,此时钉钉会弹出弹出框,让选择群聊,点击需要推送文件的群聊,确定即可,如图返回了chatid。

技术分享图片

 

 

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()

 

执行后,即可看到群里自动发送了文件如图。

技术分享图片

 

python 钉钉 消息推送 文件传输

原文:https://www.cnblogs.com/BlueSkyyj/p/13865966.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!