由于工作中需要用到钉钉,每天都要和钉钉打交道:上下班打卡、出差请假流程、各种工作讨论组,不一而足,工作已然和钉钉绑在了一起,难怪有广告词: 微信是一个生活方式,钉钉是一个工作方式。

我们是钉钉机器人内测版的首批用户,使用自定义机器人功能做了预警消息推送,效果还不错,目前钉钉机器人已经正式发布,支持与Github、Gitlab、Jira等集成:

由于我们研发过程管理重度依赖微软TFS(Team Foundation Server),研发、测试及运维同学(DevOps)希望将发布计划通知到钉钉群,由于钉钉机器人没有提供默认支持,我们可以通过“自定义”机器人完成该功能。

一、TFS中设置

1.新建服务挂钩

2.Web挂钩

3.触发器

4.设置URL及选择“全部”资源信息

这里的URL,就是我们开发的WebAPI,点击测试,TFS会发送JSON给定义的WebAPI,格式如下:

二、WebAPI

我们主要对TFS发过来的JSON中的resource进行解析:

 public class WorkItemCreatedController : ApiController{//钉钉通知群private static string dingDingToken = ConfigurationManager.AppSettings["WorkItemCreatedDingDingToken"];[HttpPost]public void Post(){var wiJson = Request.Content.ReadAsStringAsync().Result;var workItem = JsonConvert.DeserializeObject<WorkItem>(wiJson);。。。。。。}
}

WorkItem定义如下:

    public class WorkItem{public WorkItemResource resource { get; set; }}public class WorkItemResource{public int id { get; set; }public Dictionary<string, string> fields { get; set; }}

  这里关键点是把fields定义为Dictionary,通过JsonConvert序列化后,很方便获得想要的字段,比较有用的几个字段是:

"id": 发布计划创建成功后返回的id号,"System.WorkItemType": "发布计划",
"System.CreatedBy": "创建人",
"System.Title": "发布计划名称",
"System.Description":"发布说明"可自定义字段,标识实际发布时间

  这里需要注意的是,TFS返回的时间,是UTC时间,比本地时间晚8个小时,我们接收后,需要做相应的ToLocalTime处理。

三、组装钉钉消息

