通知アーティファクト - Java が DingTalk グループのカスタム ロボットを呼び出す - Jay

中でも Webhook は非常に重要であり、以下で詳しく説明します。設定手順をクリックすると関連ドキュメントが表示されます。ドキュメントのリンクはこの記事の最後にあります。         

カスタムボットの群れを作成する

中でも Webhook は非常に重要であり、以下で詳しく説明します。設定手順をクリックすると関連ドキュメントが表示されます。ドキュメントのリンクはこの記事の最後にあります。

HTTP POST リクエストを使用してメッセージを送信する

上記の Webhook リンクに POST リクエストを直接送信することで、グループにメッセージを送信するようにロボットをカスタマイズする機能が実現されました

ドキュメント内のパラメーター形式に従って、リンクにリクエストを直接送信するだけです。次のように Postman を使用してリクエストを送信します。

 効果は次のとおりです。

他の形式 (リンク メッセージ、マークダウン、ActionCard など) でメッセージを送信した場合の影響は次のとおりです。

どのような種類のニュースが必要かわかっていますか? 必要に応じてこのようにパラメータを整理するのはかなり面倒ですが、SDKを使用することで操作を簡略化することができます

SDKを使用してカスタムロボットを呼び出す

DingTalk サーバー API SDK のダウンロード

 public static void main(String[] args) throws ApiException {
    final String serverUrl =
        "https://oapi.dingtalk.com/robot/send?access_token=*******************************************************";

    DingTalkClient client = new DefaultDingTalkClient(serverUrl);
    OapiRobotSendRequest request = new OapiRobotSendRequest();

    At at = new At();
    at.setIsAtAll("true");
    request.setAt(at);
		
   // 若上一步isAtAll没有设置true,则根据此处设置的手机号来@指定人
    List<String> mobiles = new ArrayList<>();
    mobiles.add("166********");
    at.setAtMobiles(mobiles);

    // 以下是设置各种消息格式的方法
    sentText(request);
    //    sendLink(request);
    //    sendMarkdown(request);
    //    sendActionCard(request);
    //    sendFeedCard(request);

    OapiRobotSendResponse response = client.execute(request);
    System.out.println(response.getErrmsg());
  }

テキストテキストメッセージ

  public static void sentText(OapiRobotSendRequest request) {
    Text text = new Text();
    text.setContent("sdk demo");

    request.setMsgtype("text");
    request.setText(text);
  }

リンクリンクメッセージ

  public static void sendLink(OapiRobotSendRequest request) {
    Link link = new Link();
    link.setTitle("好消息!好消息!");
    link.setText("本群与百度成功达成合作关系,今后大家有什么不懂的可以直接百度搜索,不用再群里提问浪费时间啦!");
    link.setMessageUrl("https://www.baidu.com");
    link.setPicUrl("http://www.baidu.com/img/bd_logo1.png");

    request.setMsgtype("link");
    request.setLink(link);
  }

マークダウンメッセージ

  public static void sendMarkdown(OapiRobotSendRequest request) {
    Markdown markdown = new Markdown();
    markdown.setTitle("好消息!好消息!");
    markdown.setText(
        "#### 杭州天气 @156xxxx8827\n> 9度,西北风1级,空气良89,相对温度73%\n\n"
            + "> ![screenshot](https://img2018.cnblogs.com/blog/1775867/201908/1775867-20190823214506246-1471056011.png)\n"
            + "> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \n");
    
    request.setMsgtype("markdown");
    request.setMarkdown(markdown);
  }

アクションカードメッセージ

  public static void sendActionCard(OapiRobotSendRequest request) {
    Actioncard actioncard = new Actioncard();
    actioncard.setTitle("乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身");
    actioncard.setText(
        "![screenshot](@lADOpwk3K80C0M0FoA) \n"
            + " ### 乔布斯 20 年前想打造的苹果咖啡厅  Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划");
    actioncard.setHideAvatar("0");
    actioncard.setBtnOrientation("1");
    //    actioncard.setSingleTitle("阅读全文");
    //    actioncard.setSingleURL("https://www.baidu.com/");
    List<Btns> btns = new ArrayList<>();
    Btns btn0 = new Btns();
    btn0.setTitle("内容不错");
    btn0.setActionURL("https://www.qq.com/");
    btns.add(btn0);

    Btns btn1 = new Btns();
    btn1.setTitle("不感兴趣");
    btn1.setActionURL("https://www.baidu.com/");
    btns.add(btn1);

    actioncard.setBtns(btns);
    request.setMsgtype("actionCard");
    request.setActionCard(actioncard);
  }

フィードカードメッセージ

公式アカウントの見出しや二次ニュースと同様

 public static void sendFeedCard(OapiRobotSendRequest request) {
    Feedcard feedcard = new Feedcard();
    List<Links> linksList = new ArrayList<>();

    Links links0 = new Links();
    links0.setTitle("时代的火车向前开1");
    links0.setMessageURL(
        "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI");
    links0.setPicURL("https://www.dingtalk.com/");
    linksList.add(links0);

    Links links1 = new Links();
    links1.setTitle("时代的火车向前开2");
    links1.setMessageURL(
        "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI");
    links1.setPicURL("https://www.dingtalk.com/");
    linksList.add(links1);

    feedcard.setLinks(linksList);

    request.setMsgtype("feedCard");
    request.setFeedCard(feedcard);
  }

デモ~~

package com.macro.mall.controller;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse;
import com.taobao.api.ApiException;

import java.util.Arrays;
//————————————————

public class DingDIngTest {



