钉钉群机器人 -- 每日推送 之 post请求

2020-10-20

前面介绍了钉钉群机器人的创建以及相关注意事项,下面简单介绍一下post请求的构建构成

本文主要使用PHP编程语言,来构造post请求来实现相关资讯的推送。

开始

在进行操作之前,我们应当先测试一下机器人接口的可用性。

测试接口

这里,我们使用PostJson 来模拟请求机器人接口。

image-20201025190207621

image-20201025190233339

测试表示,接口可用

上面的钉钉群机器人的关键词为: 我,请求的title中包含 “我” 关键词,故成功。

构建Post请求

接下来,就到了我们使用php构造请求的时候了。

image-20201025191136519

<?php
    function send_post($url, $post_data) {
        $options = array(
        'http' => array(
            'method' => 'POST',
            'header' => 'Content-Type: application/json',
            'content' => $post_data,
            'timeout' => 15 * 60 // 超时时间(单位:s)
        )
        );
        echo json_encode($options,JSON_UNESCAPED_UNICODE);
        $context = stream_context_create($options);
        $result = file_get_contents($url, false, $context);
    
        return $result;
    }
    $post_data = array(
        {
          "msgtype": "markdown",
          "markdown": {
              "title":"我的消息",
              "text": "# 每日消息 \n > 新消息 \n ![](https://picsum.photos/1920/1080)"
          }
        }
      );
  $post_datas=json_encode($post_data,JSON_UNESCAPED_UNICODE);

  send_post('https://oapi.dingtalk.com/robot/send?access_token=xxxxxx', $post_datas);

这时,构建的php程序就可以运行推送资讯了。

这里,需要手动配置 markdown格式的请求数据。

具体的操作,请查看官方文档

支持文本格式详述

钉钉群机器人可以推送以markdown格式、text、link类型的资讯。

消息类型及数据格式
text类型
{
    "msgtype": "text", 
    "text": {
        "content": "我就是我, 是不一样的烟火@156xxxx8827"
    }, 
    "at": {
        "atMobiles": [
            "156xxxx8827", 
            "189xxxx8325"
        ], 
        "isAtAll": false
    }
}
参数 参数类型 必须 说明
msgtype String 消息类型,此时固定为:text
content String 消息内容
atMobiles Array 被@人的手机号(在content里添加@人的手机号)
isAtAll Boolean 是否@所有人

img

link类型
{
    "msgtype": "link", 
    "link": {
        "text": "这个即将发布的新版本,创始人xx称它为红树林。而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是红树林", 
        "title": "时代的火车向前开", 
        "picUrl": "", 
        "messageUrl": "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI"
    }
}
参数 参数类型 必须 说明
msgtype String 消息类型,此时固定为:link
title String 消息标题
text String 消息内容。如果太长只会部分展示
messageUrl String 点击消息跳转的URL
picUrl String 图片URL

image.png

markdown类型
{
     "msgtype": "markdown",
     "markdown": {
         "title":"杭州天气",
         "text": "#### 杭州天气 @150XXXXXXXX \n> 9度,西北风1级,空气良89,相对温度73%\n> ![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)\n> ###### 10点20分发布 [天气](https://www.dingtalk.com) \n"
     },
      "at": {
          "atMobiles": [
              "150XXXXXXXX"
          ],
          "isAtAll": false
      }
 }
参数 类型 必选 说明
msgtype String 此消息类型为固定markdown
title String 首屏会话透出的展示内容
text String markdown格式的消息
atMobiles Array 被@人的手机号(在text内容里要有@手机号)
isAtAll Boolean 是否@所有人

img

说明:目前只支持md语法的子集,具体支持的元素如下:

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

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

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

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

图片
![](http://name.com/pic.jpg)

无序列表
- item1
- item2

有序列表
1. item1
2. item2
整体跳转ActionCard类型
{
    "actionCard": {
        "title": "乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身", 
        "text": "![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png) 
 ### 乔布斯 20 年前想打造的苹果咖啡厅 
 Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划", 
        "btnOrientation": "0", 
        "singleTitle" : "阅读全文",
        "singleURL" : "https://www.dingtalk.com/"
    }, 
    "msgtype": "actionCard"
}
参数 类型 必须 说明
msgtype String 此消息类型为固定actionCard
title String 首屏会话透出的展示内容
text String markdown格式的消息
singleTitle String 单个按钮的标题。(设置此项和singleURL后btns无效)
singleURL String 点击singleTitle按钮触发的URL
btnOrientation String 0-按钮竖直排列,1-按钮横向排列

通过整体跳转ActionCard类型消息发出的消息样式如下:

imgimg

独立跳转ActionCard类型
{
    "actionCard": {
        "title": "乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身", 
        "text": "![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png) 
 ### 乔布斯 20 年前想打造的苹果咖啡厅 
 Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划", 
        "btnOrientation": "0", 
        "btns": [
            {
                "title": "内容不错", 
                "actionURL": "https://www.dingtalk.com/"
            }, 
            {
                "title": "不感兴趣", 
                "actionURL": "https://www.dingtalk.com/"
            }
        ]
    }, 
    "msgtype": "actionCard"
}
参数 类型 必须 说明
msgtype String 此消息类型为固定actionCard
title String 首屏会话透出的展示内容
text String markdown格式的消息
btns Array 按钮
└title String 按钮标题
└actionURL String 点击按钮触发的URL
btnOrientation String 0-按钮竖直排列,1-按钮横向排列

通过独立跳转ActionCard类型消息发出的消息样式如下:

image.png

FeedCard类型
{
    "feedCard": {
        "links": [
            {
                "title": "时代的火车向前开", 
                "messageURL": "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI", 
                "picURL": "https://gw.alicdn.com/tfs/TB1ayl9mpYqK1RjSZLeXXbXppXa-170-62.png"
            },
            {
                "title": "时代的火车向前开2", 
                "messageURL": "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI", 
                "picURL": "https://gw.alicdn.com/tfs/TB1ayl9mpYqK1RjSZLeXXbXppXa-170-62.png"
            }
        ]
    }, 
    "msgtype": "feedCard"
}
参数 类型 必须 说明
msgtype String 此消息类型为固定feedCard
title String 单条信息文本
messageURL String 点击单条信息到跳转链接
picURL String 单条信息后面图片的URL

通过FeedCard类型消息发出的消息样式如下:

img