4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

UiPathのチャットサービスを使ってワークフローを呼び出してみた(Slack編)

Last updated at Posted at 2020-12-17

前回までの復習

前回より、Slack に「ライセンス一覧ください」というと結果を返してくれるサンプル を作りながら、UiPathのチャットサービスの機構をご紹介しています。UiPathのチャットサービスとは、下記のように「Slack上の Chatbot に話しかけることで、UiPathのワークフローを呼び出す」ことが出来るサービスです。

ChatBot

動かしてみるとこんな感じ。画像をクリックすると動画が再生されます。

ChatbotサービスをつかってSlackからワークフローを呼び出してみたよ

前回までで Slack以外の部分をつくったので、今回はSlackの部分をやっていきます。

処理シーケンス

上記の図で処理の流れのイメージを書きましたが、もうすこし厳密に処理シーケンスを書いてみました。
チャットボットに「ライセンス表示して!」とDMを送信したときの処理シーケンスは以下の通りです。

  1. ユーザはSlack App ( Chatbot )に「ライセンス表示して!」とDM送信する
  2. Slack Appは DMが送信されたというイベントに反応して、UiPath Chatbot service にリクエストを送信する(Slack のEvent Subscription 機構による処理)
  3. UiPath Chatbot service はサービスアカウントをつかって Dialogflow のAPI を呼び出し、Dialogflowの実行結果を得る
  4. UiPath Chatbot service は Intentにマッピングされたワークフローの実行をOrchestrator に依頼する
  5. UiPath Chatbot service は Dialogflowの戻り値 の一部をワークフローの実行結果で置換して、Slack にメッセージをPOSTする

この流れを図にするとこんな感じになります。
ChatBot-リクエスト時

では、Slack部分を実装していきます。といってもノーコードですのでご安心を。

対象読者

  • ある程度は、UiPath / UiPath Orchestrator Community Cloud を触ったことがある
  • ワークフローをUnattended Robotから呼び出すくらいはできる
  • 前回の記事を参照済み

くらいの知識をお持ちの方をイメージして記事を書きました。

やってみる

新規作成 & Basic Information

こちらの記事 にSlack Appを新規作成する手順がありますので、リンク先の「Slack App (Hello World App)の作成」をやってみてください。そうすると下記のように ClientID,Client Secret,Signing Secret が得られるはずです。

Slack Appの画面キャプチャ:
000

ClientID,Client Secret,Signing Secret はこのつぎで使うのでメモっておきましょう。
またアプリの設定は後ほど引き続きおこなうので、SlackのWEB画面はこのまま閉じないで置いておきましょう。

以下はUiPath Chatbot service側で作業します
https://chatbot.uipath.com/ にアクセスし、左の「Launch」をクリック。SlackアイコンのConnectをクリックします。
s001

先のClientID,Client Secret,Signing Secret をセットして「Next」をクリック。
s002

下記のような画面が表示されます。このURL二つ「OAuth URL」「Request URL」はつぎで使いますのでメモっておきましょう。
また下記画面の右部には「あとこれだけやろうね」って説明が動画とともに説明されているので、とりあえずこの画面は閉じないで置いておきましょう。
s003

UiPath Chatbot service 側での設定は以上です。
引き続きSlack Appの設定をしていきます。

Setup Authentication and Bot Permissions

以下は先ほど置いておいた「Slack側の画面」で作業します

Redirect URL

Redirect URLを設定します。

以下 蛇足
これは Slackのワークスペースに Slack Appを追加(Install) する際に、「ユーザが認可する」ってオペをするのですが、その認可したという結果をリダイレクトする先です。リダイレクト先ではその結果(認可コードっていいます) を元にアクセストークンを取得するのが一般的です。
今回のRedirect先は、UiPath Chatbot service の指定したURLとなっていて、結果、UiPath Chatbot service がアクセストークンを取得することができ、UiPath Chatbot service はユーザが許可したSlackのワークスペースにメッセージを送信することができるようになるわけですね。

