PHP 通过钉钉API向员工推送消息(以工作通知的形式)

通过钉钉 API 向员工推送消息分为多种形式, 今天只以工作通知的形式讲述。

第一步: 进入  钉钉开放平台 注册账号按照流程操作即可

 进入开发者后台后需要进行创建应用(之所以创建应用, 是因为以应用为一个 demo)

第二步:创建应用(今天以创建小程序为例)

 第三步: 获取企业内部应用的 accessToken(accessToken 用于身份令牌)

 获取 accessToken 需要开通相应的接口权限,没有开通权限,用 api 是获取不到任何数据的。上图所示获取: 获取企业内部应用的 accessToken 需要开通 ” 调用企业 API 基础权限 ” 权限
下面是获取 accessToken 代码:

/*
 *1. 获取企业内部应用的 accessToken
 */
// 填写 appKey 和 appSecret
 $appKey = 'XXXXXXXXXXXX';
 $appSecret = 'XXXXXXXXXXXXXX';

 // 发起请求获取 access_token
 $url = 'https://api.dingtalk.com/v1.0/oauth2/accessToken';
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_POST, true);
 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array('appKey' => $appKey,
     'appSecret' => $appSecret,
 )));
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',));
 $response = curl_exec($ch);
 curl_close($ch);

 // 解析响应获取 access_token
 $json = json_decode($response, true);

 $access_token = $json['accessToken'];

返回结果如下:

{
    "errcode": 0,
    "access_token": "96fc7a7axxx",
    "errmsg": "ok",
    "expires_in": 7200
}

第四步: 获取公司组织架构下的所有部门(需要开通通讯录部门信息读权限)

 代码如下:

// 获取公司组织架构下的部分

$url = "https://oapi.dingtalk.com/topapi/v2/department/listsub?access_token=".$access_token;

$data = array('dept_id' => '' // dept_id 需要替换为实际的部门 ID(获取部门应当为空)
);
// 设置 POST 请求头部信息
$header = array(
    'Content-Type: application/json',
    'charset: utf-8'
);
// 创建一个 cURL 句柄
$ch = curl_init();
// 设置 cURL 句柄的相关选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
// 执行 cURL 请求,并获取返回结果
$bumen = curl_exec($ch);
// 关闭 cURL 句柄
curl_close($ch);
// 输出返回结果
// 解析响应获取  $bumen
$bumens = json_decode($bumen, true);

返回结果:

{
    "errcode": 0,
    "errmsg":"ok",
    "result": [
        {
            "auto_add_user": true,
            "create_dept_group": true,
            "dept_id": 37xxxx95,
            "name": "市场部",
            "parent_id": 1
        },
        {
            "auto_add_user": true,
            "create_dept_group": true,
            "dept_id": 399xxxx96,
            "name": "财务部",
            "parent_id": 1
        }
    ],
    "request_id": "5um7ykyaalsj"
}

获取员工的 useridxu 需要用到 ”dept_id” 字段,”dept_id” 是部门 id

第五步: 获取到员工 id(获取员工 id,需要开启通讯录部门成员读权限)
获取部门用户基础信息代码如下:

// 获取员工信息
        $url = "https://oapi.dingtalk.com/topapi/user/listsimple?access_token=".$access_token;
        $data = array('dept_id' =>'XXXXXXXXXXXXXXXXX', // dept_id 需要替换为实际的部门 ID
            'cursor' =>0, // 分页查询的游标,最开始传 0
            'size' =>10 // 分页长度,最大值 100
       );

       // 设置 POST 请求头部信息
        $header = array(
           'Content-Type: application/json',
           'charset: utf-8'
       );

      // 创建一个 cURL 句柄
         $ch = curl_init();
       设置 cURL 句柄的相关选项
       curl_setopt($ch, CURLOPT_URL, $url);
       curl_setopt($ch, CURLOPT_POST, true);
       curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
       curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

      // 执行 cURL 请求,并获取返回结果
        $List = curl_exec($ch);

      // 关闭 cURL 句柄
        curl_close($ch);

      // 解析响应获取  $bumen
        $Lists = json_decode($List, true);

返回结果如下:

{
    "errcode": 0,
    "errmsg": "ok",
    "result": {
        "has_more": false,
        "list": [
            {
                "name": "测试用户 2",
                "userid": "user100"
            },
            {
                "name": "李思",
                "userid": "user1"
            }
        ]
    },
    "request_id": "x4p6arvi0fzj"
}

第六步: 给员工发送工作通知(开通调用企业 API 基础权限,在第三步时候开通了,现在就不截图了),直接上代码

// 发送工作通知
$url = "https://oapi.dingtalk.com/topapi/message
$data = array('agent_id' => 'XXXXX',
      'msg' => array('msgtype' => 'markdown',
      'markdown' => array('title' => 'XXXX 提醒你',
      'text' => '你好,今天是周几?'
           )
       ),
     'userid_list' => 'xxxxxxxxxxxx',// 员工 id
     //   'dept_id_list' => 'xxxxxxx' // 接收者是部门 ID 时,包括子部门下的所有用户
              );

      // 设置 POST 请求头部信息
          $header = array(
              'Content-Type: application/json',
              'charset: utf-8'
          );

     // 创建一个 cURL 句柄
          $ch = curl_init();

     // 设置 cURL 句柄的相关选项
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_POST, true);
          curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

     // 执行 cURL 请求,并获取返回结果
          $UserBumen = curl_exec($ch);
     // 关闭 cURL 句柄
          curl_close($ch);

     // 解析响应获取  $bumen
          $UserBumens = json_decode($UserBumen, true);

返回结果如下:

{
        "errcode":0,
        "task_id":256271667526,
        "request_id":"4jzllmte0wau"
}

推送结果截图

 

  • 企业内部应用发送消息单次最多只能给 5000 人发送,第三方企业应用发送消息单次最多能给 1000 人发送。

  • 给同一员工一天只能发送一条内容相同的消息通知。

  • 企业内部应用每天给每个员工最多可发送 500 条消息通知,第三方企业应用最多可发送 100 条。

  • 企业内部应用或第三方企业应用发送消息时,每分钟最多有 5000 人可以接收到消息。

到此结束了,后面再写其它的推送方法,如果有小伙伴想快点写出来,请在下方留言,我会尽快把其他方法也写出来。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值