C#-钉钉事件订阅-接口回调

简介: C#-钉钉事件订阅-接口回调

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

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

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

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

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

建立成功以后

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



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


首先这个回调方法中涉及到的加解密类:

https://github.com/open-dingtalk/dingtalk-callback-Crypto?spm=ding_open_doc.document.0.0.1c9f70088ZsInrd

https://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格式的,你直接返回实体到就可以解决这个问题。


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


相关文章
|
JSON 数据格式 开发者
钉钉事件订阅的订阅规则可以在钉钉开放平台进行设置
【2月更文挑战第7天】钉钉事件订阅的订阅规则可以在钉钉开放平台进行设置
376 1
|
运维 监控 安全
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
381 0
|
4月前
|
存储 弹性计算 JSON
钉钉接口回调问题
当调用钉钉审批接口返回错误提示“form_component_values 参数无效”时,可以尝试以下方法进行排查和解决: 检查 form_component_values 参数的格式是否正确。 确保该参数是一个 JSON 对象,且包含所有必填字段 确保 form_component_values 参数中的所有字段值都是有效的。 如果某个字段的值不符合要求,可能会导致审批流程无法正常提交。
|
jenkins 机器人 测试技术
jenkins接入钉钉api接口自动化测试报告自动发送
该教程介绍了如何在Jenkins上实现接口自动化测试的持续集成,并将可视化报告发送至钉钉工作群。首先,确保准备好了自动化脚本。接着配置Jenkins:安装Git插件,设置源代码管理(如Git)和触发器(定时或推送)。使用Post build task插件处理构建后的报告,读取Allure的prometheusData.txt文件以获取测试结果。最后,安装Ding Talk插件,配置钉钉机器人,通过 Dingtalkchatbot 库发送测试报告信息到钉钉群。整个流程包括Jenkins的定时构建、Git仓库的监听以及自动化报告发送到钉钉的通知。
|
JSON 数据安全/隐私保护 数据格式
钉钉事件订阅的地址需要在钉钉开放平台进行配置
【2月更文挑战第7天】钉钉事件订阅的地址需要在钉钉开放平台进行配置
337 6
|
机器人
钉钉的回调事件接入主要涉及到HTTP回调
钉钉的回调事件接入主要涉及到HTTP回调【1月更文挑战第20天】【1月更文挑战第99篇】
473 3
|
运维 监控 安全
【优化篇】调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
【优化篇】调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
205 0
|
7月前
|
存储 弹性计算 安全
课时23:案例分享——钉钉
钉钉作为企业级产品,采用SaaS平台技术,依托阿里云的ECS、OSS等服务,实现快速部署与客户需求的高效适应。其数据存储于阿里云RDS中,确保安全性和可靠性,并通过高强度加密保障信息传输安全。阿里云的安全防护措施为钉钉提供了坚实后盾,使其能专注于优化和创新,提升用户体验。
202 0
|
存储 弹性计算 安全
成功案例-钉钉 | 学习笔记
快速学习 成功案例-钉钉
549 0

热门文章

最新文章