IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> C#-钉钉事件订阅-接口回调 -> 正文阅读

[大数据]C#-钉钉事件订阅-接口回调

最做一个项目要应用到钉钉的事件订阅这个功能,然后根据它文档中的操作来进行配置,期间也出来很多问题。

下面给大家展示一下该怎么正确的进行一个事件订阅。

钉钉官方的配置事件订阅的过程

首先我们要先建立一个web api的程序

具体建立这个web api应用的操作可以在网上搜有很多。

建立成功以后

是这个样子的,咱们是要在这个方法下进行操作的,这么做是为了简单,你也可以自己去写一个方法,比如这个样子

这个就是我这边写的钉钉订阅事件回调的接口方法,参数有3个是通过 这是钉钉调用咱们要传过来的,因为传过来的数据解密后对应的是你具体触发的事件,这是我具体的回调接口中的代码,可以分为三部分来看,第一部分是解密传进来的json串,第二部分是根据第一部分传解密后的值判断事件类型也就是你具体的业务了,第三部分是要给钉钉返回一个加密json串。

首先这个回调方法中涉及到的加解密类:https://github.com/open-dingtalk/dingtalk-callback-Crypto?spm=ding_open_doc.document.0.0.1c9f70088ZsInrdicon-default.png?t=LBL2https://github.com/open-dingtalk/dingtalk-callback-Crypto?spm=ding_open_doc.document.0.0.1c9f70088ZsInr

 [HttpPost]
        public DingDingBack dingding(string signature, string timestamp, string nonce)
        {

            //第一部分
            //这两句代码是为了接收body体中传入的加密json串
            Request.Content.ReadAsStreamAsync().Result.Seek(0, System.IO.SeekOrigin.Begin);
            string content = Request.Content.ReadAsStringAsync().Result;
            //反序列化json串拿去加密字符串
            JToken json = JToken.Parse(content);
            string ever = json["encrypt"].ToString();
            //实例化钉钉解密类构造参数为对应的 应用中的token、aes_key、AppKey值
            DingTalkEncryptor dingTalkEncryptor = new DingTalkEncryptor("token", "aes_key", "appkey");
            //定义字符串接收解密后的值
            string text = dingTalkEncryptor.getDecryptMsg(signature, timestamp, nonce, ever);
            JToken jToken = JToken.Parse(text);
            //取出事件类型字段
            string EventType = jToken["EventType"].ToString();




            第二部分
            //  { //判断事件类型是否是日程事件
            if ("calendar_event_change" == EventType)
            {


            }







            //第三部分
            //返回加密字符串          
            var msg = dingTalkEncryptor.getEncryptedMap("success");
            DingDingBack back = new DingDingBack();
            back.msg_signature = msg["msg_signature"];
            back.encrypt = msg["encrypt"];
            back.timeStamp = msg["timeStamp"];
            back.nonce = msg["nonce"];
            return back;


        }

因为钉钉是要请求咱们这边的接口,还有传值进来,我们要做的是根据它传入的值进行一个解密,然后再返回一个加密的字符串,?

???????

最后碰到的问题汇总:关于超时类型的问题,可能是你的这个接口调用时间太长,超时以后钉钉这边就认为调用失败。

还有返回200的码表示正常,这种问题就是你接口的返回值不是json格式的,你直接返回实体到就可以解决这个问题。

还有最重要的就是你的接口一定要是公网可访问的。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 13:58:47  更:2022-01-01 14:00:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:23:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码