UiPath Autopilot™ for SlackでAssistant・端末OSに依存せずにA4Eを利用する

## 概要

UiPath Autopilot™ for Slackにより、Slack経由でUiPath Autopilot for Everyone（以降、A4E）を利用できるようになりました。

これにより、A4Eを利用するためにUiPath Assistant v2024.10.5以上がインストールされた端末（WindowsまたはmacOS）が必要という要件がなくなります。

具体的には、以下の前提条件を満たす環境で適切な構成を行うことで、SlackからA4Eを利用し、生成AI機能の活用やロボットの起動が可能になります。Slackは様々なOSで提供されているため、Assistantのバージョンが古く2024.10.5以降のバージョンがインストールできない端末、またはAssistantがサポートされないLinux端末やモバイル端末（iOS／Android）からも同様にA4Eの利用が可能です。

最新版のAutopilot™ for Slackでは、サーバーレスランタイムや無人ランタイムなど複数のランタイムで実行することができますが、本記事では、一例として無人ランタイム（Unattended Runtime）での実行する例を紹介します。

## 仕組み

無人ランタイムでの実行の仕組みを以下グラフで示します。


図1. UiPath Autopilot™for Slack経由のA4E実行フロー
![Overview02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/03ae5f26-2f88-4079-b6c5-2b4f9db0e7a4.png)


* 最初に、UiPath Autopilot™ for Slackにプロンプトを送ると、A4Eがプロンプトを受け、生成AIでロボット実行の要否の判断も含め処理します。
* 実行不要な場合はプロンプトに回答して、以下を実行せずにプロンプトの処理を終了します。
* 実行が必要で、対象のロボットが特定された場合、無人実行でそのロボットを実行します。
※但し、勝手に実行するわけではなく、パラメーターを推定して実行提案だけしてくれます。ユーザーが実行パラメーターを確認した上で明確に「実行」ボタンを押さなければロボットが実行されません。
  <details><summary>AssistantでA4Eを使う場合との違い（クリックして展開）</summary> 

  <table>
    <thead>
    <tr>
    <th></th>
    <th>AssistantでA4Eを利用した場合</th>
    <th>UiPath Autopilot™for SlackでA4Eを利用した場合</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td>プロンプト入力後</td>
    <td>A4Eが勝手にロボットの実行パラメーターを決めてロボットを実行する。</td>
    <td>A4Eがロボットの実行パラメーターを推定し、ロボットの実行を提案する。ユーザーが「実行」ボタンをクリックして初めてロボットが実行される。</td>
    </tr>
    <tr>
    <td>ロボット実行成功後</td>
    <td colspan="2">A4Eが実行出力をまとめて回答する</td>
    </tr>
    <tr>
    <td>ロボット実行の種類</td>
    <td>有人実行</td>
    <td>　無人実行</td>
    </tr>
    <tr>
    <td>無人実行の設定</td>
    <td>不要</td>
    <td>必要(マシンテンプレートとその認証情報、ライセンス、ランタイム)</td>
    </tr>
    </tbody>
    </table>
  </details>

<br>

* ロボット実行にIntegration Serviceのコネクションが必要な場合、A4Eが個人ワークスペースから適切なコネクション（つまりA4Eユーザーのアカウントに対応したコネクション）を見つけて割り当ててくれます。
<!-- MEMO: (ということは、別の人のコネクションを割り当てる力をA4Eが持つ？別途検証します。)-->

* 最後にロボットの実行結果がA4Eに返り、A4Eが出力変数の中身を解読・整理して回答します。

上記のパイプラインで、Slack経由でUiPath Autopilot™ for Slackにプロンプトを送ると、A4Eがプロンプトを受けて、（必要に応じて無人ロボットを使ってロボットを実行して）回答します。

## サンプル構成手順

一例として、上記が実現される環境の構築手順を紹介します。
A4Eを利用したいが、対応しているAssistantがインストールされていない端末で、Slackが利用可能な端末（例：モバイル端末）があるとします。（以降、Slack端末と呼びます）
A4Eを利用可能な端末を構成することで、Slack端末からA4Eを利用することができるようになります。（以降、その端末を無人実行端末と呼びます）


以下、上記を実現するための無人実行端末の構成手順を説明していきます。


### 0. 前提条件
無人実行端末が接続するAutomation Cloud組織には、以下のA4Eを利用するための条件を満たす必要があります。
* Enterpriseプランのライセンスであること
* Document Understandingが有効化されていること
* 個人ワークスペースが有効化されていること

