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 人可以接收到消息。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/37323.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LzDingTalk-免费的钉钉机器人框架

LzDingTalk-是一款免费的钉钉机器人框架 1.异常处理规则 2.稳定不易掉线 3.哈希多线程处理 再多消息也能轻松应对 4.框架完全免费,用爱发电! 5.多样式API支持二次开发插件! 蓝奏下载地址:DingTalk 密码:6jbd界面展示&a…

禅道接入钉钉工作通知与钉钉群机器人二次开发代码详解

目录 禅道接入钉钉工作通知与钉钉群机器人 一、钉钉工作通知使用步骤 1.进入钉钉管理后台工作台添加自建应用进入开发者平台 2.禅道中得操作 3.接收到消息 二、钉钉群机器人使用步骤 1.钉钉群进行设置群机器人 2.禅道设置 三、禅道二次开发添加新功能进行工作通知和群机…

推送Markdown格式信息到钉钉机器人

1.自定义机器人设置 根据钉钉官方开放文档进行自定义机器人的配置,文档地址为:自定义机器人接入 - 钉钉开放平台 (dingtalk.com) 2.Markdown推送形式 Markdown类型 参数说明 3.Markdown图片格式 Markdown中可以使用url连接的图片进行推送&#xff0c…

Java项目如何接入钉钉群机器人

创建群机器人:对于任意我们所在的群,我们都可以创建自己的机器人,不需要群主权限,每个机器人信息只能自己看到。 我们项目通过对应的链接调用机器人发送消息。 创建对应的鉴权方式, 关键字只要消息内容携带即可&…

雷军入局ChatGPT大战/ AutoGPT星标超PyTorch/ 马斯克星舰今晚发射…今日更多新鲜事在此...

h日报君 发自 凹非寺量子位 | 公众号 QbitAI 大家好,今天是4月17日星期一,新的一周要元气满满哦~ 今天科技圈有哪些新鲜事儿,和日报君一起来看看~ 马斯克星舰今晚发射:将进行直播,此前曾延期 SpaceX官网发布通告称&…

[论文阅读] Collaborative and Adversarial Learning of Focused and Dispersive Representation

[论文地址] [代码] [ICCV 21] Abstract 从结肠镜图像中自动分割息肉是计算机辅助诊断结直肠癌的一个重要步骤。近年来报道的大多数息肉分割方法都是基于完全监督的深度学习。然而,医生在诊断过程中对息肉图像的注释是非常耗时和昂贵的。在本文中,我们提…

2000元训练比肩ChatGPT的开源大模型!GPT-4亲自盖章认证,模型权重均可下载

鱼羊 编辑整理量子位 | 公众号 QbitAI 2000块,调教出一个达到ChatGPT九成功力的开源大模型。 还是被GPT-4亲自盖章认证实力的那种。 这事儿,一群主要来自加州大学伯克利分校的研究人员做到了。 如图中所见,这个模型名叫Vicuna (小…

chatgpt赋能python:Python处理雷达基数据:从入门到实践

Python处理雷达基数据:从入门到实践 随着气象技术的不断发展,雷达探测技术已成为当今天气预报和气象研究的主要手段之一。雷达基数据是气象雷达接收到的未经加工的原始数据,因其包含大量天气信息,不仅在天气预报、天气预警等方面…

推演语言模型的大小与计算开销

2020年,OpenAI提出了在增加模型尺寸与提高模型性能之间的扩展定律,指出人们应该将大部分预算用于扩大模型规模。这篇论文直接推动了增大模型规模的浪潮。然而,在预算和内存有限的情况下,盲目扩大模型规模并不是提升模型性能的最佳…

codesblocks头文件的正确使用

之前对头文件如何引用一直百思不得其解,现在弄懂了,来复盘一下。关键点在于要建立工程文件。 下面以一个长度转换的程序来简单说明。 第一步,建立C语言项目。 在新建项目点击Console applicaton,接着打上名称,默认设置…

jdbc工具类的定义和使用

DBUtils的定义 导入3个jar包 代码实现 public class DBUtils {//1.配置数据库连接信息(MySQL)//数据库驱动private static final String DRIVER "com.mysql.jdbc.Driver";//数据库名private static final String DATABASE "test_db&q…

Servlet的介绍与使用

Servlet简介 servlet是运行在服务器上的应用程序, 它的作用是实现前端与后台的数据交互。 Servlet生命周期 三个方法 init():初始化 service():处理客户端请求 destroy():终止 工作原理 客户端向服务器发送一个http请求服务器…

python破解md5_python怎么使用md5加密解密

python采用hashlib这个标准库实现MD5加密解密。方法是:1、updata传数据;2、利用hexdigest进行16进制转换; update(arg)传入arg对象来更新hash的对象。必须注意的是,该方法只接受byte类型,否则会报错。这就是要在参数前添加b来转换类型的原因。 同时要注意,重复调用update…

分布式任务调度平台XXL-JOB的简单使用

推荐使用xxl2.2.0版本 参考地址: 分布式任务调度平台XXL-JOB xxl-job安装到本地打开项目工程对yml配置文件进行修改 主要修改数据库地址和告警邮件地址 将服务注册到xxl-job -如果在xxl里配置了accessToken 服务里就需要使用同样的Token 注册到xxl-job-admin之后打开xxl可视…

selenium获取页面数据入数据库

Selenium是一个用于Web应用程序测试的工具,但是也可以爬取页面中的数据。 开发环境是内网(局域网),项目工程是web项目,jdk使用的1.8,tomcat使用的 8。 web项目: 启动时使用tomcat,…

ChatGPT 教我用 200 行代码写一个简版 Vue 框架 - OpenTiny

AI 是未来最好的老师 最近,我正在准备一份关于 Vue 基础的学习材料。期间我突发奇想:能否利用现在热门的 ChatGPT 帮我创建学习内容?其实 Vue 本身不难学,特别是基础用法,但是,如果你想深入掌握 Vue&#…

阿里云AliGenie开发天猫语音功能-入门篇

文章目录结构如下 登录应用开发平台 创建语音技能 云开发部署后端技能服务 语音技能测试 下线不必要的应用 一、登录应用开发平台 1.登录云开发平台。打开网址 https://workbench.aliyun.com/,使用阿里云账号登录,按照提示创建团队,点…

ESP8266对接天猫精灵-多路继电器控制

上面是我的微信和QQ群,欢迎新朋友的加入。 资源和烧录我就不管了,和https://blog.csdn.net/Jun626/article/details/109150006一模一样 把那个kaiguan的lua改一下代码 DEVICEID "19539" APIKEY "17aaa8a16" INPUTID "…

php对接AliGenie天猫精灵服务器控制智能硬件esp8266③ 渗入熟悉AliGenie 对接协议,揭开第三方云平台是如何让天猫精灵是发送消息到私有服务器的!

本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。 1、 php对接AliGenie天猫精灵服务器控制智能硬件esp8266① 在阿里云购买搭建私有云服务器&…

智能家居领域小米,涂鸦,天猫精灵的 “中台之战”

深圳是跨境电商之都,仅一个华南城就云集了不少了全球排名前五十的亚马逊大卖家。总部不在深圳的跨境电商通常都会在深圳设立主抓供应链的分部。在今年这样疫情叠加外部环境不确定性的当下,大卖家们的日子按道理说不会好过,然而事实却大大出乎…