こんにちは!エンジニアのまさです。
最近、会社で利用するためのSlackBotを作成する機会がありました。時間をかけずに簡単に実装する方法を模索し、SlackBoltを利用することにしました。その結果、簡単にSlackBotを実装することができました。今回はその内容を紹介したいと思います。
はじめに
Slackは、ビジネスチャットとして広く使われており、多くの企業で導入が進んでいると思います。私の会社でもSlackをコミュニケーションツールとして利用しています。
Slackはそのまま利用してももちろん便利ですが、Slackアプリケーションを作成することで更に便利にSlackを活用することが可能です。Slackアプリケーションの作成というとハードルが高いイメージがあるかもしれませんが、SlackBoltを利用することで、簡単にアプリケーションの作成をおこなうことができます。
Slackアプリケーションでできること
Slackアプリケーションには多くの機能があります。以下は、その一例です。
チャットボットの作成
Slackアプリケーションを使用することで、簡単にチャットボットを作成することができます。チャットボットは、簡単なタスクの自動化や、情報の収集、ユーザーとの対話、など多くの用途に利用されます。
スケジュール管理
Slackアプリケーションを使用することで、スケジュールを管理することができます。例えば、チャットボットを使用して、会議のスケジュール調整を行うことができます。
ファイル共有
Slackアプリケーションを使用することで、ファイルの共有が簡単にできます。例えば、Google DriveやDropboxとの連携を行い、ファイルの共有を行うことができます。
通知の送信
Slackアプリケーションを使用することで、通知を送信することができます。例えば、重要なイベントが発生した場合に、Slack上で通知を行うことができます。また、チャットボットを使用して、自動的に通知を送信することもできます。
Slackアプリケーションを作成することで、Slackの利便性を更に高めることができます。 この記事では、特にチャットボットの作成について紹介します。
SlackBoltとは?
SlackBoltは、SlackのAPIを使用して、簡単にSlackアプリケーションを作成することができるフレームワークです。このフレームワークは、特にWebSocketを使用する場合に優れたパフォーマンスを発揮します。
SlackBoltを使うことで、Slackアプリケーションを簡単に開発できます。Slackアプリケーションは、ビジネスチャットとして広く使用され、多くの企業で導入されています。Slackアプリケーションを利用することで、Slackをより便利に活用できるだけでなく、ビジネスプロセスの改善や生産性向上にもつながります。
特に、WebSocketを使用する場合には、SlackBoltのパフォーマンスが優れています。WebSocketは、リアルタイム通信を実現するための技術であり、HTTPよりも高速で効率的です。SlackBoltは、WebSocketを使用して、SlackアプリケーションとSlackのリアルタイムAPIの間で通信を行います。WebSocketを使用することで、Slackアプリケーションは、Slack上のイベントに対してすばやく反応することができます。
この記事では、SlackBolt for PythonのWebSocketを使って、簡単にSlackアプリケーションを作成する方法について説明します。SlackBolt for Pythonのマニュアルはこちらから参照できます。
Slackアプリケーションの登録
まずは作成するSlackアプリケーションの登録を行います。Slackにログインした状態でこちらのページ(slack api)にアクセスし、ページ上部の「Your Apps」をクリックします。
アプリケーションの編集画面に遷移するので「Create New App」をクリックします。
作成するアプリケーションのタイプを選択します。シンプルにアプリケーションを作成する場合は「From scratch」、YAML等でmanifestを指定する場合は「From an app manifest」を選択します。
次にアプリケーション名の設定とこのアプリケーションを使用するWorkspaceを選択します。 項目を入力後「Create App」を押下することでアプリケーションの登録が完了します。
Slackアプリケーションの構成設定
Slackアプリケーションを作成すると下記の画面からアプリケーションに必要な情報の取得や設定が可能になります。
まずはチャットボットアプリケーションを作成するために必要な情報を取得するため、左サイドバーの「OAuth & Permissions」をクリックし、「Bot Token Scopes」セクションまで下にスクロールします。
「Add an OAuth Scope」をクリックし、「chat:write」というスコープを追加します。
スコープ追加後にページ最上部の「Install App to Workspace」をクリックします。
アプリケーションのインストールが完了するとOAuth&Permissions画面から「Bot User OAuth Access Token」を確認できるようになります。これは後で実際にアプリケーションを作成する際に必要になりますのでメモ等に保存しておきましょう。
「Basic Information」のページを開き、「App-Level Tokens」の「Generate Token and Scopes」をクリックしてトークンを作成します。このトークンに「connections:write」のスコープを追加します。ここで作成されたトークンも後ほどアプリケーションを作成する際に必要になりますので控えておいてください。
左サイドメニューの「Socket Mode」を選択し、「Enable Socket Mode」を有効にします。
ここまででアプリケーションの構成の設定は完了です。
チャットボットアプリケーションの実装
登録したアプリケーションの実体となるpythonアプリケーションを実装します。 WebSocketアプリケーションのクライアント実装となるので、インターネットに接続可能なPC上でpythonアプリケーション実装することで動作させることが可能です。サーバーアプリケーションではないのでドメインを取得したりする必要はありません。
アプリケーションの実装は以下のようになります。
import re
import os
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
# BotTokenの設定
app = App(token=os.getenv("SLACK_BOT_TOKEN"))
@app.message(re.compile(r"^!bot ((.|\\s)*)$"))
def handle_message(message, say, context):
# ユーザー名を取得
user = message['user']
# 会話メッセージを取得
talk = context["matches"][0]
# メッセージを投稿
say(f"こんにちは! <@{user}>さん、あなたの会話内容は'" + talk + "'です")
# アプリケーションの実行
if __name__ == "__main__":
SocketModeHandler(app, os.getenv("SLACK_APP_TOKEN")).start()
このプログラムを見ていただけるとわかるとおり、先ほどのSlackアプリケーション設定時に取得したトークンを2つ設定しています。 一つがOAuth&Permissions画面で取得した「Bot User OAuth Access Token」です。もう一つは「Basic Information」のページで取得した、「App-Level Tokens」になります。
プログラムを実行する際は環境変数「SLACK_BOT_TOKEN」に「Bot User OAuth Access Token」を、「SLACK_APP_TOKEN」に「App-Level Tokens」を設定します。
export **SLACK_BOT_TOKEN=xoxb-XXXXXXXXXXX
export SLACK_APP_TOKEN=xapp-XXXXXXXXXXX**
プログラムは以下のようにして起動します。
python app.py
プログラム起動後、Slack側で登録したアプリケーションをチャンネルに追加します。 当該チャンネルで以下のようにメッセージを送信します。
!bot テストメッセージ
このメッセージにボットが反応し「こんにちは!@XXXXXさん、あなたの会話内容は’テストメッセージ’です」とメッセージが投稿されます。
以上でSlackのチャットボットアプリケーションの実装は完了です!
おわりに
いかがでしたでしょうか? 今回のサンプルのチャットボットアプリケーションでは、ユーザーから受け取ったメッセージをそのまま返すだけでした。そのため、業務を大きく効率化するものではありませんでした。しかし、受け取ったメッセージから様々な処理を行うように調整することで、業務を効率化するアプリケーションを作成することが可能です。
実際に運用する際には、アプリケーションを起動しておくための環境が必要になると思います。しかし、サーバーアプリケーションではないため、環境の選択の幅が広がると思います。Slackを利用している方は、Slackアプリケーションの活用を検討してみることをおすすめします。
<おすすめ記事・メディア>
・業務効率化を加速させるITツールについてはこちらも参考にしてみてください
・パソコンが苦手な方はパソコン教室を利用されると良いです。 通常は、専門ソフトを教えてくれるパソコン教室は少ないですがパソコン教室パレハでは個別のレッスンも実施されています。詳細はパソコン教室パレハの公式サイトをご覧ください。