给钉钉机器人发送消息
#!/bin/bash
# Action: 测试curl发送信息给机器人
TOKEN1=123456123123
TOKEN2=qweqweqwe
# webHOOK已脱敏
WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=9febd650a93383ded6f1dds16db7b123133d517821231230ce4f580ee5290e5f691d
JSON_PAYLOAD=$(jq -n --arg token1 "$TOKEN1" --arg token2 "$TOKEN2" \
'{msgtype: "markdown",
markdown: {
title: "Token 推送",
text: (
"### Token 推送\n" +
"**default**\n" +
"```\n" + $token1 + "\n```\n" +
"**job**\n" +
"```\n" + $token2 + "\n```"
)
}
}')
# 发送请求
curl -X POST "$WEBHOOK_URL" -H "content-type: application/json" -d "$JSON_PAYLOAD"
这段脚本的目的是构造一个Markdown格式的消息,并使用curl通过POST请求发送到指定的Webhook URL。脚本中主要有两个部分:构造JSON Payload和发送请求。下面是对每个字段含义的详细解析。
1. 构造包含双Token的Markdown格式
这部分的目的是生成一个包含两个Token信息的Markdown格式的JSON字符串,该字符串将被发送到Webhook。
JSON_PAYLOAD
JSON_PAYLOAD=$(jq -n --arg token1 "$TOKEN1" --arg token2 "$TOKEN2" \
'{msgtype: "markdown",
markdown: {
title: "Token 推送",
text: (
"### Token 推送\n" +
"**default**\n" +
"```\n\($token1)\n```\n" +
"**job**\n" +
"```\n\($token2)\n```"
)
}
}')jq -n: jq是一个轻量级的命令行JSON处理工具,-n选项表示不读取输入,而是仅使用命令生成的JSON。
--arg token1 "$TOKEN1":将环境变量$TOKEN1的值传递给jq并赋值给token1。
--arg token2 "$TOKEN2":将环境变量$TOKEN2的值传递给jq并赋值给token2。
在jq的输入中,构造的是一个JSON对象,具体内容如下:
msgtype: "markdown":表示消息类型为Markdown。
markdown:Markdown内容的主体。
title: "Token 推送":Markdown消息的标题。
text:Markdown消息的内容。这里使用多行字符串构造,包含两个Token。
"### Token 推送\n":Markdown三级标题。
"**default**\n":加粗文本“default”。
"```\n\($token1)\n```":以Markdown代码块形式显示token1。
"**job**\n":加粗文本“job”。
"```\n\($token2)\n```":以Markdown代码块形式显示token2。
以上生成的JSON_PAYLOAD是一个JSON字符串,表示如下:
{
"msgtype": "markdown",
"markdown": {
"title": "Token 推送",
"text": "### Token 推送\n**default**\n```\nTOKEN1_VALUE\n```\n**job**\n```\nTOKEN2_VALUE\n```"
}
}其中,TOKEN1_VALUE和TOKEN2_VALUE分别使用$TOKEN1和$TOKEN2的实际值替换。
2. 发送请求
这部分的作用是将生成的JSON Payload发送到指定的Webhook URL。
curl命令
curl -X POST "$WEBHOOK_URL" -H "content-type: application/json" -d "$JSON_PAYLOAD"curl:命令行工具,用于发送HTTP请求。
-X POST:指定请求方法为POST。
"$WEBHOOK_URL":Webhook的URL,消息将发送到这个URL。假定$WEBHOOK_URL是预先定义的环境变量,包含目标URL。
-H "content-type: application/json":指定HTTP头content-type为application/json,表明发送的是JSON格式数
评论区