重新拾取:TFS2017钉钉机器人源代码签入通知
http://www.cnblogs.com/79039535/p/9316791.html
现在很多公司办公都使用钉钉打卡签到,于是鉴于公司也使用钉钉就打算用钉钉来做一个源代码签入通知。
首先先去打开官方网站了解钉钉的通知,钉钉机器人提供了很多模板(GitHub啊,GitLab啊, Coding啊)
但是没有TFS~ 哈哈! 这里我们选择 自定义机器人 《钉钉开放平台机器人文档》

设置机器人名字,就是聊天对话时显示的名称

拿到webhook就可以进行服务挂钩了~。 现在登录你的TFS站点 -> 项目 -> 服务挂钩


选择已签入代码,当然可选的还有很多,可以选择发布部署,CI/CD都可以挂钩

可以提供参数写入标头,以及用户名和密码身份验证。但这里我主要是演示,就只设置URL

点击测试通过可以看到TFS给你发送的JSON这里我只要了部分信息。来显示提交时间、提交版本、作者、提交备注

测试完成后就建立好服务挂钩了~,这时候做个马上做个站点来接受这个信息
我这里是用ASP.NET Core WebAPI 建立项目,自己可以随意。

/// <summary>
/// 钉钉处理器
/// </summary>
[Route("api/[controller]")]
public class DingTalkController : Controller
{
/// <summary>
/// 钉钉机器人TFS签入挂钩
/// </summary>
/// <remarks>
/// 通过TFS服务挂钩返回JSON来实现转发钉钉机器人
/// </remarks>
/// <returns>Task</returns>
[IgnoreGlobalResult]
[HttpPost("PushCommitMessage")]
public async Task<IActionResult> PostAsync()
{
var result = string.Empty;
using (var reader = new StreamReader(Request.Body, Encoding.UTF8))
{
result = await reader.ReadToEndAsync();
WorkItem jsonObj = JsonConvert.DeserializeObject<WorkItem>(result);
if (jsonObj != null)
{
var content = $"提交时间:{jsonObj.resource.createdDate.ToString("yyyy-MM-dd HH:mm:ss")}\n提交版本:{jsonObj.resource.changesetId}\n作者:{jsonObj.resource.author.displayName + "|" + jsonObj.resource.author.uniqueName}\n提交备注:{jsonObj.resource.comment}";
var url = "https://oapi.dingtalk.com/robot/send?access_token=fc10329e2d326d2eaf81a8317asasdasffdgdffghfghdadsfsdfadsfdsfga5dac3314e98fa88d"; //序列化JSON
TextTypeMsg objMsg = new TextTypeMsg();
objMsg.msgtype = "text";
objMsg.text = new TextTypeMsg.Text();
objMsg.text.content = content;
var json = JsonConvertHelper.ToJson(objMsg); var request = new HttpRequest(HttpMethod.Post, url);
request.ContentType(HttpContentType.Json.Description());
request.SetJson(json); DingTalkResult dingTalkResult = JsonConvertHelper.ToObject<DingTalkResult>(request.ResultAsync().Result);
OperationResult operationResult = new OperationResult();
if (dingTalkResult.errmsg == "ok")
{
operationResult.Code = ErrorCodeEnum.Success.ToString();
operationResult.Message = dingTalkResult.errmsg;
operationResult.Data = "";
}
else
{
operationResult.Code = ErrorCodeEnum.ThirdPartyError.ToString();
operationResult.Message = dingTalkResult.errmsg;
operationResult.Data = "";
}
return Json(operationResult);
}
else
{
OperationResult operationResult = new OperationResult();
operationResult.Code = ErrorCodeEnum.SerializedError.ToString();
operationResult.Message = ErrorCodeEnum.SerializedError.Description();
operationResult.Data = "";
return Json(operationResult);
}
}
} } public class DingTalkResult
{
public string errmsg { get; set; }
public string errcode { get; set; }
} public class WorkItem
{
public WorkItemResource resource { get; set; }
} public class WorkItemResource
{
public int changesetId { get; set; }
public Author author { get; set; }
public DateTime createdDate { get; set; }
public string comment { get; set; }
} public class Author
{
public string displayName { get; set; }
public string uniqueName { get; set; }
} 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; }
}
}

最终效果

