wyrine/dingding

发送消息到钉钉机器人的组件

v1.0 2018-08-13 06:37 UTC

This package is not auto-updated.

Last update: 2024-10-02 20:42:59 UTC


README

发送消息到钉钉机器人的组件。

它使用 guzzlehttp 发送请求。简化了钉钉机器人 API,你会发现它非常简单。

你可以使用对象来创建钉钉消息,组件将帮助你在后台完成其他事情。

安装

composer require wyrine/dingding

建议

我建议你安装一个日志组件(例如 monolog)以记录请求和响应。

基本用法

在你继续之前,你必须知道如何获取钉钉机器人的 webhook url 并配置你自己的钉钉机器人 webhook url。

现在,组件仅支持两种格式的消息。

文本消息

<?php
use Wyrine\DingDing\DingDing;
use Wyrine\DingDing\Message\TextMessage;

$dingding = new DingDing("https://oapi.dingtalk.com/robot/send?access_token=b8b1b3d5193d6caffec98a4ce2b8676a32415a7da7b1f9bacccdf75d4ee5ee2c");
$textMessage = new TextMessage();
$textMessage->setContent('Hello World')->at('110');

$dingding->send($textMessage);

Markdown 消息

<?php
use Wyrine\DingDing\DingDing;
use Wyrine\DingDing\Message\MarkdownMessage;

$dingding = new DingDing("https://oapi.dingtalk.com/robot/send?access_token=b8b1b3d5193d6caffec98a4ce2b8676a32415a7da7b1f9bacccdf75d4ee5ee2c");
$markdownMessage = new MarkdownMessage();
$markdownMessage
    ->setTitle('Hello World')
    ->setTextPicUrl('http://i01.lw.aliimg.com/media/lALPBbCc1ZhJGIvNAkzNBLA_1200_588.png')
    ->at('110');
$dingding->send($markdownMessage);

这就是全部!真的很简单,不是吗?

默认情况下,$dingding->send() 将返回一些消息给你。当请求发送成功时,它将返回 'httpcode: httpbody',例如 200: OK。当出现错误时,它将返回字符串消息。

并且你可以自定义自己的回调逻辑。

下面的代码假设你已经安装了 monolog。

<?php
use Wyrine\DingDing\DingDing;
use Wyrine\DingDing\Message\MarkdownMessage;

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use GuzzleHttp\Exception\RequestException;
use Psr\Http\Message\ResponseInterface;

//create log instance
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__ . '/../log/my_app.log', Logger::DEBUG));

//create dingding object
$dingding = new DingDing("https://oapi.dingtalk.com/robot/send?access_token=b8b1b3d5193d6caffec98a4ce2b8676a32415a7da7b1f9bacccdf75d4ee5ee2c");
//make your own request
$markdownMessage = new MarkdownMessage();
$markdownMessage
    ->setTitle('Hello World')
    ->setTextPicUrl('http://i01.lw.aliimg.com/media/lALPBbCc1ZhJGIvNAkzNBLA_1200_588.png')
    ->at('110');

//request send success callback
$sucCallable = function (ResponseInterface $response) use ($logger){
   $logger->info($response->getStatusCode() . ' :' . $response->getBody());
};

//something wrong callback
$exceptionCallable = function (RequestException $exception) use($logger){
   $logger->error($exception->getMessage());
};
$dingding->send($markdownMessage, $sucCallable, $exceptionCallable);

你可以在匿名函数体内实现回调,你可以使用 use() 函数传递变量并在函数体内使用它。