钉钉机器人消息推送composer拓展 laravel-dingbot

钉钉机器人消息发送

介绍

企业内部有较多系统支撑着公司的核心业务流程,譬如CRM系统、交易系统、监控报警系统等等。通过钉钉的自定义机器人,可以将这些系统事件同步到钉钉的聊天群。 laravel-dingbot 是一款钉钉机器人消息推送的Laravel扩展,您可以通过此扩展简单高效的推送消息通知到钉钉,进行监控和提醒操作。

钉钉官方文档

安装

php 复制代码
composer require dreamcoders/laravel-dingbot

在laravel项目中使用

安装成功后执行

php 复制代码
php artisan vendor:publish --provider="DreamCoders\DingBot\DingBotServiceProvider"

会自动将dingbot.php添加到您项目的config配置文件当中

相关配置

php 复制代码
return [
    'webhookUrl' => env('DING_ROBOT_URL', 'https://oapi.dingtalk.com/robot/send'),

    'default' => [
        // 机器人的access_token default
        'access_token' => env('DING_TOKEN','4c8ed2083bcd5cc9d38343211900ea29ef7bbef9156ad0892'),
        // 加签 (不开启加签则为空)
        'secret' => env('DING_SECRET',''),
    ],
    'bot1' => [
        // 机器人的access_token  bot1
        'access_token' => env('DING_TOKEN1',''),
        // 加签 (不开启加签则为空)
        'secret' => env('DING_SECRET1',''),
    ],
    'bot2' => [
        // 机器人的access_token  bot2
        'access_token' => env('DING_TOKEN2',''),
        // 加签 (不开启加签则为空)
        'secret' => env('DING_SECRET2',''),
    ],
];

钉钉推送access_token

.env配置

php 复制代码
DING_TOKEN=you-push-token

多机器人配置

如果想要添加多个机器人,则在dingbot.php当中添加机器人名字和对应的token配置即可

php 复制代码
    'default' => [
        // 机器人的access_token default
        'access_token' => env('DING_TOKEN','4c8ed2083bcd5cef9156ad0892'),
        // 加签 (不开启加签则留空)
        'secret' => env('DING_SECRET',''),
    ],
    'bot1' => [
        // 机器人的access_token  bot1
        'access_token' => env('DING_TOKEN1',''),
        // 加签 (不开启加签则留空)
        'secret' => env('DING_SECRET1',''),
    ],
    'bot2' => [
        // 机器人的access_token  bot2
        'access_token' => env('DING_TOKEN2',''),
        // 加签 (不开启加签则留空)
        'secret' => env('DING_SECRET2',''),
    ]

.env配置

php 复制代码
DING_TOKEN=you-push-token
DING_TOKEN1=you-push-token

安全配置

自定义关键词

最多可以设置10个关键词,消息中至少包含其中1个关键词才可以发送成功。 例如添加了一个自定义关键词:监控报警,则这个机器人所发送的消息,必须包含监控报警这个词,才能发送成功。

加签

钉钉创建机器人时选择加签,将secret复制到对应配置文件中即可,如果开启加签方式,则必须填写secret,否则留空即可

php 复制代码
DING_SECRET=you-bot-secret
DING_SECRET1=you-bot-secret
DING_SECRET2=you-bot-secret

IP地址(段)

设定后,只有来自IP地址范围内的请求才会被正常处理。支持两种设置方式:IP地址和IP地址段,暂不支持IPv6地址白名单

使用示例

发送纯文字消息

php 复制代码
Ding()->text("服务器通知报警,请紧急处理")->send();

or

php 复制代码
(new DingBot())->text('服务器通知报警,请紧急处理')->send();

发送消息@指定人员

php 复制代码
Ding()->text("服务器通知报警,请紧急处理")
->setAtMobiles(['13218899188'])
->send();

发送消息@所有人

php 复制代码
Ding()->text("服务器通知报警,请紧急处理")
->setAtAll()
->send();

发送markdown类型的消息

php 复制代码
$title = '杭州天气';
$markdown = "#### 杭州天气  \n ".
            "> 9度,@1825718XXXX 西北风1级,空气良89,相对温度73%\n\n ".
            "> ![screenshot](http://i01.lw.aliimg.com/media/lALPBbCc1ZhJGIvNAkzNBLA_1200_588.png)\n".
            "> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) ";
            
