「连接平台」开发实践——快速发送工作通知

教程简介

本教程基于连接器的触发事件和连接流而发送工作通知给指定用户。

通过本教程你可以学到以下知识:

  • 如何创建连接器。

  • 如何配置连接器和触发事件。

  • 创建并配置连接流。

  • 创建企业内部应用。

  • 了解接口调用流程。

本教程最终发送的工作通知效果如下:

「连接平台」开发实践——快速发送工作通知_第1张图片

准备工作

在开始本教程前,确保你已经完成了以下准备工作:

  • 已经完成了钉钉开发者的注册与激活并拥有了子管理员和开发者权限。若尚未完成,请参考成为钉钉开发者。

  • 已经安装了Java开发环境。若未安装,请访问Oracle官网下载。

  • 已下载并安装了IntelliJ IDEA工具。若未安装,请访问IntelliJ IDEA。

步骤一:创建并配置应用

在本部分,你需要在开发者后台创建一个H5微应用,并完成通讯录权限和用户个人手机号权限的配置,用于获取用户个人信息。

  1. 登录钉钉开发者后台。 

  2. 开发者后台页面,选择企业内部开发,然后单击创建应用

    「连接平台」开发实践——快速发送工作通知_第2张图片

  3. 在弹出的创建应用页面中填写基本信息,然后单击确定创建。
    应用类型:选择H5微应用。
    开发方式:选择企业自主开发。

    「连接平台」开发实践——快速发送工作通知_第3张图片

  4. 应用创建完成后,在基础信息页面,复制应用的AgentId、AppKey和AppSecret备用。

    「连接平台」开发实践——快速发送工作通知_第4张图片

步骤二:创建自建连接器

在本部分你将创建一个自建连接器。

  1. 登录开发者后台。

  2. 选择开放能力,然后选择连接平台

  3. 选择我的连接,然后依次单击连接器 > 创建连接器

    「连接平台」开发实践——快速发送工作通知_第5张图片

  4. 在弹出的创建连接器页面中输入连接器名称并单击确定。

    「连接平台」开发实践——快速发送工作通知_第6张图片

步骤三:配置连接器

在本部分你将完成连接器的配置。

  1. 连接器详情页,单击左侧列表中的触发事件,然后在触发事件页面单击创建触发事件

    「连接平台」开发实践——快速发送工作通知_第7张图片

  2.  在创建触发事件页面,输入触发事件名称,然后选择不加入主数据联盟并单击下一步

    「连接平台」开发实践——快速发送工作通知_第8张图片

  3. 根据以下内容完成模型配置,并单击下方保存

    1. 单击导入json,然后选择JSON-SCHEMA并将下方Json字符串粘贴进去,最后单击确定
       

      {
        "description": "当前对象模型根容器",
        "type": "object",
        "title": "root",
        "properties": {
          "agentId": {
            "description": "应用ID",
            "type": "number",
            "title": "应用ID"
          },
          "useridList": {
            "description": "用户id",
            "type": "array",
            "title": "用户id",
            "items": {
              "description": "用户id",
              "type": "string",
              "title": "用户id"
            }
          },
          "msgtype": {
            "description": "消息类型",
            "type": "string",
            "title": "消息类型"
          },
          "content": {
            "description": "文本消息",
            "type": "string",
            "title": "文本消息"
          }
        },
        "required": [
          "useridList",
          "agentId",
          "content",
          "msgtype"
        ]
      }
    2. 输出类型类型选择默认(与上文数据模型一致)
       

      「连接平台」开发实践——快速发送工作通知_第9张图片

  4. 触发事件创建完成后,复制触发事件ID备用。
     

    「连接平台」开发实践——快速发送工作通知_第10张图片

步骤四:创建连接流

在本部分你将使用完成连接流的创建和配置。

  1. 在连接平台首页,依次单击我的连接 > 连接流进入连接流页面,然后单击右上角创建流。 

    「连接平台」开发实践——快速发送工作通知_第11张图片

  2. 根据以下信息创建流,然后单击确定,创建成功后会自动跳转到连接流配置页面。
    名称、描述:分别填写连接流的名称和描述。
    触发器:选择步骤二配置的触发事件。 

    「连接平台」开发实践——快速发送工作通知_第12张图片

  3. 在连接流配置页面,单击执行动作开始配置。

    「连接平台」开发实践——快速发送工作通知_第13张图片

  4. 在弹出的页面,依次选择官方连接器 > 工作通知 > 发送工作通知

    「连接平台」开发实践——快速发送工作通知_第14张图片

  5. 单击入参映射下方设置,将参数赋值给节点入参
    应用ID:连接右侧微应用的id
    用户id:连接右侧接收者的userid列表
    消息类型:连接右侧消息类型
    文本消息:连接右侧文本消息

    「连接平台」开发实践——快速发送工作通知_第15张图片

  6. 单击保存,然后单击发布 。

步骤五:调用接口触发事件

