GmailAPI+Ruby+Slack으로 메일 확인 촉구 BOT!
14175 단어 신인 프로그래머 응원bot슬랙루비gmail
처음에
메일 확인이 충분히 되어 있다고 하는 분은 문제 없기 때문에 본 기사는 필요 없습니다.
그리고 Google 크롬에도 좋은 확장 기능이 많이 있으므로, 그쪽을 검토하는 것이 좋다고 생각합니다. (실제로 후회했습니다.)
대상
신졸. 나처럼 메일을 확인할 수 없어, 「에? 무슨 일인가?」가 되는 사람
팁
참고해 주실 때는
미리 개인 라벨을 설정하십시오.
Gmail API
자격증명 취득
우선은 Google API Console에 들어가,
프로젝트를 만듭니다.

입력하면 GmailAPI를 클릭하여 사용 설정합니다.

왼쪽 막대에서 자격 증명을 선택하여 OAuth 클라이언트 ID를 만듭니다.

서비스명을 결정하라고 하므로 OAuth 동의 화면에서 설정한다.
그 후 적당하게 Android등을 선택하면(여기에서는 적당히 그 외) 작성할 수 있습니다.
아래 이미지가 나오면 성공입니다.

Access Token 얻기


DL 한 파일을 client_secret.json 등으로 두고 저장합니다.
gem install google-api-client
합니다.
Ruby Quickstart 에서 소스 코드를 당겨서 실행. (소스 파일은 client_secret.json과 같은 위치에서 실행하십시오.)
그런 다음 출력된 URL을 브라우저에서 붙여넣고 전환합니다.
전환하면 "이 코드를 복사하고 응용 프로그램으로 전환하여 붙여 넣으십시오"아래에 코드가 나타나므로 그것을 삼가 해 둡니다.
아래 명령을 두드려 access_token과 refresh_token을 얻습니다.
curl -d client_id={クライアントID} -d client_secret={クライアントシークレット} -d redirect_uri=urn:ietf:wg:oauth:2.0:oob -d grant_type=authorization_code -d code={控えておいたコード} https://accounts.google.com/o/oauth2/token
access_token은 최악이 아니어도 좋지만 refresh_token은 삼가해 둔다.
Slack API
준비
mkdir local_bots
cd local_bots
htps : // 아피. scck. 코m/우ぇb에서 Token을 가져옵니다.
gem install slack-api
두드려.
루비
우선 소스 올립니다.
여기가 시보계입니다. (이것만으로 좋으면 GmailAPI를 설정하지 않아도 문제 없습니다.)
sample1.rb
#!/usr/bin/ruby
require "slack"
require "json"
Slack.configure do |config|
config.token = 'Slack Apiで取得したトークン'
end
now = Time.now.hour
if (now < 9 || 15 < now)
exit(0)
end
text = case now
when 9 then '始業前メール確認の時間だよ!'
when 10 then 'コーヒー飲みつつ、メール確認だよ!'
when 11 then 'そろそろメール確認だよ!'
when 12 then 'もうお昼だよ!メールもいっぱいだよ!'
when 13 then 'そろそろランチの時間です!'
when 14 then '午後も頑張るぞ!メール確認しようね!'
when 15 then '今日のおやつは何かな!?メールも確認してね!'
end
now -= (now > 12) ? 12 : 0;
emoji = ":clock#{now}:"
Slack.chat_postMessage(username: "メール確認bot", text: text, channel: 'ルーム名', icon_emoji: emoji)
여기가 개인 메일 확인입니다.
curl -H "Authorization: Bearer {先ほど取得したアクセストークン}" https://www.googleapis.com/gmail/v1/users/me/labels
로 라벨 일람을 취득할 수 있으므로, 그 중에서 라벨의 ID를 삼가해 둡니다.
sample2.rb
#!/usr/bin/ruby
require "slack"
require "json"
def getToMeMailInfo(access_token)
# net/httpがうまくいかないのでcurlベタ打ち助けて
f = `curl -H "Authorization: Bearer #{access_token}" https://www.googleapis.com/gmail/v1/users/me/labels/未読件数を表示したいラベルのID`
return JSON.load(f)
end
Slack.configure do |config|
config.token = 'Slack APIで取得したトークン'
end
# clientデータの取得
# この後取得するaccess_tokenとrefresh_token
# とclient_IDとclient_secretを一つのファイルで管理
client_info_json = '/path/to/infoファイル'
client_data = open(client_info_json) do |io|
JSON.load(io)
end
result = getToMeMailInfo(client_data['token'])
# access_tokenは定期的にリセットされる
# access_tokenがリセットされた時の処理
if (result['threadsUnread'] == nil)
response = `curl -d "client_id=#{client_data['client_id']}&client_secret=#{client_data['client_secret']}&refresh_token=#{client_data['refresh']}&grant_type=refresh_token" https://accounts.google.com/o/oauth2/token`
result = JSON.load(response)
client_data['token'] = result['access_token']
open(client_info_json, 'w') do |io|
JSON.dump(client_data, io)
end
result = getToMeMailInfo(client_data['token'])
end
if (result['threadsUnread'] > 0 )
Slack.chat_postMessage(username: "個人宛確認bot", text: "ねぇどうして確認してくれないの?****宛のメールが#{result['threadsUnread']}件来てるよ?", channel: 'ルーム名')
end
client_info.json
{
"client_id":"クライアントID",
"client_secret":"クライアントSecret",
"token":"アクセストークン",
"refresh":"リフレッシュトークン"
}
나중에는 crontab이나 launchd 등으로 원하는 정시 실행을 설정하면 OK!!
↓이런 느낌이 됩니다.

참고
Reference
이 문제에 관하여(GmailAPI+Ruby+Slack으로 메일 확인 촉구 BOT!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/morimorim/items/a9dfccda034d8d8c78be텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)