参考文档
https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.evfrZF&treeId=257&articleId=105735&docType=1
https://blog.csdn.net/xxdddail/article/details/73249468
重新拾取:TFS2017钉钉机器人源代码签入通知的更多相关文章
- 怎么用python 3 开发钉钉群机器人
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:Python绿色通道 PS:如有需要Python学习资料的小伙伴可以加 ...
- Java项目中集成钉钉机器人推送消息提醒
前言: 项目中有一个需求,当有新订单产生的时候,希望能够及时通知到业务相关人员进行处理,整体考虑了一下,选用了钉钉机器人提醒功能(公司内部主要也是使用钉钉进行通讯). 操作: 主要分为两部分进行处理: ...
- 使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_132 最近疫情比较严重,很多公司依靠阿里旗下的办公软件钉钉来进行远程办公,当然了,钉钉这个产品真的是让人一言难尽,要多难用有多难用 ...
- jenkins 集成钉钉机器人
最早做Jenkins发布完成以后通过邮件发送信息通知相关的联系人,发现邮件会受限于大家接收的设置,导致不能及时的看到相关的发布内容,公司使用钉钉做为公司内部的通讯工具,所以想通过Jenkins发布完成 ...
- 钉钉 机器人接入 自定义webhook
钉钉出了个webhook机器人接入,自定义的机器人支持随时post消息到群里: 昨天就尝试着用C#写了个: 一开始用python写,但是莫名的提示 {"errmsg":" ...
- python 小脚本升级-- 钉钉群聊天机器人
一则小脚本(工作中用) 在这篇文章中写的监控的脚本,发送监控的时候 是利用的邮箱,其实在实际,邮箱查收有着不方便性,于是乎升级, 我们工作中,经常用钉钉,那么如果要是能用到钉钉多好,这样我们的监控成功 ...
- 钉钉自定义机器人配合SVN钩子事件进行消息的推送实践
目前很多公司还是使用SVN(TortoiseSVN)进行版本控制,使用简单,适合管理一般项目.协同办公软件目前钉钉比较成熟,阿里也一直在宣传推广,这两年公司也在使用,主要用于信息的沟通,其它的绩效.考 ...
- 钉钉机器人zabbix报警
首先在钉钉群聊里添加一个自定义的机器人 并复制webhook的内容 https://oapi.dingtalk.com/robot/send?access_token=37e23308d1b84eb4 ...
- Asp.Net Core对接钉钉群机器人
钉钉作为企业办公越来越常用的软件,对于企业内部自研系统提供接口支持,以此来打通多平台下的数据,本次先使用最简单的钉钉群机器人完成多种形式的消息推送,参考钉钉开发文档中自定义机器人环节,此次尝试所花的时 ...
随机推荐
- linux 单用户密码修改
1.启动系统,并在GRUB2启动屏显时,按下e键进入编辑模式. 2.在linux16/inux/linuxef所在参数行ro更改为init=/sysroot/bin/sh 3.按Crl+x启动到she ...
- 关于java环境变量配置出现javac命令无法运行的解决办法
昨天一时兴起给电脑刷了机,想着给电脑装个Win10+Linux的双系统, 结果双系统没装好,所有的东西又得重新弄一遍 今天在配置java的时候又出问题了 java,java-version运行成功了, ...
- .NET Core微服务系列基础文章
今年从原来的Team里面被抽出来加入了新的Team,开始做Java微服务的开发工作,接触了Spring Boot, Spring Cloud等技术栈,对微服务这种架构有了一个感性的认识.虽然只做了两个 ...
- 0412ooday01.txt=============对象和类(上)
对象和类(上) 面向对象程序设计:面向过程的结构化程序设计.什么是抽象数据类型.什么是类 定义一个类:定义类的成员变量.定义类的方法 创建并使用对象:使用new关键字创建对象.引用类型变量.访问对象的 ...
- iview服务不可以被访问解决办法
一般情况是因为服务的host设置为localhsot了,修改为0.0.0.0即可. 打开...\iview-admin-dev\node_modules\webpack-dev-server\bin下 ...
- Java 集合系列03之 ArrayList详细介绍
ArrayList做为List接口中最常用的实现类,必须掌握. 一.ArrayList简介 与Java中的数组相比ArrayList的容量可以动态增加.它继承与AbstractList,实现了List ...
- windows service创建使用整合
C#创建Windows Service(Windows 服务)基础教程 C#winform windows服务程序创建与安装 C#实现WinForm随WINDOWS服务一起启动
- CPU或以太网模块重启DHCP请求
最近,带了一个实习生,一天: 他:师傅,PLC如何首次分配IP地址啊? 我:不是教过你了吗? 他:我怎么用BOOTP软件,半天没有反应啊? 我:..... 原来,他做实验的CPU已经被分配IP地址了, ...
- python2编码问题
前言:python3解决了编码的问题,但python2还存在很多编码问题,用P2写爬虫爬了网页,解析时常有不同字符混着编码,导致解码问题成为爬虫程序员的噩梦... 但咱们要用robot framewo ...
- ef mysql
App.config <configuration> <configSections> <!-- For more information on Entity Frame ...