Pythonでslack-sdkを用いてSlackにメッセージを送信する

Pythonでslack-sdkを用いてSlackにメッセージを送信してみます。

今回はslack-sdkを用います。このライブラリは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。また、Slack APIを呼び出す場合には、OAuthトークンが必要となりますので、事前に取得しておく必要があります。なお、今回取得したOAuthトークンでは、スコープの設定で「chat:write」という権限を与えています。この権限がないと、Slackにメッセージを送信できません。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■slack-sdkを用いてSlackにメッセージを送信する

では、早速slack-sdkを用いてSlackにメッセージを送信するスクリプトを書いていきます。

■コード

import os
from slack_sdk import WebClient

def send_message_send():
    client = WebClient(token=os.environ['SLACK_BOT_TOKEN'])
    response = client.chat_postMessage(channel='#テスト投稿',text="こんにちは!テスト投稿です!")
    return print(respon)

if __name__ == "__main__":
    send_message_send()

「import」でPythonの標準ライブラリであるosモジュールを呼び出します。その後、「from import」でslack_sdkのWebClientを呼び出します。

その後、def文を用いて、send_message_send()という関数を定義します。定義した関数が呼び出された時に実行される処理としては、clientという変数を定義し、その中でWebClient()を用います。括弧内には、引数,パラメータを渡します。この時にosモジュールを用いてOAuthトークンを環境変数として渡す。なお、今回は「User OAuth Token」を用います。これでデータを送信することができるようになります。

token = 'xoxb-***-***-****'

ちなみに上記のように変数を定義して、OAuthトークンを渡す方法は推奨されていません。

データ送信をできるようにした後は、responseという変数を定義し、その中でchat_postMessage()を用います。括弧内には、第1の引数,パラメータとしてメッセージを送信するチャンネルを渡します。今回は事前に作成しておいた「#テスト投稿」を引数,パラメータとして渡します。第2の引数,パラメータとして送信するメッセージの本文を渡します。今回は日本語の文章を渡します。これでメッセージが送信されます。最後にreturnとしてresponseを返します。返されたresponseの情報をprint()で出力される処理となります。

最後に「if __name__ == “__main__”:」を用い、send_message_send()を呼び出します。

■実行・検証

このスクリプトを「sla_test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

{'ok': True, 'channel': '******', 'ts': '************', 'message': {'bot_id': '********', 'type': 'message', 'text': 'こんにちは!テスト投稿です!', 'user': '************', 'ts': '***********', 'app_id': '***********', 'team': '*********', 'bot_profile': {'id': '***********', 'app_id': '************', 'name': 'test-1', 'icons': {'image_36': 'https://a.slack-edge.com/80588/img/plugins/app/bot_36.png', 'image_48': 'https://a.slack-edge.com/80588/img/plugins/app/bot_48.png', 'image_72': 'https://a.slack-edge.com/80588/img/plugins/app/service_72.png'}, 'deleted': False, 'updated': ********, 'team_id': '*******'}, 'blocks': [{'type': 'rich_text', 'block_id': '****', 'elements': [{'type': 'rich_text_section', 'elements': [{'type': 'text', 'text': 'こんにちは!テスト投稿です!'}]}]}]}}

実行してみると、上記のメッセージが出力されます。

出力後、Slackを確認すると、指定したチャンネルに指定したメッセージが投稿されていました。

コメント

タイトルとURLをコピーしました