豊橋技術科学大学の近藤です。
Slackで自動的に発言するBotを作る機会があったので、
簡単にまとめてみました。
POSTに用いるURLの取得
Webhook URL :
Configure Integrations(左チーム名のドロップダウン)
-> Incomig WebHooks(下の方)
-> チャンネルを選んで、Add Incoming Webhook Integrationを選択
-> Webhook URL
チャンネルは、どれを選んでも後で指定できる
要するにデフォルトがこのページで設定できる
チャンネルIDの取得
全てのチャンネルのWebhook URLを取得するのは面倒。
チャンネルのIDを取得すると、一つで大丈夫。
手動で取得:
チャンネル名のドロップダウン
-> Add a service integration... のURLに書いてある
これが一番速いと思う
POSTして取得:
(例:'#channel', '@username')
発言する
POSTするデータ:
attachmentsを使うと、テキストの左側にラインがつく。色を変えたりできる。
このデータをjsonに変換して送ると、指定したチャンネルに出力される。
requests.post(Webhook URL, data=json.dumps(data))
以上、slack bot作成まとめでした。
Slackで自動的に発言するBotを作る機会があったので、
簡単にまとめてみました。
POSTに用いるURLの取得
Webhook URL :
Configure Integrations(左チーム名のドロップダウン)
-> Incomig WebHooks(下の方)
-> チャンネルを選んで、Add Incoming Webhook Integrationを選択
-> Webhook URL
チャンネルは、どれを選んでも後で指定できる
要するにデフォルトがこのページで設定できる
チャンネルIDの取得
全てのチャンネルのWebhook URLを取得するのは面倒。
チャンネルのIDを取得すると、一つで大丈夫。
手動で取得:
チャンネル名のドロップダウン
-> Add a service integration... のURLに書いてある
これが一番速いと思う
POSTして取得:
- API Tokenを取得 https://api.slack.com/web
- POSTして、jsonのデータを取得
XXX - データを取り出す
r = requests.get(Webhook URL, params={'token': api_token}, verify=False)↵ for channel in json.loads(r.content)['channels']: id = channel['id'] name = channel['name']
(例:'#channel', '@username')
発言する
POSTするデータ:
data = {
'channel': CHANNEL_ID, # ここに、チャンネル名、ユーザ名を指定してもOK
'username': 'Mr.BOT',
'icon_url': Icon URL,
'icon_emoji': ':smile:', #(チートシート:http://www.emoji-cheat-sheet.com/)
'text': 'hoge',
'attachments': [attachment, ],
}
iconはemojiが優先、attachments 内のテキストは、textの下に出る。attachmentsを使うと、テキストの左側にラインがつく。色を変えたりできる。
attachment = {
'fallback': 'fuga', # attachmentsの表示ができない端末用の文字列
'pretext': 'piyo', # attachmentの上にtextと同じように出力
'color' : '#00FF00', # Hexのほかに、'good', 'warning', 'danger'が使用可能
'title': 'タイトル',
'title_link': URL, # タイトルにつけるリンク
'text' : 'hogehoge',
'fields': [field, ],
# 著者の表示など、引用で使えるもの
'author_name' : '@Mr.Author',
'author_link' : URL, # ユーザ名につけるリンク 名前がないと使えない
'author_icon' : Icon URL, # emojiは使えない 名前がないと使えない
}
textの下に、fieldsに入れたフィールドが展開される。field = {
'title': 'フィールドタイトル',
'value': 'フィールドテキスト',
'short': True, # Trueだと、2段組みになる
}
このデータをjsonに変換して送ると、指定したチャンネルに出力される。
requests.post(Webhook URL, data=json.dumps(data))
以上、slack bot作成まとめでした。
このコメントはブログの管理者によって削除されました。
返信削除