尝试从 Bash 中的 JSON 文件加载消息负载以发送到 Slack 频道
Trying to Load A Message Payload from a JSON File in Bash to Send to Slack Channel
因此,我尝试使用 secrets.json
文件向特定的松弛通道发送消息,以指定消息和网络挂钩 URL 的有效负载。我能够对消息进行 post 处理,但即使有效负载变量设置正确,它也不会将消息加载为有效负载。如何在指定的 curl 命令中加载消息负载?
代码如下:
richardbarret@1152-MBP ~/Git/SalesforceCLI/Integration/Slack master ● ./automated_messages.sh ✔ 1488 10:48:42
https://hooks.slack.com/services/XXXXXXXXX/XXXXXXX/XXXXXX
Webhook Variable is Working.
invalid_payload% richardbarret@1152-MBP ~/Git/SalesforceCLI/Integration/Slack master ● cat automated_messages.sh ✔ 1489 10:48:59
#!/bin/bash
# ===========================================================
# Created By: Richard Barrett
# Organization: Mirantis
# Department: Customer Success Operation
# Purpose: Send Message to Slack Channel
# Date: 03/20/2020
# ===========================================================
# System Variables
webhook_url=$(cat secrets.json | jq ".slack_config.slack_target_url" | tr -d \")
echo $webhook_url
printf "Webhook Variable is Working.\n"
message_1=$(cat secrets.json | jq ".slack_messages.message_1" | tr -d \")
message_2=$(cat secrets.json | jq ".slack_messages.message_2" | tr -d \")
message_3=$(cat secrets.json | jq ".slack_messages.message_3" | tr -d \")
# Use Messages in this command syntax
# Example
# curl -X POST -H 'Content-type: application/json' --data '{"text":"TEST TEXT BODY"}' $webhook_url
# General Message:
curl -X POST -H 'Content-type: application/json' --data '{"text":"$message_1"}' $webhook_url
# Messages for Handover:
#curl -X POST -H 'Content-type: application/json' --data '{"text":"Handovers: https://mirantis.my.salesforce.com/XXXXXXXXXXXXXXX"}' $webhook_url
# Message for All Change Requests:
#curl -X POST -H 'Content-type: application/json' --data '{"text":"All Change Requests: https://mirantis.my.salesforce.com/XXXXXXXXXXXX"}' $webhook_url
# Message for Change Requests in Ready to Execute
# curl -X POST -H 'Content-type: application/json' --data '{"text":"All CRs in Ready to Execute:"}' $webhook_url
我修复了 Invalid Payload
,因为我忘记在 --data
中使用 "text":
选项,所以我知道这不是问题所在。当我 运行 上面的脚本全部得到 post 编辑如下:
所以我尝试删除 $message_1
周围的引号并收到消息:
Webhook Variable is Working.
invalid_payload%
我删除了 Webhook 响应,因为它有一个 slack 令牌。
Webhook 有效,但由于某些奇怪的原因,消息未加载到 --data 的负载 curl 中。
secrets.json
看起来像这样:
{
"slack_config": {
"slack_target_url": "https://hooks.slack.com/services/XXXXXXX/XXXXXXXXXXX/XXXXXXXXXXXXXXX"
},
"slack_messages": {
"message_1": "SLACK_MESSAGE_1 Testing Secrets Calls from secrets.json File",
"message_3": "SLACK_MESSAGE_3 Testing Secrets Calls from secrets.json File",
"message_2": "SLACK_MESSAGE_2 Testing Secrets Calls from secrets.json File"
}
}
非常感谢我的一位 SRE 好友,他能够为我指明正确的方向。当试图从 secrets.json
中读取内容时,它没有指定 $message_1。但是现在如果你替换
--data '{"text":"$message_1"}'
和
--data "{\"text\":\"$message_1\"}"
然后您可以从另一个文件中调用这些消息而不公开它们。
这使得您可能需要放入消息中的任何链接都更加安全,并且它们不会硬编码到消息中。
因此,我尝试使用 secrets.json
文件向特定的松弛通道发送消息,以指定消息和网络挂钩 URL 的有效负载。我能够对消息进行 post 处理,但即使有效负载变量设置正确,它也不会将消息加载为有效负载。如何在指定的 curl 命令中加载消息负载?
代码如下:
richardbarret@1152-MBP ~/Git/SalesforceCLI/Integration/Slack master ● ./automated_messages.sh ✔ 1488 10:48:42
https://hooks.slack.com/services/XXXXXXXXX/XXXXXXX/XXXXXX
Webhook Variable is Working.
invalid_payload% richardbarret@1152-MBP ~/Git/SalesforceCLI/Integration/Slack master ● cat automated_messages.sh ✔ 1489 10:48:59
#!/bin/bash
# ===========================================================
# Created By: Richard Barrett
# Organization: Mirantis
# Department: Customer Success Operation
# Purpose: Send Message to Slack Channel
# Date: 03/20/2020
# ===========================================================
# System Variables
webhook_url=$(cat secrets.json | jq ".slack_config.slack_target_url" | tr -d \")
echo $webhook_url
printf "Webhook Variable is Working.\n"
message_1=$(cat secrets.json | jq ".slack_messages.message_1" | tr -d \")
message_2=$(cat secrets.json | jq ".slack_messages.message_2" | tr -d \")
message_3=$(cat secrets.json | jq ".slack_messages.message_3" | tr -d \")
# Use Messages in this command syntax
# Example
# curl -X POST -H 'Content-type: application/json' --data '{"text":"TEST TEXT BODY"}' $webhook_url
# General Message:
curl -X POST -H 'Content-type: application/json' --data '{"text":"$message_1"}' $webhook_url
# Messages for Handover:
#curl -X POST -H 'Content-type: application/json' --data '{"text":"Handovers: https://mirantis.my.salesforce.com/XXXXXXXXXXXXXXX"}' $webhook_url
# Message for All Change Requests:
#curl -X POST -H 'Content-type: application/json' --data '{"text":"All Change Requests: https://mirantis.my.salesforce.com/XXXXXXXXXXXX"}' $webhook_url
# Message for Change Requests in Ready to Execute
# curl -X POST -H 'Content-type: application/json' --data '{"text":"All CRs in Ready to Execute:"}' $webhook_url
我修复了 Invalid Payload
,因为我忘记在 --data
中使用 "text":
选项,所以我知道这不是问题所在。当我 运行 上面的脚本全部得到 post 编辑如下:
所以我尝试删除 $message_1
周围的引号并收到消息:
Webhook Variable is Working.
invalid_payload%
我删除了 Webhook 响应,因为它有一个 slack 令牌。 Webhook 有效,但由于某些奇怪的原因,消息未加载到 --data 的负载 curl 中。
secrets.json
看起来像这样:
{
"slack_config": {
"slack_target_url": "https://hooks.slack.com/services/XXXXXXX/XXXXXXXXXXX/XXXXXXXXXXXXXXX"
},
"slack_messages": {
"message_1": "SLACK_MESSAGE_1 Testing Secrets Calls from secrets.json File",
"message_3": "SLACK_MESSAGE_3 Testing Secrets Calls from secrets.json File",
"message_2": "SLACK_MESSAGE_2 Testing Secrets Calls from secrets.json File"
}
}
非常感谢我的一位 SRE 好友,他能够为我指明正确的方向。当试图从 secrets.json
中读取内容时,它没有指定 $message_1。但是现在如果你替换
--data '{"text":"$message_1"}'
和
--data "{\"text\":\"$message_1\"}"
然后您可以从另一个文件中调用这些消息而不公开它们。 这使得您可能需要放入消息中的任何链接都更加安全,并且它们不会硬编码到消息中。