Blue Prismのユーザー会で軽く話題になったロボットの随時実行の件、
チャットからロボット起動の指示が出せると楽だなーと思い、試作してみました。
イメージ
作り方
ロボット準備
Blue Prismのコントロールルームを開きます。
利用可能なプロセスに今回動作させるロボットのプロセスが表示されていることを確認します。
Slackbot準備
PythonのslackbotライブラリでSlackボットを作る
のソースをベースにSlackbotを作ることにします。
slackbot_settings.py
のAPI_TOKENは後ほど設定します。
SlackApp登録・設定
SlackAPIの画面右上「Your App」をクリックし、アプリ管理画面に飛びます。
Create New Appをクリックします。
アプリ名とワークスペースを指定します。
するとこんな画面が出ます。
Add features and functionalityを開き、Botsをクリックします。
Add a Bot Userをクリックします。
Display nameとDefault usernameを設定し、Add Bot Userをクリックします。
左メニューのOAuth & Permissionsをクリックすると、以下画面になります。
Install App to Workspaceをクリックします。
インストールをクリックします。
Bot User OAuth Access Tokenをコピーします。
Slackbot設定・実装
Slackbotの設定に戻ります。slackbot_settings.py
のAPI_TOKENの箇所に、先ほどコピーしたBot User OAuth Access Tokenを記述します。
続いて、pluginsフォルダの中にあるmy_mention.py
を開きます。
pythonからAutomateC.exe経由でロボットを実行するためには、subprocessモジュールのインポートが必要なので注意してください。
なお、AutomateC.exeからのロボット実行については、以下記事参照。
Blue Prismのプロセスをコマンドラインから起動する
# my_mention.py
# coding: utf-8
from slackbot.bot import respond_to # @botname: で反応するデコーダ
from slackbot.bot import listen_to # チャネル内発言で反応するデコーダ
from slackbot.bot import default_reply # 該当する応答がない場合に反応するデコーダ
import subprocess #追加部分
#追加部分
@respond_to('交通費精算')
def mention_func(message):
message.reply('BluePrism 交通費精算ロボットを起動します') # 交通費精算
subprocess.call(["C:\XXXXXXX\Blue Prism Limited\Blue Prism Automate\AutomateC",
"/run","プロセス名", "/resource", "動作させるランタイム・リソース", "/user", "ユーザー名", "パスワード"]
以上で事前準備は完了です。
実行方法
Windowsの場合、コマンドプロンプトを開きます。
その後、Slackbotフォルダ直下まで移動し、
python run.py
を実行します。
すると、以下のようにstart slackbotと表示されます。これでslackbot起動中となります。
この状態で、Slackアプリを開きます。
そして、@アプリ名(今回はtestApp)を入力し、続けて交通費精算を入力した後、送信します。
すると、Slackbotが応答し、交通費精算ロボットが実行されます。
考察
今回はランタイムリソース決め打ちで実行しましたが、複数のユーザーが同時にロボットを呼び出した場合に備えて、リソースプールを指定するのが良さそうです。
他にも、エラー発生時やロボット実行完了時など、ロボットからSlackに通知を返す作りにすれば、より運用がラクになると思います。