API를 사용하여 Slack의 모든 상호 작용을 CSV에 저장

6703 단어 슬랙루비api

할 일



Slack 채널 및 DM 메시지를 모두 저장하고 CSV로 내보냅니다.

사용하는 것



Slack API conversations.history 사용

흐름



Slack API에서 앱을 만들고 Auth Token을 얻습니다.

1. Create New App 선택







이름을 좋은 느낌으로 설정하고 검색하려는 DM 또는 채널이 있는 Slack의 Workspace를 선택합니다.

2. Permission 설정





그런 다음 Permission을 설정합니다.


conversations.history는 메시지를 검색하기 때문에 위의 4 가지 범위를 허용합니다.
덧붙여서 Token Scopes의 종류는 BotUser 가 있습니다만 API로 사용하는 경우는 User Token Scopes 를 사용해 주세요

Permissions > Scopes에서 사양서에 기재되어 있는 Required scope 4개를 찾아 설정합니다.

이것을 설정하지 않으면 API를 두드렸을 때의 응답이 missing_scope

3. Token 얻기



permission의 설정이 끝나면 Token을 취득합니다, 이미 취득해 버리고 있으므로 Token가 표시되고 있습니다만
얻지 못하면 Workspace에 app을 install하는 것 같은 버튼이 나오므로 거기를 누르십시오.



이 이미지에는 BotUser 전용 토큰이 표시되지만 UserToken을 사용하십시오.

4. 실제로 API를 두드려 메시지를 얻는다.



나머지는 실제로 API를 두드리고 메시지를 얻는 것입니다.
Default에서 100건까지만 한 번에 얻을 수 있으므로 Cursor 라는 페이지네이션 인수를 사용하여
조금씩 가져옵니다.


몇 번까지 한 번에 얻을 수 있는지 확인하지는 않았지만 상한선은있을 것입니다.


변수를 할당하는 것만으로 csv에 내보내는 rb 파일을 만들었으므로
원한다면 사용하십시오.

대입하는 변수는 3가지
AUTH_KEY = ''
CHANNEL_ID = ''
USER = { }
AUTH_KEY는 방금 얻은 토큰입니다.CHANNEL_ID는 Slack이 자동으로 생성 한 채널의 ID입니다.
슬랙을 열고 채널을 마우스 오른쪽 버튼으로 클릭하고 복사 링크를 선택하여 어딘가에 붙여 넣습니다.


그러면 https://YOUR_WORKSPACE.slack.com/archives/CHANNEL_ID 와 같이되므로 ID를 사용합니다.
USER 의 hash는 key에 유저의 ID, value에 유저의 이름을 가집니다

UserID 확인은 users.list이라는 API를 사용합니다.
여기에서는 자세한 것은 소개하지 않습니다🙇‍♂️
def messages
  messages_body = JSON.parse(call_api.body, symbolize_names: true)
  @has_more = messages_body[:response_metadata] && messages_body[:response_metadata][:next_cursor]
  messages_arr = []
  messages_body[:messages].each do |message|
    time =  Time.at(message[:ts].to_i).strftime('%Y-%m-%d %H:%M:%S')
    user = USER[message[:user].to_sym]
    text = message[:text]
    messages_arr << [time, user, text]
  end
  export_to_csv(messages_arr)
  messages unless @has_more.nil?
end

속의 처리로서는

이제 채널 메시지를 모두 csv로 내보낼 수 있습니다.
자연 언어 분석 및 로그로 저장하거나 조사 할 수 있습니다.

기밀 정보의 유출에 있어서도 주의해서 사용합시다

좋은 웹페이지 즐겨찾기