DingTalkService.php 2.1 KB
<?php

namespace App\Services;

use App\DingDepartment;
use App\DingUser;

/**
 * 文档 https://apihub.cmer.com/docs/cmerdingtalk.html
 */
class DingTalkService
{
    protected $appKey;
    protected $appSecret;
    protected $robotCode;

    protected $headers = [];
    protected $bashUrl = 'https://api.cmer.com';

    public function __construct()
    {
        $this->appKey = env('DING_TALK_APP_KEY');
        $this->appSecret = env('DING_TALK_APP_SECRET');
        $this->robotCode = env('DING_TALK_APP_KEY');
        $this->headers = [
            "Content-Type" => "application/json",
            "apikey" => "UkzZljFv83Z2qBi5YR1o3f2otAVWtug6",
            "X-CmerApi-Host" => "cmerdingtalk.p.cmer.com",
        ];
    }

    /** 发起请求 */
    public function send_request(string $method, string $url, array $payload = [], array $params = [])
    {
        $client = new \GuzzleHttp\Client();
        $options = [
            'headers' => $this->headers,
            'json' => $payload
        ];
        if (!empty($params))
            $options['query'] = $params;

        $response = $client->request($method, $url, $options);
        return $response;
    }

    /** 批量发送私聊消息 */
    public function danliao(string $text, array $user_ids)
    {
        $endpoint = '/v1/danliao';
        $payload = [
            "appKey" => $this->appKey,
            "appSecret" => $this->appSecret,
            "robotCode" => $this->robotCode,
            "msg_param" => $text,
            "user_ids" => $user_ids
        ];
        return $this->send_request('POST', $this->bashUrl . $endpoint, $payload);
    }

    /** 批量发送Ding */
    public function danliao_ding(string $text, array $user_ids)
    {
        $endpoint = '/v1/danliao_ding';
        $payload = [
            "appKey" => $this->appKey,
            "appSecret" => $this->appSecret,
            "robotCode" => $this->robotCode,
            "content" => $text,
            "receiver_user_id_list" => $user_ids
        ];
        return $this->send_request('POST', $this->bashUrl . $endpoint, $payload);
    }

}