首先看下官方文档,为我们提供了POST请求地址,和几个必传参数的列表以及参数示例,写的都挺详细的。

无奈提供的SDK请求示例是JAVA的,而我用的是.NET的,所以还是摸了一些坑出来,其实也就是不同平台的部分方法或者语法不同而已,调试好一个接口后,后面再调试其他接口就会快很多了。

调用淘宝接口,我看到的几个哥们,用的都是这个URL地址:https://eco.taobao.com/router/rest

相应代码如下:

         /// <summary>
/// 工作通知消息(淘宝URL)
/// </summary>
/// <returns></returns>
public JsonResult SendWorkMessage()
{
//判断缓存中是否有access_token,否则重新获取
var access_token = CacheHelper.GetCache("access_token");
if (access_token == null)
{
DingDevelopSDK developSDK = new DingDevelopSDK();
access_token = developSDK.Get_access_token_by_appkey_and_appsecret(Models.DingDingConfig.appkey, Models.DingDingConfig.appsecret);
}
IDingTalkClient client = new DefaultDingTalkClient("https://eco.taobao.com/router/rest");
CorpMessageCorpconversationAsyncsendRequest req = new CorpMessageCorpconversationAsyncsendRequest();
req.Msgtype = "oa"; //发送消息是以oa的形式发送的,其他的还有text,image等形式
req.AgentId = Models.DingDingConfig.agentId;
req.UseridList = "manager1805";
req.ToAllUser = false; //是否发给所有人,很重要,为true的时候,一天只能调用3次该接口
req.Msgcontent = "{\"message_url\": \"http://dingtalk.com\",\"head\": {\"bgcolor\": \"FFBBBBBB\",\"text\": \"头部标题\"},\"body\": {\"title\": \"测试文本\",\"form\": [{\"key\": \"姓名:\",\"value\": \"张三\"},{\"key\": \"爱好:\",\"value\": \"打球、听音乐\"}],\"rich\": {\"num\": \"15.6\",\"unit\": \"元\"},\"content\": \"淘宝URL\",\"image\": \"@lADOADmaWMzazQKA\",\"file_count\": \"3\",\"author\": \"李四 \"}}";
CorpMessageCorpconversationAsyncsendResponse rsp = client.Execute(req, access_token.ToString());//发送消息
string result = rsp.Body;
// DeBugLog.WriteLog(result);
return Json(new { Result = true, result }, JsonRequestBehavior.AllowGet);
}

调用结果:

接下来是调用官方文档里写的接口:https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=ACCESS_TOKEN。

这里的参数access_token不用写在url里,方法asyncsend_v2是示例代码里调用的,但是在.NET平台下方法和JAVA有些差异,在试过几个类和方法之后,我用的方法是asyncsend,后面没有带"_v2",

所以接口地址就是:https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend。

上代码:

         /// <summary>
