首页 > 其他分享 > DingTalk API 的使用技术文档

DingTalk API 的使用技术文档

时间:2023-10-08 15:32:03浏览次数:37  
标签:DingTalk text 接口 access token API 文档


前言

DingTalk 是由阿里巴巴集团推出的一款企业级即时通讯软件,主要用于沟通、协作和工作进展的管理。除了官方客户端外,DingTalk 还提供了开放的 API 接口,可以让开发者基于 DingTalk 开发各种应用、机器人等。本文将介绍 DingTalk API 的使用方法和相关技术点。

环境准备

首先,你需要在钉钉开放平台注册一个账号,并创建一个应用(应用类型为自建),获得 AppKeyAppSecret,并填写好应用详情和回调地址等信息。

接着,你需要下载并安装 DingTalk 提供的 SDK(可选)。SDK 目前支持 Java、Python、PHP 等多种语言,通过 SDK,你可以更加方便地调用 API 接口。

如果你不想使用 SDK,也可以直接通过 HTTP 请求方式来调用 API 接口。建议使用 HTTPS 协议。

API 接口列表

DingTalk 提供了丰富的 API 接口,包括获取 access_token、发送消息、获取部门列表、获取用户信息等等。下面是一些常用的 API:

  1. 获取 access_token

access_token 是调用 DingTalk API 的必要参数,每个 access_token 的有效期为 2 个小时。获取 access_token 的接口如下:

GET https://oapi.dingtalk.com/gettoken?appkey=<appkey>&appsecret=<appsecret>

其中,<appkey><appsecret> 分别是你在钉钉开放平台创建应用时获得的 AppKeyAppSecret。返回结果包含一个有效期为 2 小时的 access_token。

  1. 发送文本消息

发送文本消息的接口如下:

POST https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=<access_token>

请求体的 JSON 格式如下:

{
    "agent_id": 123456,
    "userid_list": ["user1", "user2"],
    "msg": {
        "msgtype": "text",
        "text": {
            "content": "Hello, world!"
        }
    },
    "to_all_user": false,
    "dept_id_list": ["dept1", "dept2"]
}

注:以上 JSON 格式中,agent_id 为应用的 ID,userid_list 为接收人的用户 ID 列表,msg 为消息内容,text 为文本消息内容,to_all_user 表示是否发给企业所有用户,dept_id_list 表示部门 ID 列表。

  1. 获取所有部门列表

获取所有部门列表的接口如下:

GET https://oapi.dingtalk.com/department/list?access_token=<access_token>

返回结果包含所有部门的详细信息列表。

  1. 获取用户详情

获取用户详情的接口如下:

GET https://oapi.dingtalk.com/user/get?access_token=<access_token>&userid=<userid>

其中,<userid> 是用户的 ID,返回结果包含该用户详细信息。

其他 API 接口

除了以上列举的 API 接口外,钉钉还提供了许多其他的 API 接口,包括获取 JSAPI Ticket、发送OA消息、上传媒体文件等等。如果需要使用这些 API 接口,请到钉钉开放平台查看相关文档和示例代码。

API 调用方法

如果你使用 SDK,可以根据 SDK 提供的 API 接口来调用相应的 DingTalk API。以下是使用 Java SDK 发送文本消息的示例代码:

DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
OapiMessageCorpconversationAsyncsendV2Request req = new OapiMessageCorpconversationAsyncsendV2Request();
req.setAgentId(agentId);
req.setUseridList(useridList);
OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
msg.setMsgtype("text");
OapiMessageCorpconversationAsyncsendV2Request.Text text = new OapiMessageCorpconversationAsyncsendV2Request.Text();
text.setContent("Hello, world!");
msg.setText(text);
req.setMsg(msg);
req.setToAllUser(false);
req.setDeptIdList(deptIdList);
OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(req, access_token);

如果你不使用 SDK,可以使用 HTTP 请求方式来调用 DingTalk API。以下是使用 Python 通过 HTTP POST 请求发送文本消息的示例代码:

import requests

url = 'https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2'
params = {'access_token': access_token}
headers = {'Content-Type': 'application/json'}
payload = {
    'agent_id': agent_id,
    'userid_list': userid_list,
    'msg': {
        'msgtype': 'text',
        'text': {
            'content': 'Hello, world!'
        }
    },
    'to_all_user': False,
    'dept_id_list': dept_id_list
}
response = requests.post(url, params=params, headers=headers, json=payload)

