2016-01-26 27 views
8

Próbuję opublikować obraz z interfejsem API luzu. Mam obecnie otwarte dwa interfejsy API (używając pythona), które są rtm & slackbot.Publikowanie obrazu z luki API

sc = SlackClient(API_KEY) 
sc.api_call('chat.postMessages', channel=, text=) #post as bot 

sc.rtm_connect(): 
sc.rtm_send_message(channel=..., message=...) #post as desired user 

Te przykłady działać poprawnie odpowiedzieć tekst do kanału, ale muszę dodawać zdjęcia do kanału.

Chcę opublikować zdjęcie za pomocą metody rtm_ *, ale nie wiem, jak to zrobić. Jedynym odniesieniem dla obrazów jest https://api.slack.com/docs/attachments, ale nie widzę sposobu, aby to zrobić z interfejsem API rtm.

Każda pomoc jest doceniana. TIA.

UPDATE/EDIT:

Spróbowałem więc stosując metodę Jon zalecane, który brzmi następująco:

sc.api_call("chat.postMessage", channel='D0K7P9MCJ', text='postMessage test', 
      attachments='[{"image_url":"http://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg"}]') 

Ale to nie wydaje się działać (nie ma obrazu pisał) i nie błąd został zgłoszony.

ROZWIĄZANIE

dostałem tej pracy, włączając tytuł w sekcji załączników. Szkoda, że ​​nie wyrzucił błąd, =/

+0

Czy możesz wysłać przykładowe połączenie z załącznikami, które faktycznie działają? Próbuję zrobić to samo, a tytuł nie pomaga – Bicubic

+0

@Bicubic To było trochę czasu, ale dodałem rozwiązanie, które powinno działać. – Shatnerz

Odpowiedz

1

Będziesz musiał użyć opcji postMessage - nie można zrobić to za pomocą RTM (od https://api.slack.com/rtm):

RTM API obsługuje tylko wysyłania prostych wiadomości sformatowane przy użyciu domyślnego trybu formatowania wiadomości. Nie obsługuje załączników ani innych formatów formatowania wiadomości. Aby opublikować bardziej złożony komunikat jako klienty użytkownika , można wywołać metodę web API chat.postMessage z ustawieniem as_user na wartość true.

+0

Zaktualizowałem mój OP, aby pokazać przykład użycia 'postMessage', które nie działa dla mnie. –

+0

Czy dodajesz argument "token"? Wymagane jest https://api.slack.com/methods/chat.postMessage –

+0

Używam biblioteki klienta, ale nie wymaga ona podania wartości. Działa poprawnie bez dostarczania tokena, chociaż dostarczam klucz API na konstruktorze klienta. - Należy również zauważyć, że napisałem, co wydaje się być rozwiązaniem w moim PO. Brakujący tytuł obrazu. –

4

Jak wspomniano w aktualizacji tego pytania, aby to zadziałało, należy podać tytuł z załącznikiem.

image_url = "http://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg" 
attachments = attachments = [{"title": "Cat", 
           "image_url": image_url}] 
sc.api_call("chat.postMessage", channel='D0K7P9MCJ', text='postMessage test', 
      attachments=attachments) 
+0

Użycie pustych pól dla "tytułu" i "tekstu" również działa – meain

Powiązane problemy