PHP code example of calchen / laravel-dingtalk-robot-notification

1. Go to this page and download the library: Download calchen/laravel-dingtalk-robot-notification library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

calchen / laravel-dingtalk-robot-notification example snippets


$app->register(Calchen\LaravelDingtalkRobot\DingtalkRobotNoticeServiceProvider::class);

'robotName' => [
    'access_token' => 'xxxx',
    'timeout' => 2.0,
    'security_types' => [
        'signature',
    ],
    'security_signature' => 'SECxxxx',
],



namespace App\Notifications;

use Calchen\LaravelDingtalkRobot\DingtalkRobotChannel;
use Calchen\LaravelDingtalkRobot\Message\Message;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;

class TestDingtalkNotification extends Notification
{
    // 注意这里如果不需要异步可不使用 Queueable Trait
    use Queueable;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    public function via($notifiable)
    {
        // 这里的 channel 必须包含 DingtalkRobotChannel 才能正常的发送消息
        return [DingtalkRobotChannel::class];
    }

    /**
     * @param $notifiable
     *
     * @return Message
     */
    public function toDingTalkRobot($notifiable): Message
    {
        /**
         *  $message 根据消息类型的不同由 Calchen\LaravelDingtalkRobot\Message\Message 的各个子类创建
         * 
         * @var Message $message 
         */
        $message = ...;
    
        // 这里可以指定机器人,如果不需要指定则默认使用名称为 default 的机器人
        $message->setRobot($notifiable->getName());

        return $message;
    }
}

use Calchen\LaravelDingtalkRobot\Robot;

(new Robot)->notify(new TestDingtalkNotification());

\Notification::send(new Robot, new TestDingtalkNotification());

use Calchen\LaravelDingtalkRobot\Message\TextMessage;

public function toDingTalkRobot($notifiable)
{
    $message = new TextMessage('我就是我,  @1825718XXXX 是不一样的烟火');
    
    // 可@某人或某些人,被@的人的手机号应出现在上面的消息体中
    $message->at('1825718XXXX');
    // $message->at(['1825718XXXX', '1825718XXXY']);
    
    // 可@全部人,被@的人的手机号不需要出现在消息体中
    // $message->atAll();
    
    // 这里可以指定机器人,如果不需要指定则默认使用名称为 default 的机器人
    $message->setRobot($notifiable->getName());
       
    return  $message;
}

use Calchen\LaravelDingtalkRobot\Message\LinkMessage;

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

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

    // 如果想让链接在 PC 端用系统默认浏览器打开可以这样
    // $message = new LinkMessage(
    //     '自定义机器人协议',
    //     '群机器人是钉钉群的高级扩展功能。群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步。例如:通过聚合GitHub,GitLab等源码管理服务,实现源码更新同步;通过聚合Trello,JIRA等项目协调服务,实现项目信息同步。不仅如此,群机器人支持Webhook协议的自定义接入,支持更多可能性,例如:你可将运维报警提醒通过自定义机器人聚合到钉钉群。',
    //     'https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.Rqyvqo&treeId=257&articleId=105735&docType=1',
    //     false
    // );
    //
    // $message = new LinkMessage();
    // $message->setMessage(
    //     '自定义机器人协议',
    //     '群机器人是钉钉群的高级扩展功能。群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步。例如:通过聚合GitHub,GitLab等源码管理服务,实现源码更新同步;通过聚合Trello,JIRA等项目协调服务,实现项目信息同步。不仅如此,群机器人支持Webhook协议的自定义接入,支持更多可能性,例如:你可将运维报警提醒通过自定义机器人聚合到钉钉群。',
    //     'https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.Rqyvqo&treeId=257&articleId=105735&docType=1',
    //     false
    // );
    
    // 这里可以指定机器人,如果不需要指定则默认使用名称为 default 的机器人
    $message->setRobot($notifiable->getName());
    
    return  $message;
}

use Calchen\LaravelDingtalkRobot\Message\MarkdownMessage;

public function toDingTalkRobot($notifiable)
{
    $message = new MarkdownMessage(
        '杭州天气',
        "#### 杭州天气  \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/) "
    );
    
    // 可@某人或某些人,被@的人的手机号应出现在上面的消息体中
    $message->at('1825718XXXX');
    // $message->at(['1825718XXXX', '1825718XXXY']);
    
    // 可@全部人,被@的人的手机号不需要出现在消息体中
    // $message->atAll();
    
    // 这里可以指定机器人,如果不需要指定则默认使用名称为 default 的机器人
    $message->setRobot($notifiable->getName());
    
    return  $message;
}

