2016-11-25 6 views
2

Это может показаться хромым вопросом, но было бы здорово, если кто-то может помочь. Я написал небольшой скрипт python, который возвращает некоторый вывод, основанный на команде, отправленной ему через пользовательский бот slack. В скрипте Python используется RTM API. Всякий раз, когда кто-то в слабом упоминании бота и передает команду (например: @slackcustombot foobar), он возвращает пользовательское сообщение (ex: Hi foobar) из сценария. Теперь вопрос стоит на стороне безопасности. Мой скрипт находится на сервере, который не открыт для Интернета. И поскольку Slack использует динамический IP-адрес, нет никакой возможности белого списка липких ip-пакетов.Slack RTM API использует метод POST или GET?

В основном, все, что я хотел знать, это когда кто-то в слабом канале упоминает ботов, а когда бот на slack-сервере отправляет команду на мой скрипт python, находящийся на моем сервере, посылает ли он как метод GET или как Метод POST? Потому что если это метод GET, мне, возможно, не придется беспокоиться о проблеме безопасности. но если он отправляет метод POST, какую альтернативу я мог бы использовать в этом сценарии? Любая помощь приветствуется. Пожалуйста, поправьте меня, если я где-то ошибаюсь, все еще учась. :)

С уважением, Junaid.

ответ

1

Ни то, ни другое. Он использует протоколл WebSocket. Если вы предпочитаете использовать протокол на основе HTTP, я бы порекомендовал посмотреть на Slack's Event API. Он использует протокол HTTPS POST для передачи сообщений вашему боту.

API-интерфейс Events не предоставляет все типы событий, которые доступны в RTM-API, но его гораздо проще обрабатывать и быть достаточным для бот-чата. Проверьте here для документации о том, какие типы событий доступны для обоих API RTM и API событий.

Вам нужно будет найти способ разоблачить URL вашего бота в Интернете, чтобы Slack мог его использовать. Если вам нужно получить доступ к внутренним корпоративным приложениям через ваш Slack-бот, наилучшим подходом, на мой взгляд, является наличие Slack-бота на веб-сервере в DMZ вашей компании.

Более мелкомасштабный подход заключается в использовании провайдера пересылки, который подключается к локальному веб-серверу через туннель VPN и подвергает ваш внутренний веб-сервер специальным открытым URL-адресом. Это будет работать, если вы хотите, чтобы Slack разговаривал с вашим веб-сервером в локальной сети за маршрутизатором/брандмауэром. Одним из примеров является ngrok, но они также являются другими поставщиками.