zoukankan      html  css  js  c++  java
  • 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 不含 消息推送,则不会发送消息。

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

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

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

  • 相关阅读:
    c# WF 第11节 RichTextBox
    c# WF 第10节 textbox 控件
    c# WF 第9节 button控件
    c# WF 第8节 label控件
    c# WF 第7节 对控件的基本操作
    c# WF 第6节 MDI窗体
    c# WF 第5节 窗体的控件
    Python接口自动化之动态数据处理
    Saturn分布式调度之系统架构简介
    Jmeter系列之接口依赖
  • 原文地址:https://www.cnblogs.com/BlueSkyyj/p/13865966.html
Copyright © 2011-2022 走看看