接入微信群机器人消息通知【markdown】

测试类

public class WeChatDome {
    //测试消息提醒机器人
    final static String path = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=e75827be-b174-4a8c-a166-7a996f2221e7";

    final static String msg = "ok";
    @Test
    public void testMerge() throws Exception {
        // commit note
        //链接
        List<FeiShuButtonModel> hrefList = new ArrayList<>();
        hrefList.add(FeiShuButtonModel.builder().name("12345678").url("--").build());

        List<String> descLines = new ArrayList<>();
        descLines.add(String.format("Status:%s", "merge"));
        descLines.add(String.format("Repository:%s", "12345"));
        //消息主体
        String content = String.format("%s %s the merge request from branch %s to %s",
                "xiaobai2",
                "merge",
                "test1",
                "master");

        WeChatMarkDownRichTextModel weChatMarkDownRichTextModel = WeChatMarkDownRichTextModel.builder()
                .title("合并请求提醒")
                .content(content)
                .buttonModelList(hrefList)
                .descLineList(descLines)
                .build();
        String req = JSON.toJSONString(getMarkDownContentJson(weChatMarkDownRichTextModel));
        System.out.println("请求参数:" + req);

        String responseStr = HttpRequest.POST(path, req);
        assert msg.equals(JSONPath.read(responseStr, "$.errmsg"));
    }

    /**
     * 获取markdown格式消息内容Json对象
     *
     * @param markDownRichTextModel
     * @return
     */
    public JSONObject getMarkDownContentJson(WeChatMarkDownRichTextModel markDownRichTextModel) {
        JSONObject contentJson = new JSONObject();
        //如果传入null 则直接返回 保证后续流程异常
        if (Objects.isNull(markDownRichTextModel)) {
            return contentJson;
        }
        StringBuffer sb = new StringBuffer();
        if (StringUtil.isNotBlank(markDownRichTextModel.getTitle())) {
            sb.append("# ").append(markDownRichTextModel.getTitle()).append(Constants.RETURN_CHAR);
        }

        StringBuffer contentSb = new StringBuffer();
        //开头是否有链接
        if (StringUtil.isNotBlank(markDownRichTextModel.getContentStart())) {
            if (StringUtil.isNotBlank(markDownRichTextModel.getContentStartLinkUrl())) {
                contentSb.append(getCommentUrl(markDownRichTextModel.getContentStart(), markDownRichTextModel.getContentStartLinkUrl()));
            } else {
                contentSb.append(markDownRichTextModel.getContentStart());
            }
        }
        //消息主体
        if (StringUtil.isNotBlank(markDownRichTextModel.getContent())) {
            if (StringUtil.isNotBlank(markDownRichTextModel.getContentLinkUrl())) {
                contentSb.append(getCommentUrl(markDownRichTextModel.getContent(), markDownRichTextModel.getContentLinkUrl()));
            } else {
                contentSb.append(markDownRichTextModel.getContent());
            }
        }

        //消息尾部
        if (StringUtil.isNotBlank(markDownRichTextModel.getContentEnd())) {
            if (StringUtil.isNotBlank(markDownRichTextModel.getContentEndLinkUrl())) {
                contentSb.append(getCommentUrl(markDownRichTextModel.getContentEnd(), markDownRichTextModel.getContentEndLinkUrl()));
            } else {
                contentSb.append(markDownRichTextModel.getContentEnd());
            }

        }

        //上面存在内容则需要换行
        if (StringUtil.isNotBlank(contentSb.toString())) {
            sb.append(contentSb).append(Constants.RETURN_CHAR);
        }

        //组装多行消息
        if (CollectionUtils.isNotEmpty(markDownRichTextModel.getContentLineList())) {
            for (String line : markDownRichTextModel.getContentLineList()) {
                sb.append(line).append(Constants.RETURN_CHAR);
            }
        }

        //描述信息
        if (CollectionUtils.isNotEmpty(markDownRichTextModel.getButtonModelList())) {
            for (FeiShuButtonModel buttonModel : markDownRichTextModel.getButtonModelList()) {
                if (StringUtil.isNotBlank(buttonModel.getName())) {
                    //存在链接
                    if (StringUtil.isNotBlank(buttonModel.getUrl())) {
                        sb.append(">").append(getCommentUrl(buttonModel.getName(), buttonModel.getUrl()));
                    } else {
                        sb.append(buttonModel.getName());
                    }
                    //描述
                    if (StringUtil.isNotBlank(buttonModel.getDescription())) {
                        sb.append(":").append(getCommentText(buttonModel.getDescription()));
                    }
                }
                //存在多行内容 需要换行
                sb.append(Constants.RETURN_CHAR);
            }
        }

        //组装多行消息
        if (CollectionUtils.isNotEmpty(markDownRichTextModel.getDescLineList())) {
            for (String line : markDownRichTextModel.getDescLineList()) {
                sb.append(">").append(getCommentText(line)).append(Constants.RETURN_CHAR);
            }
        }
        contentJson.put("content", sb);
        //请求参数
        JSONObject paramsJson = new JSONObject();
        paramsJson.put("msgtype", "markdown");
        paramsJson.put("markdown", contentJson);
        return paramsJson;
    }

    public String getCommentText(String text) {
        return StringUtil.isNotBlank(text) ? String.format("<font color='comment'>%s</font>", text) : "";
    }


    public String getCommentUrl(String name, String url) {
        return String.format("[%s](%s)", name, url);
    }
    }



实体类:

@Data
@Builder
public class WeChatMarkDownRichTextModel {

    /**
     * 标题
     */
    private String title;

    /**
     * 内容-开头
     */
    private String contentStart;

    /**
     * 内容-开头-链接
     */
    private String contentStartLinkUrl;


    /**
     * 内容-主体
     */
    private String content;
    /**
     * 内容-主体-链接
     */
    private String contentLinkUrl;


    /**
     * 内容-结束
     */
    private String contentEnd;
    /**
     * 内容-结束-链接
     */
    private String contentEndLinkUrl;


    /**
     * 多行文本
     */
    private List<String> contentLineList;


    /**
     * 描述信息(多行)
     */
    private List<FeiShuButtonModel> buttonModelList;


    /**
     * 描述信息 多行文本
     */
    private List<String> descLineList;
}

@Data
@Builder
public class FeiShuButtonModel {

    private String name;

    private String url;

    private String description;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值