钉钉机器人推送和抓取钉钉群消息

您所在的位置:网站首页 钉钉群聊 钉钉机器人推送和抓取钉钉群消息

钉钉机器人推送和抓取钉钉群消息

2024-07-09 18:53| 来源: 网络整理| 查看: 265

前言 1.钉钉机器人能干什么?

摘抄: 群机器人是钉钉群的高级扩展功能。群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步。目前,大部分机器人在添加后,还需要进行Webhook配置,才可正常使用(配置说明详见操作流程中的帮助链接)。 例如: 通过聚合GitHub,GitLab等源码管理服务,实现源码更新同步。 通过聚合Trello,JIRA等项目协调服务,实现项目信息同步。 另外,群机器人支持Webhook协议的自定义接入,支持更多可能性,例如:你可将运维报警通过自定义机器人聚合到钉钉群实现提醒功能。

2.钉钉机器人怎么用?

2.1 网上对钉钉自定义机器人描述的帖子比较多,使用起来也比较简单;给个官方文档,相信以大家的聪明才智很容易就看懂了,地址:官方地址

2.2 下面对企业内部机器人做个介绍(网上对这方面的介绍比较少,不知道是不是用的人少);官方地址:官方API

企业机器人是钉钉为用户提供的组织内部使用的机器人,为组织数字化转型业务服务。开发者可通过本文所描述步骤进行机器人的自主开发和上架,组织内其它成员可通过方便快捷地在群内添加企业机器人,并使用用机器人的能力。

基于企业机器人的outgoing机制,用户@机器人之后,钉钉会将消息内容POST到开发者的消息接收地址。开发者解析出消息内容、发送者身份,根据企业的业务逻辑,组装响应的消息内容返回,钉钉会将响应内容发送到群里。

最后,给大家画个图介绍一下它的使用场景,大家可以结合自己的业务需求,对号入座; 在这里插入图片描述 很多人私信说要看源码,现在补上: 第一步 钉钉后台设置页面填写@机器人后调用地址(我们自己业务系统暴露的接口地址): 在这里插入图片描述 第二步:系统后台代码

//Entity 接收对象 @Data public class DemdITVo { //姓名 private String senderNick; //回调的webhook private String sessionWebhook; //内容json content private JSONObject text; //加密ID 工单机器人 private String chatbotUserId; //用户加密ID private String senderId; //群聊标题 private String conversationTitle; //用户钉钉UserId private String senderStaffId; } //Controller层 @PostMapping("/sendItByDd") public ResMesg sendItByDd(@RequestBody DemdITVo params) { logger.info("接收钉钉群消息提交的信息,param:{}", params); return sendData(demdService.saveOnlineDemand(params)); } //具体业务就不截图了 说一下怎么回调@当事人 /** * 返回群消息 * @param vo * @param content */ private void sendSessionWebHook(DemdITVo vo, String content) { try { logger.info("sendSessionWebHook start send robot:" + content); String msg = "{\n" + " \"msgtype\": \"text\",\n" + "\"text\": {\n" + " \"content\": \""+content+"\"\n" + " }," + " \"at\": {\n" + " \"atDingtalkIds\": [\n" + " \""+ vo.getSenderId() +"\"\n" + " ], \n" + " \"isAtAll\": false\n" + " }\n" + " }"; String jsonResult = HttpClientUtil.sendPostByThree(vo.getSessionWebhook(), msg); logger.info("sendSessionWebHook end send robot:" + jsonResult); } catch (Exception e) { logger.error("sendSessionWebHook 发送钉钉群消息时出错,error={}", e); } } //HttpClientUtil的代码 public static String sendPostByThree(String url, String jsonParam) { String respContent = ""; try { HttpPost httpPost = new HttpPost(url); RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(8000) .setConnectTimeout(8000).setSocketTimeout(8000).setRedirectsEnabled(false).build(); httpPost.setConfig(requestConfig); StringEntity entity = new StringEntity(jsonParam,"utf-8"); entity.setContentEncoding("UTF-8"); entity.setContentType("application/json"); httpPost.setEntity(entity); HttpClient httpClient = HttpClients.createDefault(); HttpResponse resp = httpClient.execute(httpPost); if (200 == resp.getStatusLine().getStatusCode()) { HttpEntity responseEntity = resp.getEntity(); respContent = EntityUtils.toString(responseEntity); } } catch (Exception e) { logger.error(e.getMessage(),e); } return respContent; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3