Zbudowałem tę aplikację odbiera wydarzenia.
Domyślnie zakres channels:history
pozwala odbierać zdarzenia dla wszystkich wiadomości we wszystkich kanałach publicznych użytkownika, który dodał aplikację.
Idealnie byłoby, gdyby użytkownik mógł ograniczyć go tylko do niektórych kanałów, bezpośrednio w ustawieniach aplikacji. (Każde zdarzenie, które otrzyma aplikacja, stanie się czytelne na całym świecie).
Teraz widzę 2 opcje:
Zdarzenie wiadomości zawiera identyfikator kanału (nie nazwę). Tak więc kod może filtrować kanał, zakładając, że istnieje sposób, aby go ustawić, a użytkownik mu ufa.
Stwórz użytkownik bota (nawet jeśli aplikacja jest tylko do odczytu), które użytkownik może dodać do określonych kanałów.
Czy istnieje lepszy sposób?
Odpowiedzi:
2 dla odpowiedzi № 1Jeśli nie chcesz używać użytkownika bota (twoja opcja2) jedynym sposobem jest odfiltrowanie wiadomości z niepożądanych kanałów w Twojej aplikacji. Otrzymasz zdarzenie wiadomości dla każdej nowej utworzonej wiadomości (w tym wysłanej z Twojej aplikacji). Zdarzenie komunikatu już zawiera channel ID
, dzięki czemu możesz łatwo filtrować na podstawie tego.
Przykład: (Źródło)
{
"type": "message",
"channel": "C2147483705",
"user": "U2147483697",
"text": "Hello world",
"ts": "1355517523.000005"
}
W ustawieniach zdarzenia nie ma parametru, którypozwala wcześniej wybrać kanały. Ale ponieważ wydaje się, że jest to powtarzające się pytanie, sugerowałbym wysłanie prośby w tej sprawie do zespołu Slacka.