admin 管理员组

文章数量: 888297

【浙政钉】第四篇:浙政钉创建群聊、消息接入、发送

背景

浙政钉上架应用可创建群聊,和用户单聊等。

版权

本文允许转载,转载请写上原文地址,谢谢!作者:曹震

目录

一、准备工作

二、浙政钉系列

三、接口开发

1.特别说明

1.1访问IP不在白名单中,request ip=xxx.119.xxx.169

2.接口说明

1.1创建群会话

1.2代码实例

1.3返回参数

2.1发送消息(单聊)

2.2代码实例

2.3返回结果


一、准备工作

【浙政钉】第一篇:企业内应用免登_郭老师的小迷弟雅思莫了的博客-CSDN博客_浙政钉是专有钉钉吗

二、浙政钉系列

1.【浙政钉】第一篇:企业内应用免登

2.【浙政钉】第二篇:获取浙政钉单位组织结构

3.【浙政钉】第三篇:浙政钉应用发送工作通知

三、接口开发

1.特别说明

1.1访问IP不在白名单中,request ip=xxx.119.xxx.169

解决办法:钉钉专有版开放平台开发者后台 (dg-work.cn)

找到自己新建的应用,在应用配置中设置服务器出口ip

2.接口说明

1.1创建群会话

接口文档:专有钉钉开放平台管理后台 (dg-work.cn)

 请求参数

名称

类型

是否必填

示例值

描述

accountId

Long

账户id

disableRead

Integer

已读回执设置,0打开,1关闭,默认打开

tenantId

Long

租户id

useridlist

String[]

群成员accountId列表,每次最多支持40人,群人数上限为999。如创建超过40人的群,建完群后再调用更新群会话接口增加人员。

name

String

群名称

managementType

Integer

默认所有人可管理 0关闭:所有人可管理群 1打开:仅管理员及子管理员可管理

返回参数 

名称

类型

描述

memberLimit

long

群人数限制

responseMessage

String

错误信息

responseCode

String

错误码

memberCount

Integer

当前群人数

chatId

String

会话id

success

bool

业务处理是否成功

1.2代码实例

