Я следовал этому руководству: https://api.slack.com/tutorials/easy-peasy-slash-commands для создания простого Slack-приложения для команд с косой чертой.
Приложение работает на моем сервере под портом 1336, на VPN. К этому серверу (разумеется, включая IP) нельзя получить доступ за пределами VPN.
Следуя указанному руководству, для настройки приложения Slack (на веб-сайте slack) требуются две вещи:
- URL-адрес перенаправления для OAuth
- URL-адрес запроса для команды косой черты
Что я уже сделал:
Запустив слабое приложение, зашел в
[IP_OF_SERVER]:1336/login
и авторизовал приложение для своей команды.URL-адрес перенаправления OAuth (установлен на:
[IP_OF_SERVER]:1336/oauth
) работал нормально.
Принимая во внимание, что URL-адрес запроса команды косой черты в настоящее время установлен на: http://[IP_OF_SERVER]:1336/slack/receive
- Тестирование приложения с помощью команды косой черты возвращает
Darn – that slash command didn't work (error message: 503_service_error. Manage the command at [name_of_application]
.
Однако, если я использую localtunnel (как указано в руководстве), он работает абсолютно нормально...
lt --port 1336 --subdomain myslashcommand
и если я установлю указанное выше (https://myslashcommand.localtunnel.me
) в качестве URL-адреса запроса команды Slash (https://myslashcommand.localtunnel.me/slack/receive
), тогда он будет работать так, как ожидалось!
Проблема в том, что брандмауэр постоянно блокирует соединение localtunnel.me:[different port number every time]
и вызывает сбой команды localtunel, а это означает, что я не могу использовать localtunnel для своего производственного приложения.
В ссылке на учебник упоминается, что:
Обычная ошибка на этом этапе — это незащищенный URL-адрес: либо он не использует HTTPS, либо безопасность соединения HTTPS не может быть проверена. Если вы используете localtunnel, как указано выше, это не должно быть проблемой. Но после того, как вы развернете свою команду косой черты, вы должны быть уверены, что ваш хостинг обеспечивает действительное HTTPS-соединение, но мы можем побеспокоиться об этом в следующем руководстве.
Может ли это быть причиной моей проблемы? Судя по всему, приложение работает только через HTTP. Как я могу решить эту проблему? Это как-то связано с тем, что IP-адрес моего сервера скрыт от публики? Это должно быть? Если мой OAuth и URL-адрес для входа работают, то имеет ли это значение?