vinstone / dingtalk-notice
DingTalk Robot Message Notification
1.0.0
2022-08-31 07:25 UTC
Requires
- php: >=7.0
- guzzlehttp/guzzle: ^6.2|^7.0
Requires (Dev)
- mockery/mockery: ^1.5
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2025-05-29 01:47:33 UTC
README
机器人接入方式请先阅读 钉钉官方文档
介绍
dingtalk-notie 是钉钉群自定义机器人消息通知的Laravel扩展包,您可以通过集成此扩展包到项目里实现快捷的消息通知
要求
- php版本:>=7.0
- laravel版本: Laravel5.5+
安装
推荐使用 composer 进行安装:
composer require vinstone/dingtalk-notice
Laravel
Laravel 5.5+ 已经实现了扩展包发现机制,您不需要进行额外的加载操作,执行以下命令会自动发布配置文件dingtalk.php
到您项目的配置文件当中
php artisan vendor:publish --provider="DingTalkNotice\Providers\DingTalkNoticeProvider"
Lumen
Lumen 并未移植扩展包自动发现机制,所以需要手动加载扩展包并复制配置文件。
打开配置文件 bootstrap/app.php 并在大约 81 行左右添加如下内容:
$app->register(DingTalkNotice\Providers\DingTalkNoticeProvider::class);
将 vendor/vinstone/dingtalk-notice/config/dingtalk.php 复制到您项目配置文件目录config下
非 Laravel/Lumen 框架
无需考虑加载问题,请使用全局函数 \dingtalk() 或直接创建 \DingTalkNotice\Dingtalk 实例来发送消息
配置
打开配置文件 config/dingtalk.php,按如下格式进行配置
return [ // 默认配置 'default' => [ // 机器人启用开关 'enabled' => env('DINGTALK_ENABLED',true), // 创建机器人时获取的access_token 'access_token' => env('DINGTALK_ACCESS_TOKEN',''), // 超时时间 'timeout' => env('DINGTALK_TIMEOUT',2.0), // 是否启用SSL验证 'ssl_verify' => env('DINGTALK_SSL_VERIFY',true), // 加签密钥 'secret' => env('DINGTALK_SECRET',''), ], // 多机器人配置 'log' => [ // 机器人启用开关 'enabled' => env('LOG_DINGTALK_ENABLED',true), // 创建机器人时获取的access_token 'access_token' => env('LOG_DINGTALK_ACCESS_TOKEN',''), // 超时时间 'timeout' => env('LOG_DINGTALK_TIMEOUT',2.0), // 是否启用SSL验证 'ssl_verify' => env('LOG_DINGTALK_SSL_VERIFY',true), // 加签密钥 'secret' => env('LOG_DINGTALK_SECRET',''), ] ];
使用方法
文本类型消息
use DingTalkNotice\Messages\Text; $message = new Text('我就是我, @XXX 是不一样的烟火');
Link类型消息
use DingTalkNotice\Messages\Link; $message = new Link('时代的火车向前开', '每当面临重大升级,产品经理们都会取一个应景的代号', 'https://open.dingtalk.com/document/group/custom-robot-access', 'https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png', true); // 重点:点击消息跳转的URL,PC端默认在侧边栏打开,如需在浏览器打开,请设置第 5 个参数为 false
Markdown类型消息
use DingTalkNotice\Messages\Markdown; $message = new Markdown('杭州天气', '"#### 杭州天气 @150XXXXXXXX \n > 9度,西北风1级,空气良89,相对温度73%\n');
ActionCard类型消息
use DingTalkNotice\Messages\ActionCard; $message = new ActionCard('乔布斯20年前想打造一间苹果咖啡厅', ' ### 乔布斯 20 年前想打造的苹果咖啡厅');
整体跳转类型
$message->single('阅读全文', 'https://open.dingtalk.com/document/group/custom-robot-access', true); // 重点:点击按钮触发的URL,PC端默认在侧边栏打开,如需在浏览器打开,请设置第 3 个参数为 false
独立跳转类型
$message->addButton('内容不错', 'https://www.dingtalk.com/', true); // 重点:点击按钮触发的URL,PC端默认在侧边栏打开,如需在浏览器打开,请设置第 3 个参数为 false
FeedCard类型消息
use DingTalkNotice\Messages\FeedCard; $message = new FeedCard(); $message->addLink('时代的火车向前开', 'https://www.dingtalk.com/', 'https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png', true); // 重点:点击单条信息到跳转URL,PC端默认在侧边栏打开,如需在浏览器打开,请设置第 4 个参数为 false
消息接收人
@其他人
$message->at(['138xxxxxxx']);
or
$message->at('138xxxxxxxx,139xxxxxxxx');
or
$message->at('138xxxxxxxx');
@所有人
$message->atAll();
消息发送
容器解析
app(DingTalk::class)->setMessage($message)->send();
辅助函数 dingtalk
dingtalk()->setMessage($message)->send();
多机器人消息发送
容器解析
app(DingTalk::class)->other('log')->setMessage($message)->send();
辅助函数 dingtalk
dingtalk()->other('log')->setMessage($message)->send();