注意,在 HTTP 请求中,需要将参数放在 URL 或者请求体中,并将请求体以 JSON 格式发送。

总结

DingTalk API 提供了丰富的接口,让开发者可以根据业务需求自由定制各种应用。在使用 DingTalk API 的时候,需要注意一些安全方面的问题,如保护 access_token、设置合理的权限等。希望这篇技术文档能够帮助到你更好地使用 DingTalk API。

标签:DingTalk,text,接口,access,token,API,文档
From: https://blog.51cto.com/u_16161880/7757024

相关文章

  • apisix简介
    一、简介国产云原生微服务API网关。ApacheAPISIX是一个动态、实时、高性能的API网关,提供丰富的流量管理特性,例如负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等。既可以处理传统的南北向流量,也可以处理服务间的东西向流量。支持多种环境部署,并提供大量插件实......
  • 身为产品经理该如何向客户推广API商品数据接口
    在当今数字化的时代,API(ApplicationProgrammingInterface,应用程序编程接口)已成为各种软件应用程序之间交互数据的主要方式。API商品数据接口作为一种特殊类型的API,能够让不同的系统之间共享商品数据,从而提高系统的互通性和效率。作为产品经理,推广API商品数据接口是一项重要的任务......
  • .net6 webapi 项目注册为windows 服务后访问静态文件
    直接使用kestrel运行程序时,只需要http://localhost:port/file.html即可访问,但是将程序注册为windows服务后,http://localhost:port/file.html会报404的错误,此时要访问到这个文件,http://localhost:port/wwwroot/file.html才行,如果想要windows服务和web的url一致只需要加......
  • C# Dx截图初始化报错“SharpDX.SharpDXException: HRESULT: [0x80070057], Module: [G
    最近发现Dx截图创建输出设备时output.QueryInterface<Output1>().DuplicateOutput报错:“SharpDX.SharpDXException:HRESULT:[0x80070057],Module:[General],ApiCode:[E_INVALIDARG/InvalidArguments],Message:参数错误。经过验证,如果一个进程多次创建输出设备(多次调用o......
  • EFCore 使用FluntApi配置 全局查询筛选器
    我们在类中通常会有一个属性为IsDel来表示软删除或也称逻辑删除,这个属性会导致我们在进行查询操作时,每一次都要.where(s=>s.IsDel==false)非常的麻烦。在使用efCore时可用通过配置查询筛选器来很好的解决这个问题。publicclassSysUser{publiclongId{get;set;}publi......
  • 详解PHP反射API
    反射API的部分类使用反射API这些类,可以获得在运行时访问对象、函数和脚本中的扩展的信息。通过这些信息可以用来分析类或者构建框架。类描    述Reflection为类的摘要信息提供静态函数export()ReflectionClass类信息和工具ReflectionMethod类方法信......
  • FastAPI学习-27 使用@app.api_route() 设置多种请求方式
    对同一个访问函数设置多个http请求方式api_route使用使用methods参数设置请求方式fromfastapiimportFastAPIapp=FastAPI()@app.api_route('/demo/b',methods=['get','post'])asyncdefdemo2():return{"msg":"demo2su......
  • 使用BAPI_NETWORK_COMP_*实现生产订单组件的增删改查
    1、文档说明对于生产订单组件的增删改有多种办法,比较常用的有使用内部函数CO_XT_COMPONENT_*,有改造BAPI_ALM_ORDER_MAINTAIN来实现,各有千秋。本文档介绍,通过PS的BAPI_NETWORK_COMP_*系列BAPI,来实现常见的组件先删后建的覆盖式操作,组件部分字段修改,组件信息查询等功能2、BAPI用......
  • 基于android的中医体质的社区居民健康管理系统-计算机毕业设计源码+LW文档
    摘要首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本......
  • 基于springboot的小程序的高校后勤管理系统-计算机毕业设计源码+LW文档
    1、选题背景与意义(含国内外相关研究综述及评价)近年来,随着计算机的不断发展和深入到各个行业中并起到了很重要的作用,给人们带来了很大的便利。在这样的趋势下,高校的后勤管理显得也很重要。在《高校后勤管理系统的设计与实现》中也提到,教育的普及和日益激烈的资源竞争,对学校的教学质......