php 使用钉钉机器人推送消息

机器人发送消息频率限制

消息发送太频繁会严重影响群成员的使用体验,大量发消息的场景(譬如系统监控报警)可以将这些信息进行整合,通过markdown消息以摘要的形式发送到群里。

每个机器人每分钟最多发送20条。如果超过20条,会限流10分钟。

配置群机器人

方法二:
点击自己的头像 》设置 》机器人管理 》自定义
在这里插入图片描述

方法一:
创建群 》 群设置 》智能群助手 》添加机器人 》自定义

在这里插入图片描述
在这里插入图片描述

获取自定义机器人webhook

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

在这里插入图片描述

使用自定义机器人

(1)获取到Webhook地址后,用户可以向这个地址发起HTTP POST 请求,即可实现给该钉钉群发送消息。注意,发起POST请求时,必须将字符集编码设置成UTF-8。
(2)当前自定义机器人支持文本 (text)、链接 (link)、markdown(markdown)、ActionCard、FeedCard消息类型,大家可以根据自己的使用场景选择合适的消息类型,达到最好的展示样式。
(3)自定义机器人发送消息时,可以通过手机号码指定“被@人列表”。在“被@人列表”里面的人员收到该消息时,会有@消息提醒(免打扰会话仍然通知提醒,首屏出现“有人@你”)。
(4)当前机器人尚不支持应答机制 (该机制指的是群里成员在聊天@机器人的时候,钉钉回调指定的服务地址,即Outgoing机器人)。

<?php
$webhook = "https://oapi.dingtalk.com/robot/send?access_token=ff6cd723bdb4455fe18******ba30dbeff007f5";

/**
 * 使用钉钉机器人发送消息
 * @param $remote_server
 * @param $post_string
 * @return bool|string
 * @Date: 2021/8/6 16:31
 * @Author wzb
 */
function request_by_curl($remote_server, $post_string) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $remote_server);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/json;charset=utf-8'));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    // 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $data = curl_exec($ch);
    curl_close($ch);
    print_r($data);
    return $data;
}

/**
 * 发送文本消息
 * @param string $webhook webhook地址
 * @param string $message 消息
 * @param array $atMobiles 用户的手机号码 [188XXXX5,188XXXX4]
 * @param false $isAtAll 是否@所有人。 true 是
 * @return bool|string
 * @Date: 2021/8/6 17:12
 * @Author wzb
 */
function send_dingtalk_text($webhook='',$message="",$atMobiles=[],$isAtAll=false){
    $data = [
        'msgtype' => 'text','text' => ['content' => $message],
        'at'=>[
            'atMobiles' => $atMobiles, //被@人的手机号
            'isAtAll'=>$isAtAll, // 是否@所有人
        ]
    ];
    return request_by_curl($webhook, json_encode($data));
}
echo send_dingtalk_text($webhook,'你好');

/**
 * 发送钉钉link消息
 * @param string $webhook webhook地址
 * @param string $title 标题
 * @param string $message 消息
 * @param string $pic 图片
 * @param string $url 跳转地址
 * @param array $atMobiles 用户的手机号码 [188XXXX5,188XXXX4]
 * @return bool|string
 * @Date: 2021/8/6 16:55
 * @Author wzb
 */
function send_dingtalk_link($webhook='',$title='',$message="",$pic='',$url='',$atMobiles=[]){
    $data = [
        "msgtype" => "link",
        "link" => [
            "text" => $message, "title" => $title, "picUrl" => $pic, "messageUrl" => $url,
        ],
        'at'=>[
            'atMobiles' => $atMobiles, //被@人的手机号
            'isAtAll'=>false, // 是否@所有人
        ]
    ];
    return request_by_curl($webhook, json_encode($data));
}

/**
 * 发送 markdown类型
 * @param string $webhook webhook地址
 * @param string $title 标题
 * @param string $message 消息 "#### 杭州天气 @156xxxx8827\n" .
"> 9度,西北风1级,空气良89,相对温度73%\n\n" .
"> ![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png)\n" .
"> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \n"
 * @param array $atMobiles 用户的手机号码 [188XXXX5,188XXXX4]
 * @return bool|string
 * @Date: 2021/8/6 16:57
 * @Author wzb
 */
function send_dingtalk_markdown($webhook='',$title='',$message="",$atMobiles=[]){
    $data = [
        "msgtype" => "markdown",
        "markdown" => [
            "title" => $title,
            "text" => $message
        ],
        "at" => [
            "atMobiles" => $atMobiles,
            "isAtAll" => false
        ]
    ];
    return request_by_curl($webhook, json_encode($data));
}

/**
 * ActionCard类型
 * @param string $webhook webhook地址
 * @param string $title
 * @param string $message ![screenshot](@lADOpwk3K80C0M0FoA)
### 乔布斯 20 年前想打造的苹果咖啡厅
Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划
 * @param array $atMobiles 用户的手机号码 [188XXXX5,188XXXX4]
 * @return bool|string
 * @Date: 2021/8/6 17:06
 * @Author wzb
 */
function send_dingtalk_actionCard($webhook='',$title='',$message="",$url='',$atMobiles=[]){
    $data = [
        "msgtype" => "actionCard",
        "actionCard" => [
            "title" => $title,
            "text" => $message,
            "hideAvatar" => "0",
            "btnOrientation" => "0",
            "singleTitle" => "阅读全文",
            "singleURL" => $url
        ],
        "at" => [
            "atMobiles" => $atMobiles,
            "isAtAll" => false
        ]
    ];
    return request_by_curl($webhook, json_encode($data));
}

/**
 * @param string $webhook webhook地址
 * @param array $links = [
            [
            "title" => $title,
            "messageURL" => "https://www.dingtalk.com/",
            "picURL" => "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1567105217584&di=4c91fefc045f54267edcf8c544e3bd3b&imgtype=0&src=http%3A%2F%2Fk.zol-img.com.cn%2Fdcbbs%2F16420%2Fa16419096_s.jpg"
            ],
            [
            "title" => "时代的火车向前开2",
            "messageURL" => "https://www.dingtalk.com/",
            "picURL" => ""
            ]
        ]
 * @param array $atMobiles 用户的手机号码 [188XXXX5,188XXXX4]
 * @return bool|string
 * @Date: 2021/8/6 17:09
 * @Author wzb
 */
function send_dingtalk_feedCard($webhook='',$links=[],$atMobiles=[]){
    $data = [
        "msgtype" => "feedCard",
        "feedCard" => [
            "links" => $links,
        ],
        "at" => [
            "atMobiles" => $atMobiles,
            "isAtAll" => false
        ]
    ];
    return request_by_curl($webhook, json_encode($data));
}





  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值