API를 사용하여 Slack의 모든 상호 작용을 CSV에 저장
할 일
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의 종류는
Bot
와 User
가 있습니다만 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로 내보낼 수 있습니다.
자연 언어 분석 및 로그로 저장하거나 조사 할 수 있습니다.
기밀 정보의 유출에 있어서도 주의해서 사용합시다
Reference
이 문제에 관하여(API를 사용하여 Slack의 모든 상호 작용을 CSV에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/reiya018/items/1942c00c7e792cbff0f0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)