钉钉机器人消息推送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();

其他消息类型同上

效果示例

相关推荐
奔跑的皮皮虾4 天前
Laravel 对接阿里云 OSS 说明文档
阿里云·php·laravel
明天依旧下着大雨4 天前
PHP8.2.9NTS版本使用composer报错,扩展找不到的问题处理
php·composer
苏琢玉5 天前
顺手写了个地址解析小工具,支持在线用,也能接 PHP 项目里
php·composer
奔跑吧邓邓子10 天前
宝塔面板中解锁Laravel日志查看的奥秘
laravel·宝塔面板·日志查看
86Eric11 天前
Laravel 实现 队列 发送邮件功能
php·laravel·队列·异步执行
19岁开始学习13 天前
Laravel源码进阶
php·laravel
lyk_dtf14 天前
本地laravel项目【dcat-admin】部署到liunx服务器
服务器·php·laravel
赵大的程序屋18 天前
Jetpack Compose基础组件之 Button
composer
86Eric18 天前
Laravel 使用 事件和监听器实现 数据状态变更
php·laravel·事件与监听器·队列监听器
赵大的程序屋19 天前
Jetpack Compose基础组件之 Text
composer