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

前言
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;
}
  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值