Download the PHP package calchen/laravel-dingtalk-robot-notification without Composer
On this page you can find all versions of the php package calchen/laravel-dingtalk-robot-notification. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download calchen/laravel-dingtalk-robot-notification
More information about calchen/laravel-dingtalk-robot-notification
Files in calchen/laravel-dingtalk-robot-notification
Package laravel-dingtalk-robot-notification
Short Description 钉钉智能群助手 Laravel/Lumen 消息通知扩展包(Dingtalk robot message notifications for Laravel/Lumen)
License MIT
Informations about the package laravel-dingtalk-robot-notification
laravel-dingtalk-robot-notification
钉钉群机器人 Laravel/Lumen 扩展包
这是一个钉钉群机器人的 Laravel/Lumen 消息通知(Notification)扩展包
安装
推荐使用 composer 进行安装:
Laravel
Laravel 5.5+ 已经实现了扩展包发现机制,您不需要进行额外的加载操作,但是依然需要将配置文件发布出来:
Lumen
Lumen 并未移植扩展包自动发现机制,所以需要手动加载扩展包并复制配置文件。
打开配置文件 bootstrap/app.php
并在大约 81 行左右添加如下内容:
将文件系统配置文件从 vendor/calchen/laravel-dingtalk-robot-notification/config/dingtalk_robot.php
复制到 config/dingtalk_robot.php
非 Laravel/Lumen 框架
无需考虑加载问题,请使用全局函数 \dingtalk_robot()
或直接创建 \Calchen\LaravelDingtalkRobot\DingtalkRobot 实例,以发送消息。
配置
打开配置文件 config/dingtalk_robot.php
并按照如下格式添加或修改配置:
请注意,如果需要配置多个机器人,请重复以上操作,并为不同机器人给予不同的 robotName
配置说明
配置项 | 必须 | 数据类型 | 说明 | 备注 | |
---|---|---|---|---|---|
http_client_name | 否 | string/null | Guzzle 实例的名称 | 默认值:null,注入在 Laravel 中的 Guzzle 实例的名称,以便替换 HTTP 客户端 | |
robotName | 是 | string | 机器人名称 | 这个名称为了区别不同的机器人 | |
access_token | 是 | string | 创建机器人后 Webhook URL 中 access_token 的值 | ||
timeout | 否 | int/float | 超时时间 | 默认值:2.0秒,具体见 Guzzle 文档 | |
security_types | 是 | array | 安全设置 | 旧机器人是不存在该项配置的传 null 或不设置该配置项;新机器人可以组合选择:自定义关键字、加签、IP地址(段) | |
security_types.* | 是 | string/null | 设置项 | 枚举值:null、keywords、signature、ip | |
security_signature | 否 | string | 安全模式包含加签时需要的密钥字符串 | 应当以 SEC 开头 |
获取 access_token 并设置安全设置
首先在钉钉群选择添加一个群机器人(智能群助手),如果您不知道如何设置请查看 钉钉文档,请注意这里需要设置的是"自定义"类型的机器人。
根据您的需要设置机器人名字,并选择安全设置。在完成后您将获得一个 webhook 地址,该地址中 access_token 的值即配置中使用到的 access_token 的值, 请妥善保存该 access_token。选择的安全设置就是配置中 security_types 的值,如果您选择了“加签”的安全设置,您还需要妥善保存密钥,该密钥即配置中 security_signature 的值
HTTP 客户端注入
为了方便在某些情况下需要统一管理扩展包使用的 HTTP 客户端,提供了 http_client_name
配置项,以实现从 Laravel 容器中获取已经注入的 Guzzle 实例。如果您不需要手动管理 HTTP 客户端,您可以不设置该配置项或将该配置项值设置成 null。
使用方法
Tips:为了方便快速调试功能,内置了一个使用了 Notifiable Trait 的类:Calchen\LaravelDingtalkRobot\Robot ,以下均以此对象为例,实际开发中请务必根据您项目情况进行对应处理。
首先需要先创建一个 TestDingtalkNotification ,如果是 Laravel 可通过 artisan 命令创建
如果是 Lumen 那么可能需要您手动创建 app/Notifications 文件夹并创建 TestDingtalkNotification.php 文件
根据 Laravel 文档发送通知可以使用 Notifiable Trait
也可以使用 Notification Facade
重点:
TestDingtalkNotification 中的 toDingTalkRobot 方法中可使用下面的五种消息类型。
文本类型消息
link 类型消息
markdown 类型消息
ActionCard 类型消息
整体跳转类型
独立跳转类型
FeedCard 类型消息
使用消息通知(Notification)给多个机器人发同一条消息
不使用消息通知(Notification)
如果在非 Laravel/Lumen 框架中使用或者您不想使用 Notification ,而是直接调用机器人接口发送信息,那么有多种方式可以实现:
容器解析
辅助函数 dingtalk_robot
直接创建并调用接口
从1.x升级到2.x
首先感谢您使用 1.x 版本的扩展包,因为钉钉机器人更新了安全设置,在升级过程中为了使得代码更整洁因此出现了无法兼容的情况,故此将新版升级至2.x版本。这里将明确给出两个版本的差异,以便您以最少的成本进行升级。
配置项的差异
新增
http_client_name
为了方便在某些情况下需要统一管理扩展包使用的 HTTP 客户端,提供了 http_client_name
配置项,以实现从 Laravel 容器中获取已经注入的 Guzzle 实例。如果您不需要手动管理 HTTP 客户端,您可以不设置该配置项或将该配置项值设置成 null。
机器人名称.security_types
数据结构为数组。如果您使用的是旧机器人,配置项中无“安全设置”相关内容,那么您可以不设置该字段,或将其设置成:
如果您使用的是新机器人,请按照机器人的实际情况配置该项,可以组合选择:自定义关键字、加签、IP地址(段),如:
机器人名称.security_signature
密钥字符串。当安全模式包含加签时该字段是必须的。请注意,该字符串前三位应该是 SEC。
鸣谢
感谢 王举,他的 wangju/ding-notice 项目给予了我很多启发。本项目中的部分代码原形来自于该项目。
感谢 aolinver,他为本项目实现了部分可以设置链接的消息的链接在 PC 端用系统默认浏览器打开的功能。
开源协议
All versions of laravel-dingtalk-robot-notification with dependencies
ext-json Version *
guzzlehttp/guzzle Version ^6.3.1|^7.0.1
illuminate/notifications Version ^5.5|^6.0|^7.0|^8.0
illuminate/support Version ^5.5|^6.0|^7.0|^8.0