zoukankan      html  css  js  c++  java
  • 钉钉开发系列(三)API的调用

    钉钉开发系列(二)结构封装》对相应的结构进行了封装,这样在后续的调用中就会相当方便。这里举GET和POST各一个例子,其他的API可以参照钉钉的开发文档。

    比如以GET方式获取部门列表

      #region FetchDepartList
            public static DepartResultSet  FetchDepartList()
            {
                string apiurl = FormatApiUrlWithToken(Urls.department_list);
                var result = Analyze.Get<DepartResultSet >(apiurl);
                return result;
            }
            #endregion
    public static String FormatApiUrlWithToken(String url, bool forceUpdate = false)
            {
                UpdateAccessToken(forceUpdate);
                string apiurl = $"{url}?{Keys.access_token}={AccessToken.Value}";
                return apiurl;
            }
    其中UpdateAccessToken是更新票据,请参看钉钉系列的文章《钉钉开发系列(一)access_token的获取》。

    namespace DDSDK
    {
        public class DepartResultSet :ResultPackage
        {
            public List<Depart> department { get; set; }
        }
    
    }

    <pre name="code" class="csharp">namespace DDSDK
    {
        /// <summary>
        /// 部门
        /// </summary>
        public class Depart
        {
            /// <summary>
            /// 部门id
            /// </summary>
            public string id { get; set; }
    
            /// <summary>
            /// 部门名称
            /// </summary>
            public string name { get; set; }
    
            /// <summary>
            /// 父部门id,根部门为1
            /// </summary>
            public string parentid { get; set; }
    
            /// <summary>
            /// 是否同步创建一个关联此部门的企业群, true表示是, false表示不是
            /// </summary>
            public bool createDeptGroup { get; set; }
    
            /// <summary>
            /// 当群已经创建后,是否有新人加入部门会自动加入该群, true表示是, false表示不是
            /// </summary>
            public bool autoAddUser { get; set; }	
    
        }
    
    
    }
    


    
    

    以POST请求来发送信息

     /// <summary>
            /// 发送消息
            /// </summary>
            /// <param name="toUser">目标用户</param>
            /// <param name="toParty">目标部门.当toParty和toUser同时指定时,以toParty来发送。</param>
            /// <param name="content">消息文本</param>
            /// <returns></returns>
            private static SendMessageResult SendTextMsg(string toUser, string toParty, string content)
            {
                var txtmsg = new
                {
                    touser = toUser,
                    toparty = toParty,
                    msgtype = MsgType.text.ToString(),
                    agentid = ConfigHelper.FetchAgentID(),
                    text = new
                    {
                        content = content
                    }
                };
                string apiurl = FormatApiUrlWithToken(Urls.message_send);
                string json = JsonConvert.SerializeObject(txtmsg);
                var result = Analyze.Post<SendMessageResult>(apiurl, json);
                return result;
            }

    namespace DDSDK
    {
        public class SendMessageResult : ResultPackage
        {
            public string receiver { get; set; }
        }
    }
    如果需要将一些信息额外的加入到返回的结果中,可以在相关的类里面定义相应的属性,然后在返回结果为OK后面赋值信息,比如

     var result = Analyze.Post<SendMessageResult>(apiurl, json);
                if (result.IsOK())
                {
                    result.SendTime = DateTime.Now;
                }
    至此,服务端的API调用已经可以使用了,其他的API可以参照开发文档。对于客户端的API调用还需要进一步获取JS的票据,并且需要做缓存,这将在后续中说到。

    转载请注明出处。


  • 相关阅读:
    ZJOI2017 Day3 滚粗记
    ZJOI2017 Day2
    bzoj4245 [ONTAK2015]OR-XOR (贪心)
    bzoj4631 踩气球 (树状数组+线段树)
    bzoj5219 [Lydsy2017省队十连测]最长路径 (DP)
    bzoj5216 [Lydsy2017省队十连测]公路建设 (线段树)
    bzoj2754 [SCOI2012]喵星球上的点名 (后缀数组+树状数组)
    bzoj2342 [Shoi2011]双倍回文 (manacher)
    bzoj4657 tower (最小割)
    bzoj2064 分裂 (状压dp)
  • 原文地址:https://www.cnblogs.com/sparkleDai/p/7604916.html
Copyright © 2011-2022 走看看