mport com.alibaba.fastjson.JSONObject;
import com.alibaba.xxpt.gateway.shared.api.request.OapiChatGroupV2CreateRequest;
import com.alibaba.xxpt.gateway.shared.api.request.OapiChatSendMsgRequest;
import com.alibaba.xxpt.gateway.shared.api.request.OapiMoziOrganizationListOrganizationsByCodesRequest;
import com.alibaba.xxpt.gateway.shared.api.response.OapiChatGroupV2CreateResponse;
import com.alibaba.xxpt.gateway.shared.api.response.OapiChatSendMsgResponse;
import com.alibaba.xxpt.gateway.shared.api.response.OapiMoziOrganizationListOrganizationsByCodesResponse;
import com.alibaba.xxpt.gateway.shared.client.http.ExecutableClient;
import com.alibaba.xxpt.gateway.shared.client.http.IntelligentGetClient;
import com.alibaba.xxpt.gateway.shared.client.http.IntelligentPostClient;
import com.alibaba.xxpt.gateway.shared.client.http.PostClient;
import com.google.gson.JsonObject;
import jdk.nashorn.internal.ir.annotations.Reference;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;@Slf4j
@RestController
@RequestMapping("/hvit/DingTalkApi/")
public class Controller {private static ExecutableClient executableClient;static {executableClient = ExecutableClient.getInstance();//DomainName不同环境对应不同域名,示例为sass域名executableClient.setAccessKey("xxxxxxxxxxxxxxx");executableClient.setSecretKey("xxxxxxxxxxx3D8TSpd255VSZh7sKRPZ0f");executableClient.setDomainName("openplatform.dg-work.cn");executableClient.setProtocal("https");executableClient.init();//executableClient要单例,并且使用前要初始化,只需要初始化一次}/**** 创建群会话(建群)* @return*/@RequestMapping(value = "/createChat", method = RequestMethod.POST)public ResponseEntity<?> createChat() {//executableClient保证单例IntelligentGetClient intelligentGetClient = executableClient.newIntelligentGetClient("/chat/group/V2/create");OapiChatGroupV2CreateRequest oapiChatGroupV2CreateRequest = new OapiChatGroupV2CreateRequest();//账户idoapiChatGroupV2CreateRequest.setAccountId(834843L);//已读回执设置,0打开,1关闭,默认打开oapiChatGroupV2CreateRequest.setDisableRead(1);//租户idoapiChatGroupV2CreateRequest.setTenantId(xx25L);//群成员accountId列表oapiChatGroupV2CreateRequest.setUseridlist(Arrays.asList("407483", "834750", "834751", "834749"));//群名称oapiChatGroupV2CreateRequest.setName("数字门牌代码测试建群");//默认所有人可管理 0关闭:所有人可管理群 1打开:仅管理员及子管理员可管理oapiChatGroupV2CreateRequest.setManagementType(1);//获取结果OapiChatGroupV2CreateResponse apiResult = intelligentGetClient.get(oapiChatGroupV2CreateRequest);if (apiResult != null) {if (apiResult.getContent().getSuccess()) {log.info("创建群聊:{}", apiResult.getContent().getData());return ResponseEntity.ok(apiResult.getContent().getData());}}return ResponseEntity.ok("");}}

1.3返回参数

{"chatId":"109096075xxxxxx141@saas.zwdingding","memberCount":5,"memberLimit":999}

这个是chatId是群的id,这个可以记录下来,后面进行群聊的时候需要用到。

我们来看下客户端返回的结果情况

2.1发送消息(单聊)

接口文档:专有钉钉开放平台管理后台 (dg-work.cn)

请求参数 

名称

类型

是否必填

示例值

描述

msg

String

消息体(参考下文示例消息格式)

senderId

String

发送者用户id

receiverId

String

单聊接受者用户id(chatType为1时必填)

chatId

String

群聊会话id(chatType为2时必填)

tenantId

Long

租户id

chatType

Integer

发起的会话类型(1单聊、2群聊)

返回参数 

名称

类型

描述

success

Boolean

请求是否成功。true:请求成功;false:请求失败

content

Object

└ data

List

消息列表

└ └ messageId

String

消息id

└ success

Boolean

业务处理是否成功

└ responseMessage

String

错误信息

└ responseCode

String

错误码

2.2代码实例

@RequestMapping(value = "/createChatOnline", method = RequestMethod.POST)public ResponseEntity<?> createChatOnline() {//executableClient保证单例IntelligentGetClient intelligentGetClient = executableClient.newIntelligentGetClient("/chat/sendMsg");OapiChatSendMsgRequest oapiChatSendMsgRequest = new OapiChatSendMsgRequest();JSONObject jsonObject = new JSONObject();jsonObject.put("msgtype", "text");jsonObject.put("text", JSONObject.parse("{\"content\":\"今天是2022年9月26日,测试单聊\"}"));//消息体(参考下文示例消息格式)oapiChatSendMsgRequest.setMsg(jsonObject.toJSONString());//发送者用户idoapiChatSendMsgRequest.setSenderId("834222");//单聊接受者用户id(chatType为1时必填)oapiChatSendMsgRequest.setReceiverId("832222");//群聊会话id(chatType为2时必填)oapiChatSendMsgRequest.setChatId("");//租户idoapiChatSendMsgRequest.setTenantId(62xx5L);//发起的会话类型(1单聊、2群聊)oapiChatSendMsgRequest.setChatType(1);//获取结果OapiChatSendMsgResponse apiResult = intelligentGetClient.get(oapiChatSendMsgRequest);if (apiResult != null) {if (apiResult.getContent().getSuccess()) {log.info("创建单聊:{}", apiResult.getContent().getData());return ResponseEntity.ok(apiResult.getContent().getData());}}return ResponseEntity.ok("");}

2.3返回结果

{"messageId":"1090969593284921405"}

我们来看下客户端返回的结果情况

 好了,基本以上就是浙政钉、专有钉钉,消息接入等。

作者:曹震  如果喜欢我的博客,麻烦支持下我,一键三连哈~感谢

本文标签: 浙政钉第四篇浙政钉创建群聊消息接入发送