Flutter 解放双手-Shell自动化打包之群消息

3,404 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情

您能在这里看到啥

  1. 开启钉钉群机器人
  2. 开启企业微信群机器人
  3. shell脚本发送
  4. 通用消息模板
  5. 一点点疑惑

开启钉钉群机器人

  1. 选择需要添加机器人的群聊,然后依次单击群设置智能群助手image.png
  2. 在机器人管理页面选择自定义机器人,输入机器人名字并选择要发送消息的群,同时可以为机器人设置机器人头像。 image.png
  3. 完成必要的安全设置,勾选我已阅读并同意《自定义机器人服务及免责条款》,然后单击完成

切记安全设置必须最少勾选一个类型,如果自定义关键词,记得在发送消息的title里要包含对应的关键词,我在测试的时候,就忽略了这一点

  1. 完成安全设置后,复制出机器人的Webhook地址,可用于向这个群发送消息,格式如下:
https://oapi.dingtalk.com/robot/send?access_token=XXXXXX

到此,自定义机器人就开通完成.剩下的只是发送消息就行,请看shell脚本发送.

开启企业微信群机器人

企业微信相比钉钉就简单多了.

  1. 点击群右上角 image.png
  2. 点击群机器人 image.png
  3. 点击添加 image.png
  4. 输入机器人名字 image.png
  5. 完成 image.png

这样我们就获取到了webhook.

shell脚本发送

url="webhook"
ptext="分享的内容"
curl "$url" -H 'Content-Type: application/json' -d "$ptext"

具体ptext分享的消息体是啥,请 通用消息模板 这个模块.

通用消息模板

本以为钉钉企业微信发送消息的模版是相同的,仔细一看,是我天真了,还是不一样的.然后我们简单看看消息模版

  • text类型
    • 钉钉

      {
           "at": {
                "atMobiles":[
                    "180xxxxxx"
                ],
                "atUserIds":[
                  "user123"
                ],
                "isAtAll": true
           },
          "text": {
              "content":"欢迎来到, 火之夜"
          },
          "msgtype":"text"
      }
      
      参数参数类型是否必填说明
      msgtypeString固定类型:text
      textMap消息体
      contextString发送消息内容,必须utf8编码
      at字典被@的数据
      atMobilesArray被@人的手机号。只能是群人员
      atMobilesArray被@人的手机号。只能是群人员
      isAtAllBoolean是否@所有人

      发到群里格式如下所示: 截屏2022-10-28 21.55.55.png

    • 微信

      { 
          "msgtype": "text", 
          "text": { 
              "content": "欢迎来到, 火之夜",
              "mentioned_list":["user123","@all"],
              "mentioned_mobile_list":["180xxxxxx","@all"] 
          } 
      }
      
      参数参数类型是否必填说明
      msgtypeString固定类型:text
      textMap消息体
      contextString发送消息内容,必须utf8编码
      methioned_listArrayuserid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_list
      mentioned_mobile_listArray手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人

    发到群里格式如下所示: image.png

  • markdown类型

根据文档得知,目前只支持markdown语法的子集.如下所示

标题
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

引用
> A man who stands for nothing will fall for anything.

文字加粗、斜体
**bold**
*italic*

链接
[this is a link](http://name.com)

图片(建议不要超过20张)
![](http://name.com/pic.jpg)

无序列表
- item1
- item2

有序列表
1. item1
2. item2
 
   
  • 钉钉

整体跳转ActionCard类型,其中文本使用markdown

   {
        "actionCard": {
            "title": "火之夜",
            "text": "
            ### 火之夜
            版本: 1.0.2
            ## 更新内容
            - 测试1
            - 测试2
            ",
            "btnOrientation": "0",
            "singleTitle" : "点击下载",
            "singleURL" : "dingtalk://dingtalkclient/page/link?url=https://www.baidu.com/&pc_slide=false"
        },
        "msgtype": "actionCard"
    }
参数参数类型是否必填说明
msgtypeString固定类型:actionCard
actionCardMap消息体
titleString首屏会话透出的展示内容。
textStringmarkdown格式的消息。
singleTitleString单个按钮的标题。
singleURLString点击消息跳转的URL,默认侧边栏打开,希望在外部浏览器打开,pc_slide=false
btnOrientationString0:按钮竖直排列 1:按钮横向排列

发到群里格式如下所示: 截屏2022-10-28 21.48.04.png

  • 微信

由于微信和钉钉消息类型不一样.这里只是显示了markdow.微信更喜欢news类型,下面先看一下markdow

   {
        "msgtype": "markdown",
        "markdown": {
        "content": "
        <font color=\"warning\">火之夜</font>
        版本: 1.0.2
        ## 更新内容
        > 测试1
        > 测试2
        "
        }
   }
   
参数参数类型是否必填说明
msgtypeString固定类型:markdown
markdownMap消息体
contentStringmarkdown内容,最长不超过4096个字节,必须是utf8编码

发到群里格式如下所示: image.png

news类型如下所示

{
    "msgtype": "news",
    "news": {
        "articles" : [
            {
                "title" : "中秋节礼品领取",
                "description" : "今年中秋节公司有豪礼相送",
                "url" : "www.qq.com",
                "picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
            }
        ]
    }
}    

发到群里格式如下所示:
image.png

当然,微信钉钉 还有很多消息类型,这里我不再一一举例了.我只把我现在用的分享一下,喜欢的可以查看参考资料

一点点小疑惑

在我的测试中,如果这个群我不群主或者没有管理机器人的权限.我在发送的时候,一直是失败.不知道大家有没有遇到.

系列文章

参考资料