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

目录
  • 调取钉钉考勤接口的功能
    • 下面直入正题
  • 调用钉钉接口发送图片群消息
    • 步骤如下

调取钉钉考勤接口的功能

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

下面直入正题

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

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

我们找到了这个接口(通讯录管理下的部门管理下的获取部门列表),然后把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;
       }

小技巧:

我们可以通过在线调试快速获得部门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 = "**************";
            string CorpSecret = "*******************************";
            string AccessToke = "";
            string url = string.Format("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.SerializeObject(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)

相关推荐

  • C#实现推送钉钉消息的方法示例

    本文实例讲述了C#实现推送钉钉消息的方法.分享给大家供大家参考,具体如下: 利用钉钉提供的API可以推送消息到用户的钉钉app.根据钉钉的官方文档,调用钉钉的api需要一个AccessToken,我们先获取这个AccessToken. string CorpId = "你的CorpId "; string CorpSecret = "你的CorpSecret "; public string AccessToken = ""; string Ac

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

    目录 调取钉钉考勤接口的功能 下面直入正题 调用钉钉接口发送图片群消息 步骤如下 调取钉钉考勤接口的功能 公司需要做一个钉钉考勤的页面,让我去写这个功能.结果却比我想象的要麻烦一些!具体是怎么个麻烦呢 下面直入正题 首先我们找到获取钉钉考勤结果的接口.结果发现请求参数里有一个userIdList列表,那么这时候第一个问题就来了,如何获得这个userIdList呢?(注意这里的调用方式 是POST) 我们需要调用通讯录管理下的用户管理下的获取部门用户接口.来获得用户名字和用户的userId.那么这

  • php封装实现钉钉机器人报警接口的示例代码

    本文主要讲述的是如何通过签名方式实现钉钉机器人报警的功能: 1.关于签名的生成: /** * 签名实现 */ list($s1, $s2) = explode(' ', microtime()); $timestamp = (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000); $secret = '****'; $data = $timestamp . "\n" . $secret; $signStr = bas

  • 基于NodeJS开发钉钉回调接口实现AES-CBC加解密

    钉钉小程序后台接收钉钉开放平台的回调比较重要,比如通讯录变动的回调,审批流程的回调都是在业务上十分需要的.回调接口时打通钉钉平台和内部系统的重要渠道. 但是给回调的接口增加了一些障碍,它需要支持回调的服务器的接口支持AES-CBC加解密.不然无法成功注册或解析内容. 钉钉官方文档中给出了JAVA,PHP,C#的后台SDK和demo,但是却没有Node服务器的代码支持,这让占有率很高的node服务器非常尴尬,难道node就不能作为钉钉平台的回调服务器么 好在钉钉已经开放了其加密算法,可以通过加密流

  • Flutter仿钉钉考勤日历的示例代码

    本文主要介绍了Flutter仿钉钉考勤日历的示例代码,分享给大家,具体如下: 效果 原型 开发 1. 使用 // 考勤日历 DatePickerDialog( initialDate: DateTime.now(), firstDate: DateTime(2020), lastDate: DateTime(2030), onDateChanged: onDateChanged, // 0:无状态,1:正常考勤 2:异常考情,迟到,早退, // 若不满一个月,日历会自动用0补满一个月 check

  • vue实现钉钉的考勤日历

    本文实例为大家分享了vue实现钉钉的考勤日历的具体代码,供大家参考,具体内容如下 直接上效果图,需要再往下看 GitHub地址:vue-calendar-component 由于需要对此组件的样式及功能的扩展,直接复制代码过来修改,开始贴代码,很长很长 慢慢看 checkCalendar.vue(子组件) <style lang="scss" rel="stylesheet/scss"> @media screen and (min-width: 460

  • Asp.Net Core对接钉钉群机器人的完整步骤记录

    前言 钉钉作为企业办公越来越常用的软件,对于企业内部自研系统提供接口支持,以此来打通多平台下的数据,本次先使用最简单的钉钉群机器人完成多种形式的消息推送,参考钉钉开发文档中自定义机器人环节,此次尝试所花的时间不多,但有几个地方是需要注意的. 一.钉钉群中建立机器人获取WebHook地址 首先得有一个钉钉群,如果没有得自行创建一个了,通过群内右上角菜单中找到群机器人然后添加一个自定义机器人 并设置消息推送开启(默认是开启),复制下一行的webhook地址,该地址将作为后面消息推送的地址 完成即可,

  • python项目对接钉钉SDK的实现

    钉钉SDK 对接sdk还是遇到不少问题的 钉钉python版SDK文档地址:https://dingtalk-sdk.readthedocs.io/zh_CN/latest/ 钉钉官方服务端文档:https://open-doc.dingtalk.com/microapp/serverapi2 为了避免调试出现不必要的参数错误,前期钉钉配置要做好,血和泪的教训

  • 使用java实现“钉钉微应用免登进入某H5系统首页“功能”

    一.前言 哈哈,这是我的第一篇博客. 先说一下这个小功能的具体场景: 用户登录钉钉app,点击微应用,获取当前用户的信息,与H5系统的数据库的用户信息对比,如果存在该用户,则点击后直接进入H5系统的首页,否则显示"您无权限". 补充:又加了一个小需求,就是免登成功,会给该用户发条消息 我是参考钉钉开发文档实现的这个小功能,文档地址:https://ding-doc.dingtalk.com/doc#/serverapi2/clotub 二.准备工作 需要创建一个微应用:https://

  • python钉钉机器人运维脚本监控实例

    如下所示: #!/usr/bin/python3 # -*- coding:UTF-8-*- # Author: zhuhongqiang from urllib import request import json from sys import argv access_token = "xxx" def send_msg(mobile, item_name): """ 钉钉机器人API接口地址: https://open-doc.dingtalk.co

  • Python实现钉钉订阅消息功能

    钉钉设置机器人 首先在钉钉设置钉钉机器人 群设置-> 智能群助手->添加机器人->自定义 添加完成,得到一个Webhook API地址 Python脚本实现推送钉钉消息 钉钉官方给出了机器人接口的文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq 但是该文档只实现了JAVA和PHP的示例.以下是python脚本的示例. # -*- coding: utf-8 -*- """Created on Mo

随机推荐