RPAのロボを自然な会話でSlackから動かす Part 1
この記事では、SlackとUipathで作成したRPA用のロボットをつなげて、Slack上で自分の好きな言葉に反応させて、RPAのロボットを起動することができます。例えば、会社の会議予約を行うようなロボットを作成しておき、Slack上(いつでもどこでも)で、Botに対して、会議室の予約をお願いすることが可能になります。もし、この内容を読んで興味を持たれた場合、より詳細に説明しますのでコメントまたは、問い合わせをお願いいたします。
利用する技術
- Uipath
- Python / python-slackclient
- Slack / Slack-Api
- Dialog Flow
作成までの流れ
- RPAのロボを作成し、起動用のバッチファイルを作成する
- Slack上でBotを作成し、ローカルで作成したPythonと接続する
- 特定のKeywordに反応させて、ロボ起動用のバッチを実行させる。
- Dialog Flowを使って、自然な言語処理を可能にする。
開発前提条件
以下の条件は整っている前提です。この記事では説明を省略します。
- Slack のアカウント作成済み
- ローカル端末のPython のインストール済み
- Uipathのロボット作成済み
1.RPAロボの作成と起動用バッチファイルの作成
サンプルのロボットを作成し、以下のようなバッチファイルを作成します。
下記で実行するPythonと同じディレクトリに配置する。
RobotStart.bat
"C:\Program Files (x86)\UiPath\Studio\UiRobot.exe" -f "%HOMEPATH%\Documents\UiPath\MyRovoto\Main.xaml"
2.Slack上でBotを作成し、ローカルで作成したPythonと接続する
以下のブログの”Creating a Slack Application”のChapterを参考にPythonと接続するためのBotを作成する。
A Guide to Building an Intelligent Chatbot for Slack using Dialogflow API
3.特定のKeywordに反応させて、ロボ起動用のバッチを実行させる
上記のステップで利用したPythonのソースを変更して、
def handle_command(slack_api, command, channel): のメソッド内に、以下の”elif”のような記述を加える。これにより、Slack上で、XXXXXとメッセージを入力したらそれをトリガーにして、作成したバッチが起動される。
def handle_command(slack_api, command, channel): if command.lower().startswith('do') or command.lower().startswith('what'): slack_api.rtm_send_message(channel, 'Yes, code me further to do that!') elif command.lower().startswith('XXXXX') or 'XXXXX' in command.lower(): cmd = "RobotStart.bat.bat" slack_api.rtm_send_message(channel, 'Now the robot will run for you') result = subprocess.check_output(cmd.split()) return_message = result.split(':')[1].split(',')[0] if return_message != "null": slack_api.rtm_send_message(channel, return_message) else: print 'Invalid Command: Not Understood' slack_api.rtm_send_message(channel, 'Invalid Command: Not Understood')
ここまでやれば、自分で作成したロボットをSlack上から実行できるようになります。
4.Dialog Flowを使って、自然な言語処理を可能にする。
乞うご期待。すみません、力尽きたので続きは今度で。