    public static void main(String[] args) throws ApiException {
       
        // 根据机器人的token获取DingTalkClient
        DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?access_token=???");

        // 创建请求对象
        OapiRobotSendRequest request = new OapiRobotSendRequest();

        // 文本消息
        request.setMsgtype("text");
        request.setText("1123");
        OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
        // 注意内容中要包含你设置的关键词!
        text.setContent("你好:song");
        request.setText(text);

        // 添加联系方式对象
        OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
        at.setAtMobiles(Arrays.asList("46549618"));
        at.setIsAtAll(true);// @All
        request.setAt(at);

        // 发送
        OapiRobotSendResponse response = client.execute(request);
        System.out.println(response.isSuccess());

    }

}

 デモ~~

<依存関係> 
    <groupId>com.ganshane.specs</groupId> 
    <artifactId>dingtalk-sdk</artifactId> 
    <version>20210115</version> 
</dependency> 
<dependency> 
    <groupId>com.キャロットサーチ.サードパーティ</groupId> 
    <artifactId>simple-xml-safe</artifactId> 
    <version>2.7.1</version> < 
/dependency >
package com.macro.mall.controller;


import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse;
import com.macro.mall.common.exception.ApiException;
import lombok.SneakyThrows;

import java.util.ArrayList;
import java.util.List;

public class DingDing {


    @SneakyThrows
    public static void main(String[] args) throws ApiException {
        final String serverUrl =
                "https://oapi.dingtalk.com/robot/send?access_token=???";

        DingTalkClient client = new DefaultDingTalkClient(serverUrl);
        OapiRobotSendRequest request = new OapiRobotSendRequest();

        OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
        at.setIsAtAll(true);
        request.setAt(at);

        // 若上一步isAtAll没有设置true,则根据此处设置的手机号来@指定人
        List<String> mobiles = new ArrayList<>();
     
        at.setAtMobiles(mobiles);

        // 以下是设置各种消息格式的方法
        sentText(request);
        sendLink(request);
            sendMarkdown(request);
            sendActionCard(request);
            sendFeedCard(request);

        OapiRobotSendResponse response = client.execute(request);
        System.out.println(response.getErrmsg());
    }

    public static void sentText(OapiRobotSendRequest request) {
        OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
        text.setContent("你好: 123");

        request.setMsgtype("text");
        request.setText(text);
    }

    public static void sendLink(OapiRobotSendRequest request) {
        OapiRobotSendRequest.Link link = new OapiRobotSendRequest.Link();
        link.setTitle("好消息!好消息!");
        link.setText("你好:本群与百度成功达成合作关系,今后大家有什么不懂的可以直接百度搜索,不用再群里提问浪费时间啦!");
        link.setMessageUrl("https://www.baidu.com");
        link.setPicUrl("http://www.baidu.com/img/bd_logo1.png");

        request.setMsgtype("link");
        request.setLink(link);
    }

    public static void sendMarkdown(OapiRobotSendRequest request) {
        OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();
        markdown.setTitle("好消息!好消息!");
        markdown.setText(
                "你好: #### 杭州天气 @156xxxx8827\n> 9度,西北风1级,空气良89,相对温度73%\n\n"
                        + "> ![screenshot](https://img2018.cnblogs.com/blog/1775867/201908/1775867-20190823214506246-1471056011.png)\n"
                        + "> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \n");

        request.setMsgtype("markdown");
        request.setMarkdown(markdown);
    }


    public static void sendActionCard(OapiRobotSendRequest request) {
        OapiRobotSendRequest.Actioncard actioncard = new OapiRobotSendRequest.Actioncard();
        actioncard.setTitle("乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身");
        actioncard.setText(
                "你好: ![screenshot](@lADOpwk3K80C0M0FoA) \n"
                        + " ### 乔布斯 20 年前想打造的苹果咖啡厅  Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划");
        actioncard.setHideAvatar("0");
        actioncard.setBtnOrientation("1");
        //    actioncard.setSingleTitle("阅读全文");
        //    actioncard.setSingleURL("https://www.baidu.com/");
        List<OapiRobotSendRequest.Btns> btns = new ArrayList<>();
        OapiRobotSendRequest.Btns btn0 = new OapiRobotSendRequest.Btns();
        btn0.setTitle("内容不错");
        btn0.setActionURL("https://www.qq.com/");
        btns.add(btn0);

        OapiRobotSendRequest.Btns btn1 = new OapiRobotSendRequest.Btns();
        btn1.setTitle("不感兴趣");
        btn1.setActionURL("https://www.baidu.com/");
        btns.add(btn1);

        actioncard.setBtns(btns);
        request.setMsgtype("actionCard");
        request.setActionCard(actioncard);
    }

    public static void sendFeedCard(OapiRobotSendRequest request) {
        OapiRobotSendRequest.Feedcard feedcard = new OapiRobotSendRequest.Feedcard();
        List<OapiRobotSendRequest.Links> linksList = new ArrayList<>();

        OapiRobotSendRequest.Links links0 = new OapiRobotSendRequest.Links();
        links0.setTitle("你好:时代的火车向前开1");
        links0.setMessageURL(
                "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI");
        links0.setPicURL("https://www.dingtalk.com/");
        linksList.add(links0);

        OapiRobotSendRequest.Links links1 = new OapiRobotSendRequest.Links();
        links1.setTitle("时代的火车向前开2");
        links1.setMessageURL(
                "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI");
        links1.setPicURL("https://www.dingtalk.com/");
        linksList.add(links1);

        feedcard.setLinks(linksList);

        request.setMsgtype("feedCard");
        request.setFeedCard(feedcard);
    }

}

おすすめ

転載: blog.csdn.net/s_sos0/article/details/131148137