调用【发送连接器事件】的接口进行触发,即可完成工作通知的发送

  1. 打开IntelliJ代码编辑工具。

  2. 在项目的pom.xml文件中添加以下Maven依赖。

    
        com.alibaba
        fastjson
        1.2.6
    
    
        com.aliyun
        dingtalk
        1.1.86
    
  3. 在项目下新建一个测试类ConnectorSendMsgDemo,然后将以下代码复制进去。

    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import com.aliyun.dingtalkconnector_1_0.Client;
    import com.aliyun.dingtalkconnector_1_0.models.SyncDataRequest;
    import com.aliyun.dingtalkconnector_1_0.models.SyncDataResponse;
    import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest;
    import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponse;
    import com.aliyun.tea.*;
    import com.aliyun.teautil.models.*;
    import com.aliyun.dingtalkconnector_1_0.models.SyncDataRequest.*;
    import com.aliyun.dingtalkconnector_1_0.models.*;
    import com.aliyun.teaopenapi.models.*;
    
    import java.util.Arrays;
    import java.util.Date;
    
    public class ConnectorSendMsgDemo {
    
        // 微应用ID
        private static final String APP_ID ="***";
        // 微应用AppKey
        private static final String APP_KEY ="***";
        // 微应用AppSecret
        private static final String APP_SECRET ="***";
        // 接收消息的用户userid
        private static final String USER_ID ="***";
        // 连接器触发事件ID
        private static final String TRIGGER_ID ="***";
    
        /**
         * @param appKey:微应用的appKey
         * @param appSecret:微应用的appSecret
         * @return accessToken
         * @throws Exception
         */
        public static String getAccessToken(String appKey, String appSecret) throws Exception {
            Config config = new Config();
            config.protocol = "https";
            config.regionId = "central";
            com.aliyun.dingtalkoauth2_1_0.Client client = new com.aliyun.dingtalkoauth2_1_0.Client(config);
            GetAccessTokenRequest accessTokenRequest = new GetAccessTokenRequest()
                    .setAppKey(appKey)
                    .setAppSecret(appSecret);
            GetAccessTokenResponse accessToken = client.getAccessToken(accessTokenRequest);
            return accessToken.getBody().getAccessToken();
        }
    
        /**
         * @param appId:发起调用的微应用ID
         * @param accessToken:接口调用凭证
         * @param sriggerId:触发事件ID
         * @param msg:消息内容
         * @throws Exception
         */
        public static void sendMSG(String appId, String accessToken, String sriggerId, String msg) throws Exception {
            Config config = new Config();
            config.protocol = "https";
            config.regionId = "central";
            Client client = new Client(config);
            SyncDataHeaders syncDataHeaders = new SyncDataHeaders();
            syncDataHeaders.xAcsDingtalkAccessToken = accessToken;
            SyncDataRequestTriggerDataList triggerDataList = new SyncDataRequestTriggerDataList()
                    .setTriggerId(sriggerId)
                    .setJsonData(msg)
                    .setDataGmtCreate(new Date().getTime())
                    .setDataGmtModified(new Date().getTime())
                    .setAction("add");
            SyncDataRequest syncDataRequest = new SyncDataRequest()
                    .setTriggerDataList(Arrays.asList(
                            triggerDataList
                    ))
                    .setAppId(appId);
            try {
                SyncDataResponse response = client.syncDataWithOptions(syncDataRequest, syncDataHeaders, new RuntimeOptions());
                System.out.println(JSON.toJSONString(response, true));
            } catch (TeaException err) {
                if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                    // err 中含有 code 和 message 属性,可帮助开发定位问题
                    System.out.println(JSON.toJSONString(err.getData(), true));
                }
            } catch (Exception _err) {
                TeaException err = new TeaException(_err.getMessage(), _err);
                if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                    // err 中含有 code 和 message 属性,可帮助开发定位问题
                    System.out.println(JSON.toJSONString(err.getData(), true));
                }
            }
        }
    
        public static String msg() {
            JSONObject msg = new JSONObject();
            msg.put("msgtype", "text");
            msg.put("content", "这是一条工作通知~");
            msg.put("useridList", USER_ID);
            msg.put("agentId", APP_ID);
            System.out.println(msg.toJSONString());
            return msg.toJSONString();
        }
    
        public static void main(String[] args_) throws Exception {
            sendMSG(APP_ID,getAccessToken(APP_KEY, APP_SECRET),TRIGGER_ID,msg());
        }
    }
  4. 根据以下内容补充代码中所必须的参数。
    APP_ID:填写步骤一创建的应用的AgentId
    APP_KEY:填写步骤一创建的应用的AppKey
    APP_SECRET:填写步骤一创建的应用的AppSecret
    TRIGGER_ID:填写步骤三配置连接器触发事件的事件ID
    USER_ID:在企业管理后台 > 内部通讯录管理 > 用户信息管理查看。

    「连接平台」开发实践——快速发送工作通知_第16张图片

  5. 参数添加完成后,右键单击代码的任意位置,然后单击Run'ConnectorSendMsgDemo.main()'运行此代码。

    「连接平台」开发实践——快速发送工作通知_第17张图片

  6. 由下图可以看出,工作通知发送成功。

    「连接平台」开发实践——快速发送工作通知_第18张图片

「连接平台」开发实践——快速发送工作通知_第19张图片

一键了解更多

一键了解更多

一键了解更多

你可能感兴趣的:(连接器,连接器,java,开发语言,python)