开发者

C#如何实现调取钉钉考勤接口的功能

开发者 https://www.devze.com 2022-12-01 13:44 出处:网络 作者: 努力尝试!
目录调取钉钉考勤接口的功能下面直入正题调用钉钉接口发送图片群消息步骤如下调取钉钉考勤接口的功能公司需要做一个钉钉考勤的页面,让我去写这个功能。结果却比我想象的要麻烦一些!具体是怎么个麻烦呢下面直入正题...
目录
  • 调取钉钉考勤接口的功能
    • 下面直入正题
  • 调用钉钉接口发送图片群消息
    • 步骤如下

调取钉钉考勤接口的功能

公司需要做一个钉钉考勤的页面,让我去写这个功能。结果却比我想象的要麻烦一些!具体是怎么个麻烦呢

下面直入正题

C#如何实现调取钉钉考勤接口的功能

首先我们找到获取钉钉考勤结果的接口。结果发现请求参数里有一个userIdList列表,那么这时候第一个问题就来了,如何获得这个userIdList呢?(注意这里的调用方式 是POST)

C#如何实现调取钉钉考勤接口的功能

C#如何实现调取钉钉考勤接口的功能

我们需要调用通讯录管理下的用户管理下的获取部门用户接口。来获得用户名字和用户的userId。那么这个时候 发现还需要另一个参数 部门id。那么部门id又是什么呢?(注意这里的调用方式 是GET)

C#如何实现调取钉钉考勤接口的功能

我们找到了这个接口(通讯录管理下的部门管理下的获取部门列表),然后把id设置为空,就可以得到所有的部门列表了,在部门列表里找到自己部门的id即可。(注意这里的调用方式 是GET)

这样经过一波三折,总算调到了钉钉考勤的结果。注意,一次只能调取7天的哦!

当然,获取到结果之后,还需要进行对数据的分析处理等工作,经过了几天的努力我才完成。

PS:token的获得方法。

public static string GetAccess_Tocken()
       {
           var url = @"https://oapi.dingtalk.com/gettoken?appkey="+AppKey+"&appsecret="+AppSecret;
           var result = json.ToJObject(HttpMethods.HttpGet(url));
           编程客栈var tocken = result["access_token"]?.ToString();
           return tocken;
       }

小技巧:

C#如何实现调取钉钉考勤接口的功能

我们可以通过在线调试快速获得部门id,快速验证接口能否使用。不过需要管理员才能使用在线调试这个功能。

调用钉钉接口发送图片群消息

前段时间我被一个需求困扰,如何调用钉钉接口发送图片消息?文字消息用string类型的参数很容编程客栈易实现了,可是好像要发图片就灭有那么简单了,好在后来经过我的摸索,解决了问题。

步骤如下

要想发群消息,首先要建个钉钉群,建群的话首先要获取全局ID,要用到钉钉上的企业ID

 //全局群id
   public static string getchatid = "";//群会话id(系统停止之后消失)
    //用于判断是否换班成功(是否成功创建新群)
   public static Boolean flagid =false;
    /// <summary>
    /// 获取接口全局ID
    /// </summary>
    /// <returns></returns>
    private string accessToken() {
      string corpid = "**************android";
      string CorpSecret = "*******************************";
      string AccessToke = "";
      string url = string.Forma开发者_开发教程t("https://oapi.dingtalk.com/gettoken?appkey={0}&appsecret={1}", corpid, CorpSecret);
      JToken json = JToken.Parse(HttpUtiy.HttpGet(url));
      AccessToke = json["access_token"].ToString();
      return AccessToke;
    }   

我们这次实现的功能是,通过群成员的手机号作为参数建群,所以要根据手机号获取用户的UserID

//根据手机号获取用户UserID 
    private string UserID(string phone) {
      // 通过手机号获取 userId
      string url = string.Format("https://oapi.dingtalk.com/user/get_by_mobile?access_token={0}&mobile={1}",accessToken(), phone);
      string userid ="找不到用户id";//用户企业内部id
      JToken json = JToken.Parse(HttpUtiy.HttpGet(url));
      if (json["errmsg"].ToString() != "找不到该用户") {
         userid = json["userid"].ToString();
      }
      return userid;
    }

下面可以建群了,以下代码是建群方法

/// <summary>
    /// 创建群会话
    /// </summary>
    /// <param name="phone1">值班人员1手机号</param>
    /// <param name="phone2">值班人员1手机号</param>
    /// <param name="Chatidname">群名称</param>
    public void Creatchatid(string phone1, string phone2,string Chatidname
      ) {
     
        #region 获取用户企业内部id
        //获取值班人员企业userid
        string userid = UserID(phone1);//获取用户userId(第一个人作为群主)
        string userid2 = UserID(phone2);
        //用户id添加到,成员数组。
        string[] Chatiduseridlist = new string[] { userid, userid2 };//添加到群成员列表里
        #endregion
        //判断是否正确获得用户企业id
        if (userid.Trim() == "找不到用户id" || userid2.Trim() == "找不到用户id")
        {
          flagid = false;//获取用户id失败
        }
        else {
         
          #region 创建群会话
          string MessageUrl = string.Format("https://oapi.dingtalk.com/chat/create?access_token={0}", accessToken());
          var json_req = new
          {
            name = Chatidname, // 群名称
            owner = userid, // 群主id
            useridlist = Chatiduseridlist
          };
          string jsonRequest = JsonConvert.SerializeObject(json_req);//将对象转换为字符串类型
          JToken json = JToken.Parse(HttpUtiy.HttpPost(MessageUrl, jsonRequest));//返回值转换为JToken格式             //赋值给成员变量,避免多次创建群。
          getchatid = json["chatid"].ToString();
          #endregion
          //改变flagid标签状态
          flagid = true;
        }       
    }

建好了群之后就可以发消息了,字符串消息很简单,像开头说的那样,代码如下

    /// <summary>
    /// 发送群消息
    /// </summary>
    public void SendMsg() {
      //发送群消息
      string MessageUrl =string.Format("https://oapi.dingtalk.com/chat/send?access_token={0}",accessToken());
      var json_req = new
      {
        chatid = getchatid,//获取群会话id
         msg=new {
           msgtype="text",
           text = new {
             content = "有陌生人闯入,请及时查看!"
         编程  }  
        }
      };
      string jsonRequest = JsonConvert.http://www.devze.comSerializeObject(json_req);//将json转位字符串
      HttpUtiy.HttpPost(MessageUrl, jsonRequest);
    }

仿照同样的格式,写出了图片消息的方法

//发送图片消息的方法
    public void SendMsgPic()
    {
      //发送群消息
      string MessageUrl = string.Format("https://oapi.dingtalk.com/chat/send?access_token={0}", accessToken());
      var json_req = new
      {
        chatid = getchatid,//获取群会话id
        msg = new
        {
          msgtype = "image",
          image = new
          {
            media_id = "图片的媒体ID"
          }
        }
      };
      string jsonRequest = JsonConvert.SerializeObject(json_req);//将json转位字符串
      HttpUtiy.HttpPost(MessageUrl, jsonRequest);
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号