美文网首页
钉钉机器人自动发消息(定时器自动执行脚本)

钉钉机器人自动发消息(定时器自动执行脚本)

作者: 马威明 | 来源:发表于2022-01-25 16:19 被阅读0次

    背景:

    钉钉常用于日常工作中 我们经常需要每天或者每周定时去做一些事情 比如 日报 周报 晨会 周会等 为了防止忘记做这些事情 故考虑定时发送提醒消息。

    实现方式:

    我本次使用的方式是crontab定时器命令添加python脚本任务。

    步骤:

    一、创建钉钉机器人并获取Webhook

    1、选择需要添加机器人的群聊,然后依次单击群设置 > 智能群助手
    2、在机器人管理页面选择自定义机器人,输入机器人名字并选择要发送消息的群,同时可以为机器人设置机器人头像。
    3、完成必要的安全设置,勾选我已阅读并同意《自定义机器人服务及免责条款》,然后单击完成。(安全设置添加其中一个就行 我选择的是 自定义关键字)
    4、完成安全设置后,复制出机器人的Webhook地址,可用于向这个群发送消息,格式如下:

    https://oapi.dingtalk.com/robot/send?access_token=XXXXXX

    二、使用介绍:

    获取到Webhook地址后,向这个地址发起POST 请求,即可实现给该钉钉群发送消息。
    自定义机器人支持文本 (text)链接 (link)markdown(markdown)ActionCardFeedCard消息类型。

    三、使用方式

    1、命令行工具curl
    curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
     -H 'Content-Type: application/json' \
     -d '{"msgtype": "text","text": {"content":"我就是我, 是不一样的烟火"}}'
    
    2、SDK

    本次使用脚本执行 没有接入SDK 需要可以参考链接

    3、定时器命令行(crontab) + 脚本(python)
    1、先写好脚本 我使用的是link格式 需要其他格式可以参考钉钉自定义机器人消息类型及数据格式
    #!/usr/bin/python3.8
    #导入依赖库
    import sys
    #append一定要在报错模块之前
    sys.path.append("/Users/BMW/Library/Python/3.8/lib/python/site-packages")
    
    import requests,json
    
    from pbxproj import XcodeProject
    #定义数据类型
    headers={
            "Content-Type": "application/json",
            "Charset": "UTF-8"
    }
    #定义webhook,从钉钉群机器人设置页面复制获得
    webhook = 'https://oapi.dingtalk.com/robot/send?access_token=9108beea68ce394d502744c226035e9aaabb341e6cd5f9cd9a2b68623c52c9bc'
    #定义要发送的数据
    data = {
        "msgtype": "link",
        "link": {
            "text":"每周一、周五 下午五点提醒",
    #        "text":"更新周报链接",
            "title":"自动群消息 写周报啦!!!",
            "messageUrl":"https://alidocs.dingtalk.com/i/team/WO4GjOJDJ4B1zDRM/docs/WO4Gjay35eYkVmDR?corpId=ding9ec7ae752d870c5b35c2f4657eb6378f# 「2022.02.14.-2022.02.18」",
            "picUrl":"https://img.lianzhixiu.com/uploads/allimg/191119/30-1911191119380-L.jpg"
        }
    }
     #发送post请求
    requests.post(webhook, data=json.dumps(data), headers=headers)
    
    2、可以先手动执行一下脚本 测试消息是否可以发送成功

    cd到脚本文件根目录
    执行python(python3) sendMessage.py

    3、启动定时器执行脚本

    常规做法:
    1、打开定时器编辑模式

    sudo crontab -e
    

    通常第一次使用这个命令的时候会类似报下面这个错:

    no crontab for BMW - using an empty one

    原因是我们终端使用的是vim编辑器 系统没有指定默认编辑器 所以需要我们指定编辑器为vim
    终端输入su命令进入root用户 没有密码的话 先设置个密码。

    su
    passwd
    
    修改root用户密码

    切换到root用户以后设置编辑模式:

    crontab -e
    export EDITOR=vim
    
    设置默认编辑器模式
    系统支持三种编辑器模式emacsvimnano,如果需要其他格式的 命令行对应修改即可。

    至此报错信息解决。
    此时用户已经切换至root
    所以直接执行下面的步骤即可:

    1、终端输入: crontab -e
    2、点击i进入编辑模式
    3、添加所需执行命令如下:
    35 11 * * 1-5 /usr/bin/python3 /Users/BMW/Desktop/Panda/sendMessage.py
    0 10 * * 1-5 /bin/echo "I love you " >> /Users/BMW/Desktop/lalala/foo.txt
    可利用换行同时添加多个任务
    4、按ESC退出编辑模式
    5、双击大写字母Z退出vim

    此时如果看到installing new crontab提示 证明任务已经添加成功
    可使用crontab -l命令查看当前正在执行的命令。

    crontab任务列表查看
    如果报类似下面的错误 大概率是因为上面添加的任务格式不对 输入Y可以重新进入编辑模式 对照crontab文档检查一下格式重新执行就可以了。
    crontab添加任务报错

    参考链接:
    参考链接一
    参考链接二
    参考链接三
    参考链接四

    相关文章

      网友评论

          本文标题:钉钉机器人自动发消息(定时器自动执行脚本)

          本文链接:https://www.haomeiwen.com/subject/xahwhrtx.html