また、端末とユーザーには以下の条件も必要になります。
* 無人実行端末にAssistant v24.10.5以上（Enterprise版）がインストールされていること
* ユーザーにはAutomation Developer, Citizen Developer, Autopilot ExpressまたはAttended Userのライセンスのいずれかを有すること

[こちら](https://docs.uipath.com/ja/autopilot/other/latest/everyone-admin-guide/prerequisites-for-installation)からも確認できます。

<!-- these are not exactly prerequisites
A4Eを生成AIの機能を利用するための条件は以下です。
* UiPath Automation CloudのテナントにてAutopilot for everyoneを利用可能なこと
※A4Eの利用条件は[こちら](https://docs.uipath.com/ja/autopilot/other/latest/everyone-admin-guide/prerequisites-for-installation)にて確認できます。

A4Eにロボットを実行させるために必要な条件は以下です。
* ユーザーがA4E経由で該当ロボットを実行できること
  <details open ><summary>チェックリスト</summary>

  - [x] プロセスが格納されるフォルダへのアクセス
  - [x] A4Eの初期設定
  - [x] A4Eでの設定（データソース、オートメーション）でのロボットの有効化（詳細は[こちら](https://docs.uipath.com/ja/autopilot/other/latest/everyone-admin-guide/automation-properties)）
</details>

* プロセスの無人実行が可能なこと

  <details open><summary>チェックリスト</summary>
  
  - [x] URマシン（UR端末の認証情報、本番ランタイム）
  - [x] 無人実行のアカウント（ユーザーアカウントまたはロボットアカウント）から格納フォルダーへのアクセス
  </details>
-->



### 1. Automation Cloudの環境設定
Automation Cloudにて、A4Eが利用できるように設定が必要になります。
詳細手順は以下の記事を参考にしてください。

https://qiita.com/MUCHIUCHI_OJISAN/items/cafa42cb368927b492a3

※但し、本手順には上記記事の「3.環境をセットアップする」の実施は不要です。

### 2. 無人実行の設定

無人実行端末にて、マシンテンプレートでA4E利用可能なテナントへの無人接続が必要になります。
<!--![Fig1a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/176197b7-2f0d-4a9a-9bce-198d54b395f2.png)
-->

設定方法の詳細は以下の記事からも確認できます。

https://docs.uipath.com/ja/orchestrator/automation-cloud/latest/user-guide/how-is-unattended-automation-performed



<!-- MEMO: This is for a signed-in robot machine. For unsigned robot machine, the machine must have robot installed, and the machine template must be coupled with a robot account with the machine's login credentials. But if the process is executed using the robot account, the connection may not be accessed, therefore the process will fail. Except if we can make the robot use the correct connection - can A4E do it?

<details open><summary>チェックリスト</summary>

- [x] 環境に無人実行ランタイムが割り当てられていない場合は割り当てます。
- [x] マシンテンプレートを作成します。
- [x] ランタイムを割り当てます。
- [x] 認証情報を設定します。
</details>

 -->
 
 
### 3. プロセスの設定
本記事のサンプルでは、`Get Outlook Events`というプロセスを利用しますが、お手元の別のプロセスを利用しても構いません。

:::note info
`Get Outlook Events`は、名前の通りOutlookイベントを取得してくれるプロセスです。UiPathによって公式に提供されている生産性向上のロボットプロセスの一つです。今回利用する理由は、当該プロセスがA4E用に作られており、出力変数が設定されているのでA4Eが拾ってユーザーに回答できるからです。
:::


<details><summary>Get Outlook Events以外のプロセスを利用する場合（クリックして展開）</summary>


* 利用するプロセスには出力変数が設定されており、プロセスの処理結果をその変数に格納する処理があることを確認します。
* 出力変数にどのようなものが入っているかわかるように変数名を、プロセスが何をするかわかるようにプロセスの説明を設定します。
* プロセスがIntegration Serviceのコネクションを利用する場合は、そのコネクションを個人用ワークスペースで作成しておきます。

* A4Eが対象プロセスを実行してくれるプロンプトを考えておきます。
例えば、プロセスの説明が「受信トレイの最新の未読メールのタイトルを取得します」の場合、プロンプトに「受信トレイの最新の未読メールのタイトルを教えてください」がいいでしょう。

</details>

<details open><summary>Get Outlook Eventsを利用する場合</summary>

事前準備として、[こちらの記事](https://qiita.com/MUCHIUCHI_OJISAN/items/71ab1564fab611c079f4#%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%AA%E3%83%BC%E3%83%88%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B)の「マイクロオートメーションを追加する」内容に従ってインストールしてください。

※当該プロセスを実行するには、さらに以下が必須です。
* テナントに個人ワークスペースが有効化されていること
* 実行ユーザーの個人ワークスペースで、利用可能なOutlookコネクションが作成されていること

</details>

対象プロセスの格納フォルダに対して、以下を実施します。
* 実行ユーザーのユーザーアカウントを追加
  ※設定場所：Orchestratorにて、対象フォルダーの「設定」>「アクセス権を管理」>「アカウント/グループ/外部アプリを割り当て」
* 実行端末のマシンテンプレート
  ※設定場所：Orchestratorにて、対象フォルダーの「設定」>「マシン」>「フォルダーのマシンを管理」

  
### 4. UiPath Autopilot™ for Slackの設定

UiPath Autopilot™ for Slackが初期設定されていない場合、Slack端末にて以下の設定を行います。
※以下設定がSlackアカウントに反映されるので、複数の端末に同じSlackアカウントでサインインしている場合、どの端末で設定を行ってもほかの端末に適用されます。
※Slackアカウントの設定であるため、利用ユーザー単位で実施する必要があります。

##### PC端末の場合
Slackにて名前検索、または以下の直接URLでUiPath Autopilot™ for Slackアプリを追加できます。
https://cloud.uipath.com/pluginecosystem_/slack/install

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/e4322f54-7480-4158-bf5a-344fbdde3873.png)


##### モバイル端末の場合
「新しいメッセージ」で、あて先に「UiPath Autopilot」を指定します。
または、以下の直接URLでUiPath Autopilot™ for Slackアプリを追加できます。
https://cloud.uipath.com/pluginecosystem_/slack/install

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/27deb8f0-59d2-48a2-a558-5e96d02028c5.png" alt="010_addApp" width="50%" />


インストールとやり取りの開始には認証が必要ではありませんが、A4Eのすべての機能を利用するには、UiPath Automation Cloudへのサインインが必要になります。アプリとやり取りすると、サインインボタンが提示されるので、それでサインインできます。
<!-- PC screenshot: 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/5815a817-4f08-44df-b7c0-41e3eefa642f.png) -->

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/fddc3199-b555-40c6-8a5f-9de423040194.png" alt="020_signIn.png" width="50%" />


その後、テナント選択画面が表示されたら、テナントを選択します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/02eda9b9-842c-4bd1-8298-793b2abdcdbd.png" alt="030_configTenant.png" width="30%" />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/7397b3d6-d3ae-41d1-b540-963f96c52740.png" alt="040_selectTenant.png" width="30%" />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/7fb7e50b-debf-49f6-acbc-fee3b8d1c0c6.png" alt="042_tenantSelected.png" width="30%" />



:::note info
後からテナントを変更する場合、以下コマンドをアプリに送信することで変更できます。
```
/autopilot change-tenant 
```
:::

## 動作確認

A4Eとのやり取りを始めます。

既定ではA4E回答の言語は英語で、タイムゾーンはUTCになりますが、最初に以下のようなプロンプトで回答の言語とタイムゾーンを指定できます。
```
以降、日本語で回答し、日時はすべて日本時間で表示してください
```
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/4b5798cb-8fbc-4bf7-96bc-2e3b614760ba.png" alt="050_languageTimeZone.png" width="50%" />


次に、対象プロセスを実行するプロンプトを送信します。
`Get Outlook Events`を利用する場合、以下のようなプロンプトが使えます。
```
来週月曜日の予定は？
```

A4Eが、そのプロンプトに回答するのにふさわしいプロセスを特定し、さらにふさわしいパラメーターも推定し提案してくれます。（具体的には、取得対象期間に翌週の月曜日の日時を提案してくれます。）
プロセス名と提案されるパラメーターが表示されます。
※回答の文章は日本語にしてくれますが、処理ステータスやボタンのラベルなどは英語で表示されます。

<!-- PC Screenshot: 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/420cb1d8-1dd4-4106-9be2-eaa322474425.png) -->

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/19e6eee8-b4af-4b74-9609-d0ad73b723cc.png" alt="070_runAction.png" width="50%" />


「Run Action」をクリックすると、実行パラメーターとアカウント・マシン構成を入力する画面が表示されます。
プロセスの入力パラメーターに、A4Eによって提案された値が設定されますが、任意で編集できます。
アカウント・マシン構成について、今回の例では無人ランタイムで実行しますので、Runtimeに「Unattended」、Accountに「Run As Me」を選択し、MachineとHostnameに上記2.で設定した無人実行マシンとホスト名を選択します。

<!-- PC Screenshot: 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/c65738be-2e46-43c9-91cc-f99d68b35ce7.png) -->

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/607a034f-bc29-4496-9f29-3a54200e2f55.png" alt="080_runArgs.png" width="50%" />

