Попытка загрузить сообщение из файла JSON в Bash для отправки на свободный канал - PullRequest
0 голосов
/ 26 марта 2020

Итак, я пытаюсь отправить сообщение на указанный c свободный канал, используя файл secrets.json, чтобы указать полезную нагрузку как для сообщений, так и для 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 работает, но сообщения не загружаются в curl полезной нагрузки для --data по какой-то странной причине.

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 Ответ

1 голос
/ 27 марта 2020

Огромное спасибо одному из моих приятелей, который является SRE, он смог указать мне правильное направление. При попытке прочитать что-то из secrets.json в нем не указывалось $ message_1. Но теперь, если вы замените

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

на

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

, вы сможете затем вызывать сообщения из другого файла, не раскрывая их. Это делает любые ссылки, которые вам могут понадобиться в сообщении, более безопасными, так как они не жестко закодированы в сообщении.

...