Edited at

SlackのIncoming WebHooksを使わないで指定のChannelにPOSTする方法

More than 3 years have passed since last update.


SlackのIncoming WebHooksを使わないで指定のチャンネルにPOSTする方法

Slackを無料枠で使っていて、integration limitに到達して、あーんもうってなっちゃった人向けです。

無料枠でもintegration色々試したいですよね!? Incoming WebHooksに貴重なintegration枠を使うのがもったいない!

という貧乏精神ですw

インテグレーションいっぱい.PNG


目次


  1. 準備

  2. PythonでPOSTしてみる


準備


以下のページにアクセスして、個人ごとのtokenを取得します。


https://api.slack.com/web

上記ページの一番下のAuthenticationの項目になります。

認証前.PNG

画像のCreate token をクリックするとユーザーごとのtokenが生成されます。

あとで使うので、メモしておきます。

認証トークン発行済.PNG


サンプルで適当に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することができます!

やったね!