「Execute Action」をタップすると、プロセスが実行されます。
実行は、上記1.～3.で設定された無人ロボットで行われます。
実行ステータスは表示・更新されます。
<!--  PC Screenshot: 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/1b9e82af-cdb8-46d5-a904-efbf2432d90e.png) -->

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/f71ed680-aa52-438a-abad-e888b7f16964.png" alt="090_plsWait.png" width="30%" />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/2e2f02a8-b8d9-4992-95ca-c7f8436866d4.png" alt="092_running.png" width="30%" />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/121b2e64-951b-4df1-a268-598e3eab7b39.png" alt="094_successful.png]" width="30%" />


実行が成功した場合、A4Eが実行結果からプロンプトの回答に必要な情報を取得し、回答を作成し返信します。
（`Get Outlook Event`プロセスの場合、以下のようにOutlookカレンダーに登録されている予定の情報が回答として表示されます。）
<!-- PC screeenshot: 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/2876494f-ed97-4d7d-8803-245f01e39dd2.png) -->

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/e49e95b9-dcfc-4c75-8a1e-fd1712456ab1.png" alt="100_result.png" width="50%" />

上記のような結果が出た場合、動作確認が完了になります。

<details><summary>無人実行設定が正しく行われなかった場合など、以下のように実行がペンディングと表示され、実行成功画面に変わらないことがあります。（クリックして展開）</summary>

