利用钉钉机器人在项目群里发送通知

获取自定义机器人webhook

  • 在机器人管理页面选择“自定义”机器人,输入机器人名字并选择要发送消息的群。如果需要的话,可以为机器人设置一个头像。点击“完成添加”。

image

image

  • 点击“复制”按钮,即可获得这个机器人对应的Webhook地址,其格式如下

1

https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx

使用自定义机器人

  • 获取到Webhook地址后,用户可以使用任何方式向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。注意,发起POST请求时,必须将字符集编码设置成UTF-8。

  • 当前自定义机器人支持文本(text)、连接(link)、markdown(markdown)三种消息类型,大家可以根据自己的使用场景选择合适的消息类型,达到最好的展示样式。具体的消息类型参考下一节内容。

  • 自定义机器人发送消息时,可以通过手机号码指定“被@人列表”。在“被@人列表”里面的人员,在收到该消息时,会有@消息提醒(免打扰会话仍然通知提醒,首屏出现“有人@你”)

消息类型及数据格式

文本类型

1

2

3

4

5

6

7

8

9

10

11

12

{

     "msgtype":"text",

     "text": {

         "content":"我就是我,  @1825718XXXX 是不一样的烟火"

     },

     "at": {

         "atMobiles": [

             "1825718XXXX"

         ],

         "isAtAll":false

     }

 }

参数必选类型说明
msgtypetruestring此消息类型为固定text
contenttruestring消息内容
atMobilesfalsestring被@人的手机号
isAtAllfalsebool@所有人时:true,否则为:false

文本消息

 

测试自定义机器人

通过下面方法,可以快速验证自定义机器人是否可以正常工作:

  • 使用命令行工具curl(版本用最新:7.29.0)

1

2

3

4

5

6

7

8

curl' https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx'\

   -H'Content-Type: application/json'\

   -d '

  {"msgtype":"text",

    "text": {

        "content":"我就是我, 是不一样的烟火"

     }

  }'

  • Java程序测试

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

importorg.apache.http.HttpResponse;

importorg.apache.http.HttpStatus;

importorg.apache.http.client.HttpClient;

importorg.apache.http.client.methods.HttpPost;

importorg.apache.http.entity.StringEntity;

importorg.apache.http.impl.client.HttpClients;

importorg.apache.http.util.EntityUtils;

 

 

publicclassChatbotSend {

 

    publicstaticString WEBHOOK_TOKEN =" https://oapi.dingtalk.com/robot/send?access_token=xxxxxx";

 

    publicstaticvoidmain(String args[])throwsException{

 

        HttpClient httpclient = HttpClients.createDefault();

 

        HttpPost httppost =newHttpPost(WEBHOOK_TOKEN);

        httppost.addHeader("Content-Type","application/json; charset=utf-8");

 

        String textMsg ="{ "msgtype": "text", "text": {"content": "我就是我, 是不一样的烟火"}}";

        StringEntity se =newStringEntity(textMsg,"utf-8");

        httppost.setEntity(se);

 

        HttpResponse response = httpclient.e x e cute(httppost);

        if(response.getStatusLine().getStatusCode()== HttpStatus.SC_OK){

            String result= EntityUtils.toString(response.getEntity(),"utf-8");

            s y s t e m.out.println(result);

        }

    }

}

  • PHP程序测试

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<?php 

  

function request_by_curl($remote_server, $post_string) { 

    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL, $remote_server);

    curl_setopt($ch, CURLOPT_POST,1);

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,5);

    curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/json;charset=utf-8'));

    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); 

    // 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码

    // curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);

    // curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

    $data = curl_e x e c($ch);

    curl_close($ch); 

               

    return$data; 

 

$webhook =" https://oapi.dingtalk.com/robot/send?access_token=xxxxxx";

$message="我就是我, 是不一样的烟火";

$data = array ('msgtype'=>'text','text'=> array ('content'=> $message));

$data_string = json_encode($data);

 

$result = request_by_curl($webhook, $data_string); 

echo $result;

 

?>

编写shell脚本

vi notice.sh 

chmod 777 notice.sh

./notice.sh 测试脚本是否正确

curl 'https://oapi.dingtalk.com/robot/send?access_token=79803a12eb673181731459d305b2a42f081f20371b1c14' \
   -H 'Content-Type: application/json' \
   -d '
  {"msgtype": "text", 
    "text": {
        "content": "项目组成员请下班前提交代码和文档到SVN"
     }

  }'

在linux中 yum install crontabs

crontab -e写入

0 17 * * 1-5 /home/tanlx/Dnotice.sh 每天17点运行

然后crontab -l查看

0 17 * * 1-5 /home/tanlx/Dnotice.sh 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值