本記事ではSlackのAPIトークンを取得する手順について説明します。
APIトークンの取得はSlackbotを動かすために必須です。
Slackbotのコードを書く前に必ず取得しておきましょう。
APIトークンは「Hubot」をSlackにインストールするだけで取得可能です。
非常に簡単な手順なので是非やってみてください。
本記事の内容は以下の通り。
・SlackbotのAPIトークン取得手順
・APIトークンを環境変数に定義してPythonで読み込む方法
目次
SlackbotのAPIトークン取得手順
動画を作ってみました。
APIトークンの取得手順
具体的な手順は以下の通りです。
1.SlackのAppのページに移動します。
https://xxxxxxxxx.slack.com/apps
また、以下の手順でAPPページに移動することも可能です。
4.名前を入力して「Hubotインテグレーションの追加」をクリックします。
「HUBOT_SLACK_TOKEN=」以降の内容がAPIトークンです。
取得したAPIトークンについて
APIトークンはネット上で公開されると無効化されます。
GitHubのPublicレポジトリにBotのコードを公開する場合には、「OSに環境変数として定義する」、「引数として受け取る」などコード上にAPIトークンを記載しないようにしましょう。
また、APIトークンは1つのBotにつき一つ必要です。
複数のワークスペースでBotを起動したい場合はそれぞれのワークスペースでAPIトークンを取得する必要があります。
Slackbotのアイコン画像を変更する
Slackbotのデフォルトのアイコン画像はオレンジ色のBotの顔ですが、アイコン画像は変更することが可能です。
手順は以下の通り。
1.Botの設定を開きます。
2.スクロールすると「アイコンをカスタマイズする」という項目が出てきます。
3.アイコンにはSlackの絵文字または画像をアップロードして設定することができます。
画像を変更したら「インテグレーションの保存」をクリックします。
以上で画像の変更は完了です。
関連記事>>SlackbotをPythonで作成しよう
関連記事>>SlackbotをJavaScriptで作成しよう
Slackbot+PythonまとめTOP>>Slackbotの作り方マニュアル〜Python編〜
APIトークンを環境変数に定義してPythonで読み込む方法
APIトークンの値をソースコードに直接書き込んでしまうとBotの数だけ設定ファイルを用意する必要があるため不便です。
また、APIトークンは非公開情報であるため、githubにソースコードをアップしたい場合にも支障があります。
(APIトークンを公開するとそのAPIトークンは使えなくなります。)
一つのソースコードで複数のAPIトークンを扱えるようにする方法としては「環境変数にAPIトークンを定義しておき、Pythonで読み込む方法」がおすすめです。
本記事では「osライブラリで環境変数を読み込む方法」と「環境変数を引数として受け取る方法」の2パターンについて紹介します。
※環境変数の設定方法がわからない場合はググってください。
osライブラリで環境変数を読み込む方法
Pythonで環境変数を取得する場合は「os」ライブラリの「environ()」メソッドを使用します。
以下は「BOT_API_TOKEN」という環境変数を定義している場合の記述例です。
1 2 3 | import os token = os.environ["BOT_API_TOKEN"] print(token) |
上記内容を「slackbot_settings.py」に実装します。
1 2 3 4 5 6 7 8 9 | import os token=os.environ["BOT_API_TOKEN"] # 知らない言葉を聞いた時のデフォルトの応答 DEFAULT_REPLY = "その言葉の意味は知りません" # 外部ファイルを読み込む。botmodule.pyを読み込んでおく PLUGINS=[ 'slackbot.plugins', 'botmodule', ] |
環境変数を引数として受け取る方法
別の方法としては環境変数に定義したAPIトークンを引数として受け取る方法があります。
◆引数なしの起動方法
◆引数ありの起動方法
ファイルの後にスペースで区切って文字を追加入力することで引数を指定することが可能。
環境変数を指定する場合は、UNIX系のOSやMacOSの場合は「$マーク」をつけます。
Windowsの場合は環境変数を"%"で囲みます。
2個以上の引数を指定することが可能です。
起動時に受け取った引数はsysライブラリの「argv」に格納されています。
1 2 3 4 | import sys print("#", "値") for i in range(len(sys.argv)): print(i, sys.argv[i]) |
引数を3つ指定して上記コードを実行すると以下の結果が得られます。
# 値
0 test3.py
1 argument1
2 argument2
3 3
上記の通りargv[0]にはファイル名が入り、それ以降に引数が入ってきます。
◆記述例
以上を踏まえて「slackbot_settings.py」を記述すると以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import sys # 引数からトークンを受け取る if len(sys.argv) > 1: API_TOKEN = sys.argv[1] else: # 引数が足りない場合はメッセージを表示して終了 print("引数にトークンを指定してください") # プログラムを終了する exit() DEFAULT_REPLY = "その言葉の意味は知りません" PLUGINS = [ 'slackbot.plugins', 'botmodules.conversation', ] |
◆起動方法
トークンまたはトークンを定義した環境変数を指定します。
以上、APIトークンを環境変数から受け取る方法でした。
続けてSlackbotを作成する場合は「SlackbotをPythonで作成しよう」をお読みください。
Slackbot+PythonまとめTOP>>Slackbotの作り方マニュアル〜Python編〜