<!-- PC screenshot: 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/240e8a63-ff0b-4cb0-9f06-38af1ce86d41.png) -->

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843343/f19b1b3d-3876-4935-970a-7f5b3d527b7d.png" alt="920_pending.png" width="50%" />
</details>

## AssistantでのA4E利用との違い
端末のOS・Assistantバージョンの要件がなくなる一方、Slackで利用するA4EはAssistantで利用するA4Eと比べて以下いくつかの点でUXの差があります。
* 無人実行が必要なため、無人実行端末がオンラインである必要があります。
* A4Eが回答するにプロセス実行が必要な場合、明示的にプロセス実行ボタンを押す必要があります。
* Slack⇔A4E、Orchestrator⇔無人実行端末の通信が発生するため、やり取りの応答速度がかなり落ちます。
* A4Eの回答はユーザー指定で日本語にすることができますが、それ以外の表示には英語で表示される内容が多く、まだ完全に日本語にすることができません。
* プロセス実行後、以下のエラーメッセージで回答が失敗する、UiPath Autopilot for Slackアプリの不具合と思われる動作が散見されています。※<details><summary>エラーメッセージ（クリックして展開）</summary>*Sorry, I couldn't summarize the action execution response at the moment. Please try again later.*</details> 
* AIユニット（またはユーザーに付与される無料プロンプト）の消費はどちらの利用方法でも同じです。（1AIユニット/1プロンプトを消費します）※

※いずれも筆者が動作確認した時点（2025年4月）現在の情報

## 終わりに

UiPath Autopilot™ for Slackの導入により、UiPath Autopilot for Everyone（A4E）の利用がさらに柔軟になりました。これにより、UiPath Assistantや特定の端末OSに依存せず、様々な端末からSlackを通じてA4Eの生成AI機能と自動化起動機能を活用できます。特に、AssistantがインストールできずこれまでUiPathの利用ができなかったLinux端末やモバイル端末（iOS／Android）からも利用可能になるため、より多様な環境での自動化が実現します。

この新しい利用方法により、モバイル端末からA4Eを活用して生成AIの機能を利用したり、プロセスを起動したりすることが可能になります。端末OSやAssistantの制限が緩和されることで、A4Eの利用シーンがさらに広がり、多様な環境での自動化が実現します。これにより、企業や個人が自動化の利便性を最大限に引き出し、業務効率を向上させるための重要なステップとなるでしょう。