钉钉设置机器人配置

1、进入配置机器人入口

2、添加机器人









3、测试WebHook请求

本人使用Postman进行测试



4、配置SVN



4.1 配置 Pre-commit hook

  • 设置提交内容必须包含注释

  • 配置参数
@echo off
setlocal
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 10 characters
svnlook log %REPOS% -t %TXN% | findstr "....." > nul
if %errorlevel% gtr 0 goto err
exit 0
:err
echo 上传失败!请添加注释. 注释长度至少为5个字符. Commit aborted! 1>&2
exit 1

4.2 配置 Post-commit hook

set REPOS=%1
set REV=%2
set tttt=%date:~0,10% %time:~0,8%
for /f "tokens=1,2 delims=:" %%a in ('svnlook author -r %REV% %REPOS%') do (
if not defined AUTHOR set AUTHOR=%%a
)
for /f "tokens=1,2 delims=:" %%a in ('svnlook dirs-changed %REPOS%') do (
if not defined CHANGEDDIRS set CHANGEDDIRS=%%a
)
for /f "tokens=1,2 delims=:" %%a in ('svnlook log -r %REV% %REPOS%') do (
if not defined MESSAGE set MESSAGE=%%a
)
set CONTENT="提交时间:%tttt% \n提交版本:%REV% \n作者:%AUTHOR%\n提交备注:%MESSAGE%\n修改目录:%CHANGEDDIRS% "
java -cp D:\svnHook.jar com.wolf.util.Request 钉钉令牌 %CONTENT%

5 配置Java请求文件

由于钉钉提供的接口是https协议,curl需要支持https,因此通过java代码发起Post请求,打包成可运行的jar,然后用post-commit hook调用,传入信息即可。

package com.wolf.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URL; import javax.net.ssl.HttpsURLConnection; public class Request {
public static void main(String[] args) throws Exception {
String token = args[0];
String content = args[1];
content = "{\"msgtype\": \"text\",\"text\": {\"content\": \""+content+"\"}}";
httpsRequest("https://oapi.dingtalk.com/robot/send?access_token="+token, "POST", content);
System.out.println("OK");
System.exit(0);
} /**
* 发送https请求
*/
public static String httpsRequest(String requestUrl, String requestMethod, String outputStr) throws Exception {
HttpsURLConnection conn = null;
BufferedReader bufferedReader = null;
try {
URL url = new URL(requestUrl);
conn = (HttpsURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestMethod(requestMethod);
conn.setRequestProperty("content-type", "application/json");
if (null != outputStr) {
OutputStream outputStream = conn.getOutputStream();
outputStream.write(outputStr.getBytes("utf-8"));
outputStream.close();
}
bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
String str = null;
StringBuffer buffer = new StringBuffer();
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
return buffer.toString();
} catch (Exception e) {
throw e;
} finally {
if (conn != null) {
conn.disconnect();
}
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
}
}
}
}
}

结果如下:

最新文章

  1. C和指针 第十六章 习题
  2. 模拟实现SQL Server字段列显示的数据类型
  3. xxxxxxx
  4. safari渲染Transition动画不流畅问题
  5. IE input file隐藏不能上传文件解决方法
  6. NLP初步
  7. mac 卸载java
  8. 【贪心+堆】XMU 1584 小明的烦恼
  9. SqlServer日期查询
  10. 关于Google指令(别提baidu)
  11. Spring Ioc-依赖注入的几种方式
  12. Mybatis事务(一)事务管理方式
  13. git命令提交新项目
  14. delphi 中的浮点数 (转载)
  15. legend2---开发日志2(注释和函数比较好的写法)
  16. Python3中的运算符
  17. apache HTML5 History 模式 配置
  18. 秒杀多线程第五篇 经典线程同步 关键段CS
  19. JSP 表单处理
  20. git地址

热门文章

  1. deepin系统如何安装deb格式的软件
  2. IOS各种手势操作实例
  3. [SinGuLaRiTy] 树形DP专项测试
  4. C# 快速高效率复制对象另一种方式 表达式树
  5. .net mvc------下拉列表DropDownList控件------绑定数据
  6. 万能数据库连接类-Oracle、DB2 、Access 、Sql Server
  7. c++设计成员变量可动态调整的动态类结构
  8. jmeter参数化随机取值实现
  9. C#中的ArrayList
  10. flowJS源码个人分析