use Calchen\LaravelDingtalkRobot\Message\ActionCardMessage;

public function toDingTalkRobot($notifiable)
{
    $message = new ActionCardMessage(
        '乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身',
        "![screenshot](@lADOpwk3K80C0M0FoA) \n #### 乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划"
    );
    $message->setSingle('阅读全文', 'https://www.dingtalk.com/');

    // 如果想让链接在 PC 端用系统默认浏览器打开可以这样
    // $message->setSingle('阅读全文', 'https://www.dingtalk.com/', false);
    
    // 这里可以指定机器人,如果不需要指定则默认使用名称为 default 的机器人
    $message->setRobot($notifiable->getName());
    
    return  $message;
}

use Calchen\LaravelDingtalkRobot\Message\ActionCardMessage;

public function toDingTalkRobot($notifiable)
{
    $message = new ActionCardMessage(
        '乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身',
        "![screenshot](@lADOpwk3K80C0M0FoA) \n #### 乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划"
    );
    
    // 添加一个或多个按钮
    $message->addButton('内容不错', 'https://www.dingtalk.com/');
    $message->addButton('不感兴趣', 'https://www.dingtalk.com/');

    // 如果想让链接在 PC 端用系统默认浏览器打开可以这样
    // $message->addButton('不感兴趣', 'https://www.dingtalk.com/', false);
    
    // 这里可以指定机器人,如果不需要指定则默认使用名称为 default 的机器人
    $message->setRobot($notifiable->getName());
    
    return  $message;
}

use Calchen\LaravelDingtalkRobot\Message\FeedCardMessage;

public function toDingTalkRobot($notifiable)
{
    $message = new FeedCardMessage();
    
    // 添加一个或多个链接
    $message->addLink(
        '时代的火车向前开',
        'https://mp.weixin.qq.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI',
        'https://www.dingtalk.com/'
    );
    $message->addLink(
        '时代的火车向前开2',
        'https://mp.weixin.qq.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI',
        'https://www.dingtalk.com/'
    );

    // 如果想让链接在 PC 端用系统默认浏览器打开可以这样
    // $message->addLink(
    //     '时代的火车向前开2',
    //     'https://mp.weixin.qq.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI',
    //     'https://www.dingtalk.com/',
    //     false
    // );
    
    // 这里可以指定机器人,如果不需要指定则默认使用名称为 default 的机器人
    $message->setRobot($notifiable->getName());
    
    return  $message;
}

use Calchen\LaravelDingtalkRobot\Robot;

$notification = new TestDingtalkNotification();

(new Robot('robot_1'))->notify($notification);
(new Robot('robot_2'))->notify($notification);

// TestDingtalkNotification 文件
use Calchen\LaravelDingtalkRobot\Message\TextMessage;

public function toDingTalkRobot($notifiable)
{
    $message = new TextMessage('我就是我, 是不一样的烟火');
    
    // 这里可以指定机器人,如果不需要指定则默认使用名称为 default 的机器人
    // 这里需要 $notifiable 内保存机器人的名称,并提供获取的方法,方可实现给不同机器人发同一条消息
    $message->setRobot($notifiable->getName());
    
    return  $message;
}

use Calchen\LaravelDingtalkRobot\DingtalkRobot;
use Calchen\LaravelDingtalkRobot\Message\TextMessage;

$message = new TextMessage('我就是我, 是不一样的烟火');
$message->setRobot('机器人名字');

app(DingtalkRobot::class)->setMessage($message)->send();

use Calchen\LaravelDingtalkRobot\Message\TextMessage;

$message = new TextMessage('我就是我, 是不一样的烟火');
$message->setRobot('机器人名字');

dingtalk_robot()->setMessage($message)->send();

use Calchen\LaravelDingtalkRobot\DingtalkRobot;
use Calchen\LaravelDingtalkRobot\Message\TextMessage;

$message = new TextMessage('我就是我, 是不一样的烟火');
$message->setRobot('机器人名字');

(new DingtalkRobot)->setMessage($message)->send();

'security_types' => [
    null,
],

'security_types' => [
    'keywords',   // 自定义关键字
    'signature',  // 加签
    'ip',		  // IP地址(段)
],
shell
php artisan vendor:publish --provider="Calchen\LaravelDingtalkRobot\DingtalkRobotNoticeServiceProvider"
shell
php artisan make:notification TestDingtalkNotification