/// 工作通知消息(钉钉URL)
/// </summary>
/// <returns></returns>
public JsonResult SendMessage_ByDingDingURL()
{
try {
//判断缓存中是否有access_token,否则重新获取
var access_token = CacheHelper.GetCache("access_token");
if (access_token == null)
{
DingDevelopSDK developSDK = new DingDevelopSDK();
access_token = developSDK.Get_access_token_by_appkey_and_appsecret(Models.DingDingConfig.appkey, Models.DingDingConfig.appsecret);
}
//官网POST地址为https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2,根据方法的不同,下文的URL采用的是asyncsend而不是asyncsend_v2
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend");
OapiMessageCorpconversationAsyncsendRequest req = new OapiMessageCorpconversationAsyncsendRequest();
req.SetHttpMethod("POST");
req.ToAllUser = false;
req.AgentId = Models.DingDingConfig.agentId;
req.UseridList = "manager1805";
req.Msgtype = "oa";
req.Msgcontent = "{\"message_url\": \"http://dingtalk.com\",\"head\": {\"bgcolor\": \"FFBBBBBB\",\"text\": \"测试001\"},\"body\": {\"title\": \"测试文本\",\"form\": [{\"key\": \"姓名:\",\"value\": \"张三\"},{\"key\": \"爱好:\",\"value\": \"打球、听音乐\"}],\"rich\": {\"num\": \"15.6\",\"unit\": \"元\"},\"content\": \"钉钉URL\",\"image\": \"@lADOADmaWMzazQKA\",\"file_count\": \"3\",\"author\": \"admin \"}}";
OapiMessageCorpconversationAsyncsendResponse response = client.Execute(req, access_token.ToString());
DeBugLog.WriteLog(response.Body);
return Json(new { Result = true }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
DeBugLog.WriteLog(ex);
return Json(new { Result = false }, JsonRequestBehavior.AllowGet);
}
}

结果和上面的是一样的。

这里获取ccess_token的方法我就不累述了,我是直接从缓存里获取的,其他参数的使用要点,要结合文档去使用:

发送工作通知消息需要注意以下事项:

  • 同一个微应用相同消息的内容同一个用户一天只能接收一次。
  • 同一个微应用给同一个用户发送消息,企业内部开发方式一天不得超过500次。
  • 通过设置to_all_user参数全员推送消息,一天最多3次。
  • 详细的限制说明,请参考“工作通知消息的限制”。
  • 该接口是异步发送消息,接口返回成功并不表示用户一定会收到消息,需要通过“查询工作通知消息的发送结果”接口查询是否给用户发送成功。
  • 消息类型和样例可参考消息类型文档。

以上。

.NET平台下,钉钉微应用开发之:工作消息通知的更多相关文章

  1. .NET平台下,钉钉微应用开发之:获取userid

    工作需求,开发钉钉微应用和小程序,之前有接触过支付宝小程序和生活号的开发,流程没有很大的差别,这里记录下我用ASP.NET MVC实现钉钉微应用的开发,并实现获取用户的userid.小弟我技术有限,本 ...

  2. 在. net平台下,推送IOS,Android,Windows Phone消息

    1,新建项目,在项目中添加引用,dll文件已经上传在百度网盘,点击下载 2,引入命名空间 using PushSharp; using PushSharp.Android; using PushSha ...

  3. 移动端开发之APP消息推送

    有这样一种场景,当你在手机APP上输入你的信息,会自动跳出一个弹窗,表示某任务已执行.最简单的一个例子就是当你输入手机号,点击获取验证码的时候,就会跳出一个对话框,说“验证码已发送到手机,请注意查收” ...

  4. AESDK开发之UI消息响应

    UI创建: 在该入口下 case PF_Cmd_PARAMS_SETUP: //.... break; 必须在末尾指定UI数目,UI数目一般是枚举,如果和枚举长度不一致也会报错.所以最好是直接修改枚举 ...

  5. AspectJ的XML方式完成AOP的开发之AOP的通知类型

    1. 前置通知 * 在目标类的方法执行之前执行. * 配置文件信息:<aop:after method="before" pointcut-ref="myPoint ...

  6. 钉钉开发入门,微应用识别用户身份,获取用户免登授权码code,获取用户userid,获取用户详细信息

    最近有个需求,在钉钉内,点击微应用,获取用户身份,根据获取到的用户身份去企业内部的用户中心做校验,校验通过,相关子系统直接登陆; 就是在获取这个用户身份的时候,网上的资料七零八落的,找的人烦躁的很,所 ...

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

    一.前言 哈哈,这是我的第一篇博客. 先说一下这个小功能的具体场景: 用户登录钉钉app,点击微应用,获取当前用户的信息,与H5系统的数据库的用户信息对比,如果存在该用户,则点击后直接进入H5系统的首 ...

  8. 钉钉开发第三方H5微应用入门详细教程[ISV][免登流程][授权码][HTTP回调推送][识别用户身份][获取用户信息]

    转载请注明原文地址:https://www.cnblogs.com/applerosa/p/11509512.html (by lnexin@aliyun.com 世间草木) 此教程注意点: 适用于第 ...

  9. 从钉钉微应用定制化导航栏看如何实现Hydrid App开发框架

    钉钉是阿里的一款企业应用APP,里面提供了混合微应用的SDK,这其实最好的一种APP架构模式.微信公众号浏览器JSSDK也提供了类似功能特性,在在交互性上没有钉钉深入. http://ddtalk.g ...

随机推荐

  1. JVM执行原理

    ,Java是一种技术,它由四方面组成:Java编程语言.Java类文件格式.Java虚拟机和Java应用程序接口(Java API).它们的关系如下图所示: 运行期环境代表着Java平台,开发人员编写 ...

  2. .NET为何物?

    .NET是 Microsoft XML Web services 平台.XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统.设备或编 ...

  3. NPM - 检查并更新项目依赖的版本

    原文地址:https://acme.top/nodejs-npm-check-updates 前言 经常会遇到 package.json 中的库有更新,但是太多一个一个的来很费事,幸好有个工具 npm ...

  4. 使用钉钉对接禅道的bug系统,实现禅道提的bug实时在钉钉提醒并艾特对应的开发人员处理

    现在公司测试中有一个痛点是每次测试人员提完bug后,需要定期去提醒开发人员查看禅道的bug记录及修复bug. 导致测试人员在项目测试中不仅要测试整个软件,还要负起实时监督提醒功能的“保姆角色”,身心疲 ...

  5. win10去除快捷方式小箭头

    切忌删除注册表项: HKEY_CLASSES_ROOT -> lnkfile -> IsShortcut 这个方法以前是可以的,但是在2018年之后更新的系统就会出现任务栏图标打不开的情况 ...

  6. SCI论文的时态

    如果有的杂志对时态有要求,则以下所述都没有用了. 有些杂志也会专门有些比较“特别”的要求,比如Cell,要求Abstract全部使用一般现在时. 英语谓语动词时态共有16种,在英文科技论文中用得较为频 ...

  7. logback使用配置

    一:logback.xml配置内容如下 <?xml version="1.0" encoding="UTF-8"?> <!-- Copyrig ...

  8. 《HTTP权威指南》--阅读笔记(一)

    HTTP: HyperText Transfer Protocol 测试站点:http://www.joes-hardware.com URI包括URL和URN URI: Uniform Resour ...

  9. Java泛型使用的简单介绍

    目录 一. 泛型是什么 二. 使用泛型有什么好处 三. 泛型类 四. 泛型接口 五. 泛型方法 六. 限定类型变量 七. 泛型通配符 7.1 上界通配符 7.2 下界通配符 7.3 无限定通配符 八. ...

  10. RE最全面的正则表达式----数字篇

    一.校验数字的表达式 数字:^[0-9]*$n位的数字:^d{n}$至少n位的数字:^d{n,}$m-n位的数字:^d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多带 ...