slackで投稿内容を自動翻訳する(2/5)Pythonプログラムからメッセージを投稿

前回に引き続きslackで投稿内容を自動翻訳の2回目。
今回はPythonプログラムでslackで投稿する方法を見ていきます。

1.Pythonからgoogle翻訳(googletransの使い方)
2.Pythonプログラムからメッセージを投稿(今回)
3.slackにおけるメッセージの構造
4.投稿イベントを検知して投稿(準備中)
5.投稿されたメッセージを翻訳して投稿(準備中)


2-1.slack API用tokenの取得
Pythonプログラムからslackにアクセスするにはtoken(実体は単なる文字列)が必要です。
以下からtokenを作成/取得します。
Legacy tokens

ワークスペースにログインした状態で上記ページにアクセスすると、
ページ中断に以下の「Create token」ボタンがあるのでこれをクリックします。


そうするとボタン左側のToken列にTokenが生成されますのでこれを控えておきます。

なお、これはLegacy tokenとされ、比較的なんでもできてしまうトークンのため、よりセキュアに利用する場合にはこちらを参照のこと。

※ 私はLegacy tokenを利用して作成してしまったのでここでは新しい方は使ってません。。。


2-2.slackclientパッケージのインストール

slack APIにアクセスするにはパッケージを利用しなくても可能ですが、
ココは他人の力を借りて進めたいと思います。

slackclientというパッケージを利用します。
pipでイストールが可能です。
> pip install slackclient


2-3.channel idを取得

slackに投稿するするにはチャネルを指定する必要がありますが、
チャネル名(e.g. general)を直接指定することができず、
必ずchannel idを指定する必要があるので、まずはそのidを取得します。

簡単に取得するには以下ページにアクセスします。
slack API channels.list

このページの「Tester」タブにある「Test Method」をクリックすると
文字列(JSON形式)が表示されるので、その中から以下の表示を見つけます。
            "id": "C6MQ9GM11",
            "name": "general",
これはchannel「general」のidは「C6MQ9GM11」であることを表しています。
このidの文字列を控えておきます。

もしくは以下のURLをブラウザで開けば同じ結果が得られます。
https://slack.com/api/channels.list?&pretty=1&token=<先ほど取得のtoken>


2-4.メッセージを投稿

ここまでくれば後はPythonプログラムを書くだけ。
以下のプログラムを実行します。
from slackclient import SlackClient

slack_client = SlackClient('<取得したslack API token>')
channel_id = "<取得したchannel id>"

if __name__ == '__main__':
    slack_client.api_call(
        "chat.postMessage",
        channel = channel_id,
        text = "hello world"
    )

そうするとslack上に以下の通りメッセージが投稿されます。



ココでは"chat.postMessage"というSlackのAPIを利用しています。
APIの仕様はこちら。
chat.postMessage

このページの「Arguments」に記載の内容を引数に取れます。
今回は投稿する"channel"と投稿内容の"text"のみ指定してますが、
その他に、例えば、表示するアイコンは"icon_emoji"という引数を利用すると指定できることが確認できます。

今回はここまで。

コメント

このブログの人気の投稿

Python SQLite スレッド間でコネクションの使いまわしは出来ない

slackでgeneralの投稿を全削除する

Google location history(JSON形式)をCSVファイルにする