Я пытаюсь загрузить полезную нагрузку JSON для слабых сообщений с несколькими сообщениями в свободный канал - PullRequest
1 голос
/ 20 марта 2020

Я пытаюсь создать сценарий python, который может отправлять настроенные JSON полезные нагрузки в Slack через приложение Slack. См. Код ниже:

import json
import requests
import os
import platform

decrypt = "gpg --output secrets.json --decrypt secrets.gpg"

if os.path.exists("secrets.gpg"):
      returned_value = subprocess.call(decrypt, shell=True)
else:
        print("The file does not exist")

with open('secrets.json','r') as f:
      config = json.load(f)

# Set the webhook_url to the one provided by Slack when you create the webhook at https://my.slack.com/services/new/incoming-webhook/
# webhook_url = 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
# slack_data = {'text': "BODY"}
webhook_url = (config['slack_config']['slack_target_url'])
#slack_messages = {
#slack_message_1={'text': "(config['slack_messages'['message_1'])"},
#slack_message_2={'text': "(config['slack_messages'['message_2'])"},
slack_message_3={'text': "(print(config['slack_messages'['message_3']))"}
#}

response = requests.post(
    webhook_url, data=json.dumps(slack_message_3),
    headers={'Content-Type': 'application/json'}
)
if response.status_code != 200:
    raise ValueError(
        'Request to slack returned an error %s, the response is:\n%s'
        % (response.status_code, response.text)
    )

Хотя он отправляет сообщение на мой слабый канал, он не печатает полезную нагрузку из файла JSON, содержащего:

{
  "slack_config": {
    "slack_target_url": "https://hooks.slack.com/services/xxxxxxxxxx/xxxxxxxxxxxxxx/xxxxxxxxxxx"
  },
  "slack_messages": {
    "message_1": "SLACK_MESSAGE_1",
    "message_2": "SLACK_MESSAGE_2",
    "message_3": "SLACK_MESSAGE_3"
  }
}

Вместо этого он просто распечатывает следующее: enter image description here

В конце концов, я бы хотел, чтобы плоский файл считывал несколько сообщений в свободный канал, как определено в секретах. json. Как мне этого добиться? Кроме того, я бы хотел зашифровать их и прочитать. Однако я чувствую, что это другой вопрос.

Мое главное - как мне распечатать все сообщения на канале Slack, как это диктует полезная нагрузка secerets.json?

1 Ответ

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

Так что я смог завершить это благодаря комментариям @Atreus, упомянутым выше. Благодаря их замечанию код теперь позволяет мне делать несколько сообщений из полезной нагрузки json с именем secrets.json в формате

{
  "slack_config": {
    "slack_target_url": "https://hooks.slack.com/services/xxxxxxxxxx/xxxxxxxxxxxxxx/xxxxxxxxxxx"
  },
  "slack_messages": {
    "message_1": "SLACK_MESSAGE_1",
    "message_2": "SLACK_MESSAGE_2",
    "message_3": "SLACK_MESSAGE_3"
  }
}

Код был изменен, чтобы выглядеть следующим образом:

import json
import requests
import os
import platform

decrypt = "gpg --output secrets.json --decrypt secrets.gpg"

if os.path.exists("secrets.gpg"):
      returned_value = subprocess.call(decrypt, shell=True)
else:
        print("The file does not exist")

with open('secrets.json','r') as f:
      config = json.load(f)

# Set the webhook_url to the one provided by Slack when you create the webhook at https://my.slack.com/services/new/incoming-webhook/
# webhook_url = 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
# slack_data = {'text': "BODY"}
webhook_url = (config['slack_config']['slack_target_url'])
slack_message_1={'text': config['slack_messages']['message_1']}
slack_message_2={'text': config['slack_messages']['message_2']}
slack_message_3={'text': config['slack_messages']['message_3']}

# Send message_1
response = requests.post(
    webhook_url, data=json.dumps(slack_message_1),
    headers={'Content-Type': 'application/json'}
)
if response.status_code != 200:
    raise ValueError(
        'Request to slack returned an error %s, the response is:\n%s'
        % (response.status_code, response.text)
    )

# Send message_2
response = requests.post(
    webhook_url, data=json.dumps(slack_message_2),
    headers={'Content-Type': 'application/json'}
)
if response.status_code != 200:
    raise ValueError(
        'Request to slack returned an error %s, the response is:\n%s'
        % (response.status_code, response.text)
    )

# Send message_3
response = requests.post(
    webhook_url, data=json.dumps(slack_message_3),
    headers={'Content-Type': 'application/json'}
)
if response.status_code != 200:
    raise ValueError(
        'Request to slack returned an error %s, the response is:\n%s'
        % (response.status_code, response.text)
    )
...