一、概述
钉钉作为一种高效的协同办公软件,已经被广泛集成到各类工业软件中,官方也提供了丰富的API开发文档及调试工具,很容易实现集成。OrBit平台也无例外的集成了钉钉的部分应用,如消息对象中的发送钉钉消息,应用了钉钉的“发送工作通知”接口。其实,钉钉API的集成,都是分2个步骤,首先需要获取Tocken,最后是调用相应的API,无非是不同的API,需要提供不同的Url和Body(即Json数据包)。当然,最大的前提是需要在钉钉管理者后台、钉钉开发者后台做好必要的配置,如微应用、机器人、API权限等。以下,将具体阐述“钉钉机器人API”在OrBit平台的集成方法。
PS:需先创建应用、机器人和必要的权限配置。
机器人消息API
二、实现步骤
# 2.1 创建应用
在钉钉开发者后台的【应用开发】页面创建应用,如下:
# 2.2 创建机器人
在钉钉开发者后台的【应用开发】页面,选择应用进入详情页面,在应用功能-机器人与消息推送栏,创建机器人,如下:
# 2.3 钉钉群组添加机器人,并获取webhook
在钉钉群的设置里面,为群组添加机器人,并获取webhook的tocken,如下:
#三、系统配置
# 3.1 通讯组配置
与基础数据菜单组的通讯组配置相同(3.3.11.通讯组),增加了机器人字段,用来存储webhook的tocken,如下:
# 3.2 消息对象配置
在消息对象中新增群发的消息对象,并在【通讯应用】页签下配置群发应用,如下:
四、代码示例
【调用代码】
DECLARE @ReceiveData NVARCHAR(MAX);
DECLARE @appkey NVARCHAR(200) = N'应用的appkey';
DECLARE @appsecret NVARCHAR(200) = N'应用的appsecret';
DECLARE @LocalWCFUrl NVARCHAR(200) = N'';
DECLARE @WebAPIUrl NVARCHAR(MAX)
= N'https://oapi.dingtalk.com/gettoken?appkey=' + @appkey + N'&appsecret=' + @appsecret;
-- 1、获取tocken
EXEC dbo.CLR_CallWebAPIEx @ReceiveData = @ReceiveData OUTPUT, -- nvarchar(max)
@LocalWCFUrl = @LocalWCFUrl,
@IsPost = 0,
@WebAPIUrl = @WebAPIUrl,
@UserName = N'', -- nvarchar(100)
@UserPassword = N'', -- nvarchar(100)
@TimeOutS = 0, -- int
@ContentType = N'', -- nvarchar(1000)
@Headers = N'', -- nvarchar(max)
@PostFormParams = N'', -- nvarchar(max)
@PostRawParams = N'', -- nvarchar(max)
@GetParams = N''; -- nvarchar(max)
--SELECT @ReceiveData;
-- 解析tocken
DECLARE @tocken NVARCHAR(200) = N'';
SELECT @tocken = [Value]
FROM OPENJSON(@ReceiveData)
WHERE [Key] = 'access_token';
-------------------------------------------------------------------------------------------------------------
-- 钉钉机器人
-------------------------------------------------------------------------------------------------------------
SET @WebAPIUrl = N'https://api.dingtalk.com/v1.0/robot/oToMessages/batchSend';
DECLARE @Headers NVARCHAR(200) = N'x-acs-dingtalk-access-token<|=|>' + @tocken;
DECLARE @JsonStr NVARCHAR(MAX) = N'';
-- 机器人robotCode dinghgxdjrt0qs3uvmno
----2.1、发送机器人消息
--SET @JsonStr = N'{
-- "msgParam":"{ \"content\": \"机器人测试消息1... '+CONVERT(NVARCHAR(50),GETDATE(),121)+'\" }",
-- "msgKey":"sampleText",
-- "robotCode":"dingb3tamaqdi3v4jefo",
-- "userIds":[
-- "manager7362"
-- ]
--}';
--EXEC dbo.CLR_CallWebAPIEx @ReceiveData = @ReceiveData OUTPUT, -- nvarchar(max)
-- @LocalWCFUrl = @LocalWCFUrl,
-- @IsPost = 1,
-- @WebAPIUrl = @WebAPIUrl,
-- @UserName = N'',
-- @UserPassword = N'',
-- @TimeOutS = 0,
-- @ContentType = N'application/json;charset=utf-8',
-- @Headers = @Headers,
-- @PostFormParams = N'',
-- @PostRawParams = @JsonStr,
-- @GetParams = N'';
--SELECT @ReceiveData;
----2.2、发送机器人群聊消息
--SET @JsonStr
-- = N'{
-- "msgParam":"{ \"content\": \"机器人测试消息2... '+CONVERT(NVARCHAR(50),GETDATE(),121)+'\" }",
-- "msgKey":"sampleText",
-- "robotCode":"dinghgxdjrt0qs3uvmno",
-- "userIds":[
-- "manager7362"
-- ]
--}';
--EXEC dbo.CLR_CallWebAPIEx @ReceiveData = @ReceiveData OUTPUT, -- nvarchar(max)
-- @LocalWCFUrl = @LocalWCFUrl,
-- @IsPost = 1,
-- @WebAPIUrl = @WebAPIUrl,
-- @UserName = N'',
-- @UserPassword = N'',
-- @TimeOutS = 0,
-- @ContentType = N'application/json;charset=utf-8',
-- @Headers = @Headers,
-- @PostFormParams = N'',
-- @PostRawParams = @JsonStr,
-- @GetParams = N'';
--SELECT @ReceiveData;
--3、发送机器人群聊消息
--3.1创建群,获取chartId/openConversationId
DECLARE @webhook_tocken VARCHAR(MAX) = '机器人webhook的tocken'
-- 3.2 发送群消息
SET @WebAPIUrl = N'https://api.dingtalk.com/v1.0/robot/groupMessages/send';
SET @JsonStr
= N'{
"msgParam":"{ \"content\": \"机器人测试消息 webhook方式 ... ' + CONVERT(NVARCHAR(50), GETDATE(), 121)
+ N'\" }",
"msgKey":"sampleText",
"token":"'+@webhook_tocken+'"
}';
EXEC dbo.CLR_CallWebAPIEx @ReceiveData = @ReceiveData OUTPUT, -- nvarchar(max)
@LocalWCFUrl = @LocalWCFUrl,
@IsPost = 1,
@WebAPIUrl = @WebAPIUrl,
@UserName = N'',
@UserPassword = N'',
@TimeOutS = 0,
@ContentType = N'application/json;charset=utf-8',
@Headers = @Headers,
@PostFormParams = N'',
@PostRawParams = @JsonStr,
@GetParams = N'';
SELECT @ReceiveData;