2017-12-28 35 views
2

자바에서 슬랙의 API를 사용하고 있습니다. 들어오는 Webhook을 사용하여 메시지를 보내는 간단한 코드를 작성하는 방법을 이미 알아 냈습니다. 그러나 getChannels 함수에서 사용 가능한 채널 목록을 수신하는 데 관심이 있습니다.Slack API에서 채널 목록을 가져 오는 방법은 무엇입니까?

문제는 Java에서이 문제에 대한 예제를 찾을 수 없다는 것입니다.

지금, 내 코드는 다음과 같습니다

public void getChannels() throws IOException, SlackApiException{ 

    List<String> channels = slack_.methods().channelsList(ChannelsListRequest.builder().token(token_).build()) 
      .getChannels().stream() 
      .map(c -> c.getId()).collect(Collectors.toList()); 

    for (String string : channels) { 
     System.out.println(string); 
    } 
} 

하지만 결과는 'javaNullPointException'이었다

package slack; 

import com.github.seratch.jslack.Slack; 
import java.io.IOException; 

import com.github.seratch.jslack.api.methods.SlackApiException; 
import com.github.seratch.jslack.api.webhook.*; 

public class SlackManager { 

    private String token_="{myToken}"; 
    private Slack slack_ = Slack.getInstance(); 
    private String url_="{url}"; 

    public void sendMessage(String text, String channel, String name) throws IOException, SlackApiException { 
     Payload payload = Payload.builder() 
      .channel("#"+channel) 
      .username(name) 
      .iconEmoji(":smile_cat:") 
      .text(text) 
      .build(); 

     WebhookResponse response = slack_.send(url_, payload); 
     System.out.println(response.getMessage().toString()); 
    } 

    public void getChannels(){ 
     //I don't know how to get the channel list!!! 
    } 
} 

는 난이 시도합니다. 토큰은 String이어야합니까?

+0

어떤 목적 않은 토큰'개인 문자열 _ =이 "{myToken}";'역할을? –

+0

아니요, 나중에 필요한 경우에만 해당 – user5872256

답변

1

Slack의 수신 웹 훅은이 기능을 제공하지 못합니다. 필요한 것을 얻기 위해 Slack의 Web API를 사용해야합니다.

사용중인 jslack 라이브러리에서 웹 API, try following this example 사용 :

List<String> channels = slack.methods().channelsList(ChannelsListRequest.builder().token(token).build()) 
     .getChannels().stream()  
     .map(c -> c.getId()).collect(toList()); 
+0

그냥 시도하지만 작동하지 않습니다. 게시 – user5872256

+0

을 편집하면 'javaNullPointException'이 반환됩니다. 문제가 토큰일까요? – user5872256

+0

아마도 - 내 답변에 코드를 사용하려면 API 토큰 (webhook과 다름)을 생성해야합니다. –