Ding()->markdown($title,$markdown)->send();

发送消息@指定人员/所有人 同上

发送链接类型的消息

php 复制代码
$title = "自定义机器人协议";
$text = "群机器人是钉钉群的高级扩展功能。群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步。例如:通过聚合GitHub,GitLab等源码管理服务,实现源码更新同步;通过聚合Trello,JIRA等项目协调服务,实现项目信息同步。不仅如此,群机器人支持Webhook协议的自定义接入,支持更多可能性,例如:你可将运维报警提醒通过自定义机器人聚合到钉钉群。";
$picUrl = "";
$messageUrl = "https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.Rqyvqo&treeId=257&articleId=105735&docType=1";

Ding()->link($title,$text,$messageUrl,$picUrl)->send();

发送ActionCard类型的消息

无跳转链接

php 复制代码
$title = "乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身";
$text = "![screenshot](@lADOpwk3K80C0M0FoA) \n".
    " #### 乔布斯 20 年前想打造的苹果咖啡厅 \n\n".
    " Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划";

Ding()->actionCard($title,$text,1)->send();

整体跳转ActionCard类型(single)

php 复制代码
$title = "乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身";
$text = "![screenshot](@lADOpwk3K80C0M0FoA) \n".
    " #### 乔布斯 20 年前想打造的苹果咖啡厅 \n\n".
    " Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划";

Ding()->actionCard($title,$text,1)
    ->single("阅读全文","https://www.dingtalk.com/")
    ->send();

独立跳转ActionCard类型(btns)

php 复制代码
$title = "乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身";
$text = "![screenshot](@lADOpwk3K80C0M0FoA) \n".
    " #### 乔布斯 20 年前想打造的苹果咖啡厅 \n\n".
    " Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划";

Ding()->actionCard($title,$text,1)
    ->addButtons("内容不错","https://www.dingtalk.com/")
    ->addButtons("不感兴趣","https://www.dingtalk.com/")
    ->send();

发送FeedCard类型的消息

php 复制代码
   $linksArray = [
            [
                "title"=> "时代的火车向前开1通知",
                "messageURL"=> "https://www.dingtalk.com/",
                "picURL"=> "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png"
            ],
            [
                "title"=> "时代的火车向前开2",
                "messageURL"=> "https://www.dingtalk.com/",
                "picURL"=> "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png"
            ],
            [
                "title"=> "时代的火车向前开3",
                "messageURL"=> "https://www.dingtalk.com/",
                "picURL"=> "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png"
            ],
            [
                "title"=> "时代的火车向前开4",
                "messageURL"=> "https://www.dingtalk.com/",
                "picURL"=> "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png"
            ]
        ];
        (new DingBot())->feedCard($linksArray)->send();
        Ding()->feedCard($linksArray)->send();

多机器人消息发送

php 复制代码
Ding('bot1')->text("服务器通知报警,请紧急处理")->send();

or

php 复制代码
(new DingBot('bot1'))->text('服务器通知报警,请紧急处理')->send();

其他消息类型同上

效果示例

相关推荐
stand_forever1 天前
laravel框架优化
php·laravel
Python涛哥1 天前
PHP框架之Laravel框架教程:1. laravel搭建
开发语言·php·laravel
SHUIPING_YANG6 天前
Composer 可以通过指定 PHP 版本运行
开发语言·php·composer
~央千澈~6 天前
Laravel 系统版本查看及artisan管理员密码找回方法针对各个版本通用方法及原理-优雅草卓伊凡
php·laravel
小小怪下士yeah6 天前
Laravel 静态方法的合理使用考量【超详细】
android·java·laravel
Rocket MAN7 天前
Laravel 原子锁概念讲解
php·wpf·laravel
ONLYOFFICE10 天前
如何将 ONLYOFFICE 文档集成到使用 Laravel 框架编写的 PHP 网络应用程序中
php·laravel
四季豆豆豆15 天前
博客项目 laravel vue mysql 第四章 分类功能
vue.js·mysql·laravel
yanwushu23 天前
10分钟搭建 PHP 开发环境教程
php·laravel
RainSerein24 天前
Laravel8中使用phpword生成word文档
word·php·laravel