左メニューの OAuth & Permissions を選択し Redirect URLs の欄の「Add New Redirect URL」をクリック、テキストボックスに、先の UiPath Chatbot service のURL2つのうちの「OAuth URL」を入れて「Add」、最後に 「Save URLs」 をクリックします。
s004

Permissions

つづいてBot がおこなうオペレーションを設定します。先のUiPath Chatbot service の画面の動画も参考にしつつ作業しましょう。

以下蛇足
Slack Appは OAuthの Clientなので、たとえば「チャンネルにボットとしてメッセージを送信する」などの**操作をユーザに許可(認可)をもらう必要があり、**認可してもらいたい操作(Scope) を設定している、ってことですね。
ココで設定した操作は、ユーザが認可する画面にて「このボットは "ボットとしてメッセージを送信する" などを行うけど、許可しますか?」って説明などに使われます。(下記はサンプルイメージ)
auth

さてやっていきます。OAuth & Permissionsをすこし下にスクロールして、**Scopes の Bot Token Scopes にて「Add an OAuth Scope」**をクリック。
s005

その上の「Add permission by Scope or API method...」とあるプルダウンで「chat:write」を選択、再び下のボタンを押して「 im:history」... と続けて結果的に chat:write, im:history, im:read, im:write を追加してください。
s006

OAuth & Permissions の設定は以上です。

Setup Messaging

ひきつづきSlack側の画面で作業します

Slack サーバから UiPath Chatbot service へのリクエストのトリガーは「チャットボット宛のDMが送信されたら」でしたが、そのイベントを検知してリクエストを送るのは「Event Subscription」という機構です。ということでその設定画面で「DM というイベントが発生したら」というイベント発生時の Request先のURLなどを指定していきます。

Event Subscriptions をクリック、下記の画面で Enable Events をONにします。
s007

表示される Request URL のテキストボックスに、先の UiPath Chatbot service のURL2つのうちの「Request URL」を入れてEnter、上にVerified とでればOKです。
s008

つづいてちょっと下の Subscribe to bot events をクリックして、「Add Bot User Event」をクリック。テキストボックスで補完を活用しつつ**「message.im」を選択**します。
s009

Descriptionが**「DMのチャンネルにメッセージがポストされたら」というイベントになってますね。最後に「Save Changes」をクリックして設定を保存**します。
s010

以上で Slack Appの作成は完了です。おつかれさまでした。

Install your Slack Bot

さいごに、このSlack App を利用したいSlackのワークスペースに、作成したアプリを追加( Install ) します。
ちなみにこのアプリは作成者が属する Slackにしかインストールできませんのでご安心ください。

ひきつづき、Slack側の画面で作業します

Manage Distributionへ遷移して、「Add to Slack」ボタンをクリックします。
s011

認可画面が表示されます。先ほど Permissionsで指定した4つのScopeについて、許可してイイ?って聞いてきていますね。
「Allow」をクリックしましょう。
s012

インストールが成功しました的なメッセージが出ていればOKです。
s013

Slackで疎通

ようやく、Slackからの疎通ですね。
インストールしたSlackのワークスペースを表示してみると、アプリが追加されています。
s014

「ライセンスを表示して」とDMを送信すると、結果が表示されました。
s015

「表示して」とだけ表示するとDialogflowが聞き返してくる、なども正しく動いていそうですね。
s016

以上です。お疲れさまでした。

まとめ

  • Slackに何かを問いかけることで、UiPath のワークフローが動いてその結果を受け取れることが分かりました。
  • よってDialogflowにいろいろなインテントを設定してワークフローをマッピングしておけば、Slackから Unattended Robotの実行を制御できるということですね。
    • 自分は実際に、家の日常品の在庫管理に使ってます。
    • Slackに「シャンプー2つ買ったから在庫に追加して」とか「洗顔ないからAmazonのURL送って」とか。なかなか便利に使えてます。
    • データはUiPath DataServiceに入れて管理しているので、データの永続化まで含めてサーバレスです1

関連リンク

  1. サーバレスのかわりに、クライアントPCが必要ですけどね。。そして、これらをUiPathのワークフローでやる必要ある?については議論しない :-)

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?