Каким образом можно преобразовать данные в удобный для чтения формат?

Добрый день! У меня есть Max Patrol SIEM, который отправляет уведомления по POST. Я использую код на Python с Flask, чтобы принимать эти уведомления и пересылать их в Telegram. Однако я столкнулся с проблемой: сообщения передаются в техническом виде, и они нечитабельны. Как я могу изменить код, чтобы уведомления отправлялись в более понятном формате? Буду признателен за советы или ссылки на материалы, которые помогут мне разобраться, что именно нужно изменить в коде. Я самостоятельно пишу код с помощью молитвословов и ChatGPT. <br/> <br/> Техническая поддержка вендора направляет меня к этому материалу: <a href="https://help.ptsecurity.com/ru-RU/projects/mp10/27.0/help/3678991755" rel="nofollow">https://help.ptsecurity.com/ru-RU/projects/mp10/27...</a>
  • 3 сентября 2024 г. 7:53
Ответы на вопрос 3
Добрый день! Чтобы улучшить читаемость уведомлений, отправляемых в Telegram, вам нужно преобразовать данные, приходящие от Max Patrol SIEM, в более удобный формат перед отправкой. Обычно это включает в себя извлечение нужной информации и её форматирование.

Вот основные шаги, которые помогут вам сделать уведомления более читаемыми:

1. **Получите данные**: Убедитесь, что вы правильно получаете данные из POST-запроса.

2. **Извлечение нужной информации**: Определите, какие данные вы хотите отобразить в сообщении и организуйте их так, чтобы они были понятны.

3. **Форматирование сообщения**: Используйте форматирование, чтобы сделать текст более структурированным и читабельным. Можно использовать, например, Markdown для форматирования сообщений в Telegram.

4. **Отправка сообщения**: Отправьте отформатированное сообщение в Telegram.

Вот пример кода, который поможет вам преобразовать уведомления в более читаемый формат:

```python
from flask import Flask, request
import requests

app = Flask(__name__)

# Ваш токен бота и ID чата
TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'

def send_telegram_message(message):
    url = f'https://api.telegram.org/bot{TOKEN}/sendMessage'
    payload = {
        'chat_id': CHAT_ID,
        'text': message,
        'parse_mode': 'Markdown'  # Используем Markdown для форматирования
    }
    requests.post(url, json=payload)

@app.route('/webhook', methods=['POST'])
def webhook():
    data = request.json

    # Извлечение нужной информации
    # Здесь ваш код для извлечения данных из 'data'
    event_type = data.get("event_type", "Неизвестное событие")
    severity = data.get("severity", "Низкая")
    message = data.get("message", "Нет сообщения")
    
    # Форматирование сообщения
    formatted_message = (
        f"*Тип события:* {event_type}\n"
        f"*Серьезность:* {severity}\n"
        f"*Сообщение:* {message}"
    )

    # Отправляем сообщение в Telegram
    send_telegram_message(formatted_message)

    return '', 200

if __name__ == '__main__':
    app.run(port=5000)
```

### Объяснение кода:

1. **Получение данных** - Используйте `request.json`, чтобы получить уведомление от Max Patrol SIEM.

2. **Извлечение информации** - Извлекайте необходимые поля из данных. Убедитесь, что вы используете правильные ключи в зависимости от структуры вашего запроса.

3. **Форматирование сообщения** - Структурируйте текст с использованием Markdown, чтобы сделать его более читаемым. Вы можете использовать такие элементы, как курсив (`_текст_`), жирный (`*текст*`), списки и т. д.

4. **Отправка сообщения** - Используйте функцию `send_telegram_message` для отправки отформатированного сообщения в Telegram.

### Ресурсы:

- [Telegram Bot API](https://core.telegram.org/bots/api#sendmessage) для информации о том, как отправить сообщение.
- [Flask Documentation](https://flask.palletsprojects.com/en/2.1.x/) для информации о создании веб-приложений на Flask.

Если у вас есть дополнительные вопросы или требуется более сложное форматирование, не стесняйтесь спрашивать!
У тебя request.get_json() возвращает структуру данных - просто вынимай из неё нужные поля. 
Всего-то нужно чуть-чуть почитать, как работать со словарями и списками в питоне.
Например, data['notification_name'] вернёт название события.

Это не единственная проблема в коде, конечно. Вот почему нельзя использовать chatgpt для написания кода, у него большие проблемы с пониманием общей структуры программы.
Обернуть data как кусок кода ```json ... ```
Похожие вопросы