《钉钉开发系列(二)结构封装》对相应的结构进行了封装,这样在后续的调用中就会相当方便。这里举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的票据,并且需要做缓存,这将在后续中说到。
转载请注明出处。