Как поддерживать актуальность канала Slack в стороннем приложении?

В последнее время я играл с slack API и придумал один демонстрационный проект, в котором у меня есть какой-то виджет чата, внутри которого выпадающее меню в заголовке заполнено списком каналов (через Channels.list API), при выборе одного из них будет вызвана функция channels.history для заполнения тела виджета, а внизу в нижнем колонтитуле текстового поля и отправки кнопку, чтобы опубликовать новое сообщение в slack.. СЕЙЧАС, чтобы поддерживать тело виджета в актуальном состоянии, я) мне приходилось периодически делать вызов останова каналов. сделал вызов отдыха, когда пользователь отправляет сообщение из текстового поля этого виджета.

Теперь у меня вопрос: как мне пропустить этот периодический вызов (потому что я получаю предупреждение 429) вместо того, чтобы реализовать какую-либо логику, которая запускала бы вызов channels.history только тогда, когда новое сообщение поступает на слабую сторону, а не периодически. или есть ли лучший способ сделать это?


person SpaceyBot    schedule 24.07.2018    source источник


Ответы (2)


Один из способов поддерживать актуальность копии текущих сообщений из канала в стороннем приложении — использовать API событий. Вы подписываетесь на событие сообщений, и всякий раз, когда публикуется новое сообщение, Slack отправляет вам запрос , который включает в себя полное сообщение. Это также работает для «сложных» сообщений.

person Erik Kalkoken    schedule 24.07.2018

Я не на 100 % знаком с Slack API, но нашел следующее: API для обмена сообщениями в реальном времени.

Поскольку он использует веб-сокеты, я предполагаю, что вы можете подключаться и получать все отправленные сообщения без необходимости периодически запрашивать эту информацию. Однако вам нужно изменить свое приложение, чтобы оно работало с веб-сокетами вместо периодических HTTP-вызовов.

person Bruno Camarneiro    schedule 24.07.2018
comment
спасибо, но на самом деле он не поддерживает сложные сообщения, такие как вложения и т. д. - person SpaceyBot; 24.07.2018
comment
Это может быть немного надуманным, но что, если вы используете API обмена сообщениями в реальном времени для обновления истории, но используете веб-API для отправки сложных сообщений? - person Bruno Camarneiro; 24.07.2018