SlackのIncoming WebHooksを使わないで指定のチャンネルにPOSTする方法
Slackを無料枠で使っていて、integration limitに到達して、あーんもうってなっちゃった人向けです。
無料枠でもintegration色々試したいですよね!? Incoming WebHooksに貴重なintegration枠を使うのがもったいない!
という貧乏精神ですw
目次
- 準備
- PythonでPOSTしてみる
準備
以下のページにアクセスして、個人ごとのtokenを取得します。
https://api.slack.com/web
上記ページの一番下のAuthentication
の項目になります。
画像のCreate token
をクリックするとユーザーごとのtokenが生成されます。
あとで使うので、メモしておきます。
サンプルで適当にChannelを作ります。
tokenを発行したチームのSlackから、適当にChannelを作ります。
今回は、sample
というChannelを作ったとします。
既存のChannelにもPOSTすることができるので、新しく作らなくても大丈夫です。
これで準備は完了です!
PythonでPOSTしてみる
以下のページにAPIメソッドの一覧があります。
https://api.slack.com/methods
今回は、この一覧のchat.postMessageメソッドを使います。
sample.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
#proxyの設定、あれば
PROXIES = {
"http": "http://hogehoge:port/",
"https": "https://fugafuga:port/",
}
class SlackWrapper:
#slack
__token = 'your_slack_token' #先ほど取得したtokenをここに書く
__channel = '#sample' #POSTしたいチャンネル名
__postSlackUrl = 'https://slack.com/api/chat.postMessage' #ここは固定
__icon_url = 'iconのURL' #Slackに投稿するアイコンのURLを指定する。
__username = 'sample' #Slackに投稿するユーザー名
def __init__(self):
pass
def post(self, posttext):
params = {'token': self.__token,
'channel': self.__channel ,
'text':posttext,
'icon_url': self.__icon_url,
'username':self.__username,
'unfurl_links': 'false'
}
# SlackにPOSTする
r = requests.post(self.__postSlackUrl, params=params, proxies=PROXIES)
# proxyがないとき
# r = requests.post(self.__postSlackUrl, params=params)
if __name__ == '__main__':
slack = SlackWrapper()
slack.post('こんにちは! Slack!')
これでIncoming WebHooksを使わないで指定のチャンネルにPOSTすることができます!
やったね!