重新拾取: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对接钉钉群机器人
钉钉作为企业办公越来越常用的软件,对于企业内部自研系统提供接口支持,以此来打通多平台下的数据,本次先使用最简单的钉钉群机器人完成多种形式的消息推送,参考钉钉开发文档中自定义机器人环节,此次尝试所花的时 ...
随机推荐
- 使用logstash同步MySQL数据到ES
使用logstash同步MySQL数据到ES 版权声明:[分享也是一种提高]个人转载请在正文开头明显位置注明出处,未经作者同意禁止企业/组织转载,禁止私自更改原文,禁止用于商业目的. https:// ...
- 自定义element-ui中的图标
element-ui图标库图标较少,比如有关于登录页面输入框里的用户名和密码的小图标就没有,这个时候可以自定义图标. <el-input v-model="loginForm.user ...
- 计算机网络之iframe内联框架跨域
iframe框架同源下的数据调用 iframe框架非同源下的数据传输 一.iframe框架同源下的数据调用 1.父窗口向子窗口获取数据 //html1父级窗口 <iframe src=" ...
- Asp.Net Core 新篇章
一. 二. 三. 系列章节 第一节:.Net Core环境的安装和常用指令 第X节:XXXXXXXXXXXXXXXXXXXXXXXXXXXX 第X节:XXXXXXXXXXXXXXXXXXXXXXXXX ...
- 关于FastDBF库读写ArcGis dbf文件的小bug
该库托管于GitHub,地址:https://github.com/SocialExplorer/FastDBF 贡献者应该都是老外,所以…… 1.解析文件头,字段名部分如果有中文命名字段会出错 在D ...
- centos6 & centos 7 防火墙设置
转载:原文地址:http://blog.csdn.net/u011846257/article/details/54707864 Centos升级到7之后,内置的防火墙已经从iptables变成了fi ...
- Redux中间件组合方法
中间件 https://redux.js.org/glossary#middleware 中间件在发送端 action端点 和 处理方reducer的端点之间. 主要负责将async action转换 ...
- [Deep Learning] 神经网络基础
目前,深度学习(Deep Learning,简称DL)在算法领域可谓是大红大紫,现在不只是互联网.人工智能,生活中的各大领域都能反映出深度学习引领的巨大变革.要学习深度学习,那么首先要熟悉神经网络(N ...
- Git分支实战入门详细图解
现在我们模拟一个简单的分支和合并案例,其中工作流可供真实项目借鉴. (1)在master开展工作 (2)为新的需求创建分支 (3)在新的分支上展开工作 这时,你接到一个电话,说项目有一个严重的问题需要 ...
- 深度学习与NLP简单应用
在深度学习中,文本分类的主要原型:Text label,坐边是输入端“X”,右边是输出端“Y”.行业baseline:用BoW(bag of words)表示sentences(如何将文本表达成一 ...