Я построил Slack App для нашей команды.
Я смог создать Slack Button и использовал это для авторизации приложения с oauth.access
My Slack App добавляет Косая черта на канал в Slack
Все идет нормально.
Команде Слэша требуется Request URL
это просто страница, которая получит полезную нагрузку команды слэша и при необходимости отправит ответ обратно на канал Slack.
Вот руб, сервер, на котором размещена страница, которую я должен использовать для Request URL
находится в нашей внутренней сети и доступен только пользователям нашего VPN.
Я думаю, что я мог бы добавить страницу PHP в example.com
который может выступать в качестве прокси-сервера получения сообщений от slack.com
передавая их slack.example.com
затем получить ответ от slack.example.com
и отправив этот ответ обратно slack.com
,
Возможно ли это, и если да, то как мне это сделать? Я открыт для других решений, возможно, используя Apache для прокси?
Я бы запустил страницу запроса на отдельном сервере в вашей демилитаризованной зоне, действующем в качестве прокси-сервера для внутреннего сервера приложений. Вот краткое описание:
Сценарий php для URL-адреса запроса (= страница запроса) должен быть доступен для общего доступа в Интернет, чтобы Slack мог его вызвать. Я бы поставил его на отдельный сервер и поместил бы этот сервер в DMZ вашей компании. Обычно это лучшее место для серверов, которые должны быть доступны извне, но также должны иметь доступ к серверам внутри вашей компании. Обязательно используйте SSL и токен подтверждения для защиты ваших звонков от Slack.
Страница запроса может быть запущена на небольшом сервере и должна иметь веб-сервер (например, apache) и php. Если вы планируете получать более сложные запросы, вам также может понадобиться база данных. Также потребуется запустить SSL, поэтому вам понадобится сертификат. Вы также можете использовать существующий веб-сервер извне (example.com), если он соответствует этим требованиям.
Страница запроса должна иметь доступ к вашему серверу приложений, например, через VPN. Он должен функционировать как прокси-сервер: получать запрос от Slack, делать запросы к серверу приложений на основе особенностей команды slash, а затем возвращать информацию обратно в Slack.
Другим важным моментом является аутентификация пользователя. Я прочел из вашего вопроса, что не все пользователи в вашей команде Slack должны иметь доступ к серверу приложений, поэтому в вашем скрипте запроса должен быть метод, позволяющий определить, каким пользователям разрешен доступ, а каким нет. Было бы проще, если бы эти пользователи могли быть идентифицированы по принадлежности к определенной группе Slack. В любом случае вам, вероятно, понадобится дополнительный бот, который обеспечивает отображение пользователей Slack на пользователей VPN.
Других решений пока нет …