钉钉机器人消息推送

<?php

namespace App\Libraries;

use PhpParser\Error;

/**
 * 钉钉接口
 * Class Dingtalk
 * @package App\Libraries
 */
class Dingtalk
{
    protected $bcw_webhook = '这里是创建的机器人接收消息地址';

    /**
     * 发送信息至钉钉群机器人
     * @param $msg 要发送的信息
     * @return false|mixed
     */
    function sendMsgToDingTalk($msg)
    {
        $data = [
            'msgtype' => 'text',
            'text' => [
                'content' => $msg,
            ]
        ];
        $res = $this->doPost($this->bcw_webhook, $data);
        $res = json_decode($res);
        if($res) return $res;
        return false;
    }

    private function doPost(string $url, array $param, $timeout = 30)
    {
        try {
            $header[] = 'Content-Type: application/json';
            $post_string = json_encode($param);

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);    // https请求 不验证证书和hosts
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
            curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //模拟的header头
            $result = curl_exec($ch);
            curl_close($ch);
        } catch (Error $error) {
            $result = false;
        }
        return $result;
    }
}

调用
ding = new Dingtalk();
$change_desc = ‘’;
d i n g − > s e n d M s g T o D i n g T a l k ( ding->sendMsgToDingTalk( ding>sendMsgToDingTalk(change_desc);

消息类型及数据格式
在这里插入图片描述
在这里插入图片描述
> 钉钉开放文档

### PHP 实现钉钉推送的消息类型 在PHP中实现向钉钉送不同类型的消息主要依赖于HTTP请求,特别是POST方法来传递JSON数据给指定的WebHook URL。以下是几种常见的消息类型: #### 文本消息 这是最简单的一种形式,仅包含纯文本内容。通过设置`msgtype`字段为"text"并提供相应的`content`参数即可完成构建。 ```php <?php $data = [ "msgtype" => "text", "text" => ["content"=>"这里是你想要送的文字"] ]; ``` #### 链接消息 链接消息允许附带URL地址以及描述性的文字说明。这有助于引导接收者点击进入特定网页获取更多信息。 ```php <?php $data = array ( &#39;msgtype&#39; => &#39;link&#39;, &#39;link&#39; => array ( &#39;title&#39;=> &#39;这是一个标题&#39;, &#39;text&#39; => &#39;这里是简介部分的内容...&#39;, &#39;picUrl&#39;=>&#39;http://example.com/image.jpg&#39;,// 可选图片链接 &#39;messageUrl&#39;=>&#39;https://www.example.com/&#39;// 跳转的目标网址 ) ); ``` #### MarkDown消息 支持Markdown语法书写富媒体格式的信息,可以更好地展示结构化信息如列表、加粗字体等特性。 ```php <?php $data = [ "msgtype" => "markdown", "markdown" => [ "title"=> "测试", "text" => "# 这是一个一级标题\n> 引用一段话" ] ]; ``` #### 整体跳转ActionCard 这种卡片样式会在底部显示一个按钮,当用户点击查看时会触整个卡片区域作为超链接行为打开设定好的页面。 ```php <?php $actionCardData = [ "actionCard" => [ "title" => "氧气活动", "text" => "![screenshot](http://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png)\n### 万能的大神们 \n你们好,这个是示例。", "singleTitle" => "查看详情", "singleURL" => "https://www.dingtalk.com/" ], "msgtype" => "actionCard" ]; ``` 每种消息类型的创建都需要按照上述方式准备好相应结构的数据对象,并将其转换成JSON字符串后送至钉钉机器人的接口[^4]。 为了确保成功送这些不同种类的消息,在实际编码过程中还需要注意一些细节问题,比如正确处理中文字符集编码,合理利用异常捕获机制提高程序健壮性等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值