经过步骤二,我们已经解析到需要的字段,下面组装成钉钉要求的格式即可,钉钉机器人支持@多个具体人,需要传入这些人的手机号:

  private static string ConstructTextTypeMsg(string content, List<string> mobiles){var textTypeMsg = new TextTypeMsg(){//消息类型msgtype = "text",//消息内容text = new TextTypeMsg.Text(){content = content},//At人列表at = new TextTypeMsg.At(){isAtAll = false,atMobiles = mobiles}};return JsonConvert.SerializeObject(textTypeMsg);}

TextTypeMsg实体类定义如下:
public class TextTypeMsg{public string msgtype { get; set; }public Text text { get; set; }public At at { get; set; }public class Text{public string content { get; set; }}public class At{public List<string> atMobiles { get; set; }public bool isAtAll { get; set; }}}

四、整体流程

五、总结

经过前面三步,就将TFS中的发布计划,通过IIS中的WebAPI,调用钉钉机器人,发送到了钉钉群中,通过Coding,将微软TFS和阿里钉钉进行了联姻。

转载于:https://www.cnblogs.com/liugh/p/6533336.html

TFS发布计划发送到钉钉消息群相关推荐

  1. Java教程:如何对接自定义钉钉机器人并实现群聊消息发送

    正文: 钉钉对机器人提供了多种使用场景,但目前我们只针对群聊消息的发送,@所有 或 @某某 以实现目的,此场景只需实现自定义机器人介入即可! 这是官方介绍: 点击此处直达 **自定义机器人支持5种消息 ...

  2. python 使用钉钉机器人发送消息至钉钉

    如果你在使用钉钉,并且经常需要发送某些消息到钉钉群中,例如在监控某些数据,当出现异常的时候,及时发送消息通知钉钉群:或者在完成某些操作,发送消息到钉钉群中,那么我们可以使用钉钉机器人,实现自动化信息同 ...

  3. spring boot 整合钉钉机器人发送消息通知

    钉钉消息通知 主要用于系统预警.资源预警.重要消息通知,随时随地可以掌握重要信息 一.通知效果 1.文本通知 2.带链接的通知 3.makrdown格式 通知 4.ActionCard 通知 5.Fe ...

  4. python 钉钉机器人发送图片_利用Python自动发送钉钉数据消息

    现在大部分公司都使用钉钉作为内部的主要沟通工具,钉钉消息基本都上都能快速有效的被阅读,打开率会比邮件高上不少.所以准备使用钉钉来播报平台每日的成交额,并附上一些鼓励的话和图片.起到一个激励团队的作用 ...

  5. delphi 企业微信消息机器人_消息通知支持企业微信、钉钉机器人,MeterSphere v1.4.0发布...

    2020年10月27日15:00,MeterSphere v1.4版本发布说明会,现已开启官网报名. 10月27日,MeterSphere开源持续测试平台正式发布v1.4.0版本.在该版本中,Mete ...

  6. Python 自动化发送钉钉消息

    在进行Python截取网络报表并发送钉钉群过程中,碰到一些问题,也用到一些工具,在这里做一下简单总结.整个过程归纳如图: 1 版本配置 windows 10 Google Chrome 74.0.37 ...

  7. 【办公自动化】钉钉机器人每日定时向不同群组发送消息

    实现每日上午10点自动向各供应商群同步前一日产品数据.通过python+钉钉机器人实现该功能.具体步骤如下: 目录 1.创建机器人获得token 2.编写脚本 2.1 数据整理 2.2 消息发送 3. ...

  8. python timestamp转string_Python操作钉钉机器人发送各种消息

    环境:python3.x 使用模块:requests,json 一:创建钉钉群聊机器人 第一步,创建一个钉钉群聊自定义机器人 记住加签的密钥,忘记后也可在创建成功后查看(这里使用加签的方式) 完成后会 ...

  9. jmail反馈是否发送成功_如何在钉钉上自动发送定制消息或通知给同事?(10行代码搞定)...

    日常工作中,你是否遇到以下情形: 想要第一时间获悉竞品app的最新版本的更新内容 想要监测行业最新资讯,并与同事分享 想要对某些业务数据进行阈值监控及报警 想要将同事在钉钉上反馈的问题自动同步到jir ...

最新文章

  1. 论一名项目经理的能力素养
  2. 虚拟机ubuntu启动代码界面_Windows10下使用虚拟机安装Ubuntu18.04
  3. mybatis框架使用generator的快速搭建
  4. Debug shell: Syntax error: “(“ unexpected
  5. mysql limit耗时过长
  6. 牛客题霸 NC7 买卖股票的最好时机
  7. SpriteBuilder物理对象的父子关系
  8. 苹果x用了2年了,当前4G信号时有时无,大家有遇到过么?
  9. java怎么进行浮点数运算_【考试经验】Java中实现浮点数的精确运算
  10. nsq php,NSQ 最佳实践
  11. 数电渣渣的一点学习感想(更新中)
  12. Linux01-BASH脚本编程之信号捕捉及任务计划53
  13. kubernetes实践指南
  14. 用elasticsearch和kibana 进行简单的实时数据报表分析
  15. Android知识点 363 —— dumpsys alarm
  16. 一岁半女娃海中“游泳秀” 观众含泪观看
  17. js 按钮实现跳转页面 jsp html
  18. QQ2005 SP5貌似不错
  19. safari浏览器下载中文文件名出现的乱码问题
  20. linux软件游戏大全网站,Linux经典游戏大全

热门文章

  1. 【总结整理】登录模块---摘自《人人都是产品经理》
  2. oracle自动冷备份脚本
  3. Intel AMT 可以获得的系统电源状态
  4. .NET环境下每日集成
  5. 【Python】 文件目录比较工具filecmp和difflib
  6. GO语言基础之reflect反射
  7. Dubbo系列(3)_官方Demo说明
  8. 波特率与比特率的关系
  9. C++获取当前时间和计算程序运行时间的方法
  10. 学号20175313 《实现Linux下cp XXX1 XXX2的功能(一)》第九周