尝试从Bash中的JSON文件加载消息有效载荷以发送到Slack频道

时间:2020-03-26 16:28:54

标签: json bash curl jq slack

因此,我尝试使用secrets.json文件将消息发送到特定的备用频道,以指定消息和Web挂钩URL的有效负载。我能够将内容发布到消息中,但是即使有效负载变量设置正确,它也不会将消息作为有效负载加载。如何在我指定的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,因为我忘记在"text":中使用--data选项,所以我知道这不是问题。当我运行上面的脚本时,所有这些都将发布如下: enter image description here

所以我尝试删除$message_1周围的引号,并得到消息:

Webhook Variable is Working.
invalid_payload%

我删除了Webhook响应,因为它具有一个松弛的令牌。 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"
    }
}

1 个答案:

答案 0 :(得分:1)

非常感谢我的一位好友,他是SRE,他能够为我指明正确的方向。尝试从{% extends 'music/base.html' %} {% block title %}Add Artist{% endblock title %} {% block body_content %} <h1>Add New Artist</h1> <form action= "{% url upload_image %}" method="POST" enctype="multipart/form-data"> {% csrf_token %} {% for field in form %} <div> {{ field.errors }} {{ field.label_tag }} {{ field }} </div> {% endfor %} <input value="Add" type="submit"> </form> {% endblock body_content %} 读取内容时,未指定$ message_1。但是现在,如果您替换

secrets.json

--data '{"text":"$message_1"}'

然后您可以从另一个文件中调用消息而无需暴露它们。 这样可以使您可能需要放入消息中的任何链接更加安全,并且它们不会硬编码到消息中。