API를 사용하여 Slack의 모든 상호 작용을 CSV에 저장
할 일
Slack 채널 및 DM 메시지를 모두 저장하고 CSV로 내보냅니다.
사용하는 것
Slack API conversations.history 사용
흐름
Slack API에서 앱을 만들고 Auth Token을 얻습니다.
1. Create New App 선택
![](https://s1.md5.ltd/image/6b4ddebb8622a6003976d8215193bc68.png)
![](https://s1.md5.ltd/image/5db822c23f8e655a69173ddf3c79fa9e.png)
이름을 좋은 느낌으로 설정하고 검색하려는 DM 또는 채널이 있는 Slack의 Workspace를 선택합니다.
2. Permission 설정
![](https://s1.md5.ltd/image/78355460d22afe48e236e9d8edf70ce5.png)
그런 다음 Permission을 설정합니다.
![](https://s1.md5.ltd/image/047c6ccd22e96c16395747071fac8250.png)
conversations.history는 메시지를 검색하기 때문에 위의 4 가지 범위를 허용합니다.
덧붙여서 Token Scopes의 종류는
Bot
와 User
가 있습니다만 API로 사용하는 경우는 User Token Scopes
를 사용해 주세요![](https://s1.md5.ltd/image/7f5d5f924c066da4d20fc5ec7b341b91.png)
Permissions > Scopes에서 사양서에 기재되어 있는
Required scope
4개를 찾아 설정합니다.이것을 설정하지 않으면 API를 두드렸을 때의 응답이
missing_scope
3. Token 얻기
permission의 설정이 끝나면 Token을 취득합니다, 이미 취득해 버리고 있으므로 Token가 표시되고 있습니다만
얻지 못하면 Workspace에 app을 install하는 것 같은 버튼이 나오므로 거기를 누르십시오.
![](https://s1.md5.ltd/image/6cf44052df36dce134a1956ba1444186.png)
이 이미지에는 BotUser 전용 토큰이 표시되지만 UserToken을 사용하십시오.
4. 실제로 API를 두드려 메시지를 얻는다.
나머지는 실제로 API를 두드리고 메시지를 얻는 것입니다.
Default에서 100건까지만 한 번에 얻을 수 있으므로
Cursor
라는 페이지네이션 인수를 사용하여조금씩 가져옵니다.
![](https://s1.md5.ltd/image/6d3a379dd76be4e4106c582d0f5fef86.png)
몇 번까지 한 번에 얻을 수 있는지 확인하지는 않았지만 상한선은있을 것입니다.
![](https://s1.md5.ltd/image/7ae29719234ae6068f19248e108a71cb.png)
변수를 할당하는 것만으로 csv에 내보내는 rb 파일을 만들었으므로
원한다면 사용하십시오.
대입하는 변수는 3가지
AUTH_KEY = ''
CHANNEL_ID = ''
USER = { }
AUTH_KEY
는 방금 얻은 토큰입니다.CHANNEL_ID
는 Slack이 자동으로 생성 한 채널의 ID입니다.슬랙을 열고 채널을 마우스 오른쪽 버튼으로 클릭하고 복사 링크를 선택하여 어딘가에 붙여 넣습니다.
![](https://s1.md5.ltd/image/143cce344408ec48aed8f316faede6e4.png)
그러면
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.)