前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开通与使用钉钉群机器人 [附API代码]

开通与使用钉钉群机器人 [附API代码]

作者头像
小锋学长生活大爆炸
发布2022-03-29 13:46:39
1.4K0
发布2022-03-29 13:46:39
举报
文章被收录于专栏:小锋学长生活大爆炸

目录

开通方式

参考代码

使用示范

开通方式

免费,有群就能开,任何用户都可开

官方文档自定义机器人接入 - 钉钉开放平台

注意事项:用电脑版钉钉来开通,手机上的不行。

参考代码

代码语言:javascript
复制
import time
import hmac
import hashlib
import base64
import urllib.parse
import io
from pyzbar import pyzbar
from PIL import Image
import requests, json  # 导入依赖库


def decode_img(data):
    img_b64decode = base64.b64decode(data[data.index(';base64,')+8:])
    decoded = pyzbar.decode(Image.open(io.BytesIO(img_b64decode)))
    return decoded[0].data.decode("utf-8")


class DingDingHandler:
    def __init__(self, token, secret):
        self.token = token
        self.secret = secret

    def get_url(self):
        timestamp = round(time.time() * 1000)
        secret_enc = self.secret.encode("utf-8")
        string_to_sign = "{}\n{}".format(timestamp, self.secret)
        string_to_sign_enc = string_to_sign.encode("utf-8")
        hmac_code = hmac.new(
            secret_enc, string_to_sign_enc, digestmod=hashlib.sha256
        ).digest()
        sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))

        # 完整的url
        api_url = "https://oapi.dingtalk.com/robot/send?access_token={}&timestamp={}&sign={}".format(
            self.token, timestamp, sign
        )
        print("钉钉机器人url: ", api_url)
        return api_url

    def ddimgsend(self, img_data, retry=0):

        # data:image/png;base64,iVBORw0KGgoA...
        self.ddlinksend(img_data, title=f"学习吧{'-重试:'+str(retry) if retry>0 else ''}")
        self.ddtextsend(decode_img(img_data))

    def ddlinksend(self, link, text='学习', title='学习吧'):
        headers = {"Content-Type": "application/json"}  # 定义数据类型
        data = {
            "msgtype": "link",
            "link": {
                "text": text,
                "title": title,  #f"学习吧{'-重试:' + str(retry) if retry > 0 else ''}",
                "messageUrl": link,
            },
        }
        res = requests.post(self.get_url(), data=json.dumps(data), headers=headers)  # 发送post请求
        print(res.text)

    def ddtextsend(self, text):
        data={}
        headers = {"Content-Type": "application/json"}  # 定义数据类型
        if text.startswith('dtxuexi://appclient/'):
            data = {
                "msgtype": "link",
                "link": {
                    "text": "请点击重新登录",
                    "title": "登录失效",
                    "messageUrl": text,
                },
            }
        else:
            data = {
                "msgtype": "text",
                "text": {

                    "content": text,
                },
            }
        res = requests.post(self.get_url(), data=json.dumps(data), headers=headers)  # 发送post请求
        print(res.text)

使用示范

代码语言:javascript
复制
accesstoken = 'xxx'
secret = 'xxx'
msg = 'xxxx'

push = DingDingHandler(accesstoken, secret)
push.ddtextsend(msg)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/03/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开通方式
  • 参考代码
  • 使用示范
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档