开发者社区> 问答> 正文

新版SDK,企业内部应用创建机器人如何发送群消息@群成员。

java项目
SDK版本:


com.aliyun
dingtalk
2.0.14

发送群聊消息消息类型为Markdown类型:sampleMarkdown,如何发送群消息@某个群成员,请给出具体的代码示例,目前的钉钉文档中并没有。只有简单的普通消息,OrgGroupSendRequest并没有可用set @群成员的参数,setMsgParam里json参数key也只有title和text。

展开
收起
游客tqghuv7x6fqew 2023-10-19 17:00:57 116 0
2 条回答
写回答
取消 提交回答
  • 在新版的SDK中,发送群消息时@某个群成员可以通过setAt方法来实现。以下是一个具体的Java代码示例:

    import com.aliyun.dingtalk.model.OrgGroupSendRequest;
    import com.aliyun.dingtalk.model.OrgGroupSendResponse;
    import com.aliyun.dingtalk.service.DingTalkClient;
    import com.aliyun.dingtalk.util.HttpUtil;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class DingTalkGroupMessageExample {
    
        public static void main(String[] args) {
            // 钉钉机器人Webhook地址
            String webhook = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN";
    
            // 创建DingTalkClient
            DingTalkClient client = new DingTalkClient(webhook);
    
            // 创建群消息请求对象
            OrgGroupSendRequest request = new OrgGroupSendRequest();
    
            // 设置消息类型为Markdown
            request.setMsgtype("markdown");
    
            // 设置Markdown消息内容
            OrgGroupSendRequest.Markdown markdown = new OrgGroupSendRequest.Markdown();
            markdown.setTitle("群消息标题");
            markdown.setText("这是一条群消息,@某个群成员");
            request.setMarkdown(markdown);
    
            // 设置@群成员
            List<String> atMobiles = new ArrayList<>();
            atMobiles.add("手机号1");
            atMobiles.add("手机号2");
            request.setAtMobiles(atMobiles);
    
            // 发送群消息
            OrgGroupSendResponse response = client.orgGroupSend(request);
    
            // 处理响应结果
            if (response.isSuccess()) {
                System.out.println("群消息发送成功");
            } else {
                System.out.println("群消息发送失败:" + response.getErrmsg());
            }
        }
    }
    

    请将YOUR_ACCESS_TOKEN替换为你自己的机器人的访问令牌。在setAtMobiles方法中,你可以传入一个包含要@的群成员手机号的列表。这样,在发送群消息时,指定的群成员将会收到一条@提醒的消息。

    2023-10-20 14:36:10
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    建议您通过钉钉开放平台提供的群机器人接口来实现。具体实现方法如下:

    1. 首先,您需要在钉钉开放平台(https://open.dingtalk.com/)上创建一个群机器人应用,并获取到相应的 AppKey 和 AppSecret。
    2. 然后,您需要使用 Java 向钉钉开放平台发送请求来实现群消息的发送。以下是一个简单的 Java 代码示例:

    import com.aliyun.dingtalk.client.DtClient;
    import com.aliyun.dingtalk.client.DtRequest;
    import com.aliyun.dingtalk.client.DtResponse;
    import com.aliyun.tea.TeaRequest;
    import com.aliyun.tea.TeaResponse;
    import java.util.HashMap;
    import java.util.Map;
    public class DingTalkRobot {
    private static final String APP_KEY = "your_app_key";
    private static final String APP_SECRET = "your_app_secret";
    private static final String SEND_MESSAGE_URL = "https://open.dingtalk.com/robot/sendMessage";
    public static void main(String[] args) {
    DtClient dtClient = new DtClient(APP_KEY, APP_SECRET);
    // 构建请求对象
    DtRequest request = new DtRequest();
    request.setUrl(SEND_MESSAGE_URL);
    request.setMethod("POST");
    // 构建请求参数
    Map params = new HashMap<>();
    params.put("access_token", dtClient.getAccessToken());
    params.put("userId", "your_user_id");
    params.put("groupId", "your_group_id");
    params.put("markdown", "your_markdown_content");
    request.setBody(TeaRequest.build(params));
    // 发送请求并处理响应
    DtResponse response = dtClient.execute(request);
    if (response.isSuccess()) {
    System.out.println("发送群消息成功");
    } else {
    System.out.println("发送群消息失败,响应:" + response.getBody());
    }
    }
    }
    CopyCopy

    1. 在代码中,您需要替换 your_app_key、your_app_secret、your_user_id 和 your_group_id 为您实际申请到的值。同时,your_markdown_content 变量需要替换为您需要发送的 Markdown 内容。
    2023-10-20 08:17:20
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
AIOps的核心技术之一:任务机器人如何在金融运维 运营中落地 立即下载
从 SDK 到编解码:视频直播架构解析 立即下载
跨平台的云服务SDK需要什么 立即下载