watsonx OrchestrateからIBMRPAを呼び出してみる

## watsonx OrchestrateからIBMRPAを呼び出したい
watsonx OrchestrateはIBMの提供するAI Agent構築のためのプラットフォームです。watsonx Orchestrateを用いることで、チャットから自然言語を用いて様々な処理を呼び出すことが可能ですが、呼び出し可能な処理の一つにRPAのボットがあります。この記事では、watsonx OrchestrateからIBMのRPA製品である、IBM Robotic Process Automationのボットを呼び出し、結果をチャットとして表示するまでに必要な作業の流れについて説明したいと思います。
# IBM RPAの特徴
ところで、皆さんはIBMのRPA製品、IBM Robotic Process Automation(以下、IBM RPA)をご存じでしょうか？
おそらく、多くの方が、初めて名前を耳にしたのではないかと思います。IBM RPAはIBMの提供するRPA製品で、650以上のコマンドを組み合わせてローコードでボットを実装できたり、組み込みのOCR機能を提供していたりと、様々な機能を実装可能なRPA製品なのですが、AI Agent的な利用を想定した場合、ボットの実行結果をコールバックで返すことができるという大きな特徴があります。これによって、チャットからボットを呼び出した結果を、チャットで受け取るという事が実現可能になります。（チャット側にコールバックを受信する仕組みは必要です）
## ボットの作成
まず、watsonx Orchestrateから呼び出すボットを作成します。今回は、名前を入力すると挨拶を返してくれる簡単なボットを作成します。
### 入出力変数の設定
ボットを呼び出すときの入力変数、ボットでの処理が完了した際の出力変数を定義します。
変数定義の、**スクリプト入力パラメーター**を有効にすると入力変数、**スクリプト出力パラメーター**を有効にすると出力変数として扱われます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117736/5e7abadf-01b8-5106-d74d-7eabbe6feaa7.png)
今回は、入力変数としてname,出力変数としてmessageというテキスト型の変数を定義します。
なお、ボットの入出力変数として扱うことができる型には制限があることに注意してください。以下の型がサポートされます。複雑なデータ型を送信したい場合などは、JSONテキストとして送受信するなどの工夫が必要なケースもあるでしょう。
- 日付
- 番号
- ブール
- 日時
- テキスト
### 変数の割り当て
メッセージを割り当てるために変数の割り当てコマンドを使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117736/8edd537e-3c18-692d-1296-cca2ff7c1ed9.png)
### ボットの公開
作成したボットに名前を付けて公開します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117736/c538ae41-0384-13d2-1eab-72bc1ee58cd4.png)

## ボット稼働マシンの準備
ボットを稼働させるマシンに、クライアント・モジュールを導入します。
また、ボットのローカルファイルに、秘密鍵を配置する必要があります。
今回のケースでは、pemファイルをボットが稼働するマシンの**C:\Users\Administrator\pem_keys\privkey.pem**に配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117736/f7785414-52bd-8cd3-2ef4-4d23dfa2e2c7.png)
pemファイルは新規に作成してテナントに登録するか、必要に応じてサーバーの管理者等から入手してください。

## IBM RPAテナントの構成
ボットを公開したら、そのボットをAPIから呼び出し可能なように構成が必要です。
### 資格情報の構成
ボットを稼働させるマシンのユーザーとパスワードを登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117736/096342e7-ffca-bda0-df54-38560ac7a560.png)
### コンピューターとコンピューターグループの作成
クライアント・モジュールをインストールした端末がコンピューターとして登録されているはずなので、資格情報や稼働するボットの数などを指定します。また、APIから呼び出す際には、コンピューターではなく、コンピューター・グループに対してボットの稼働が割り当てられるため、コンピューター・グループを定義し、その中に先ほどのコンピューターを含めるように構成します。詳細については下記マニュアルを参照してください。
https://www.ibm.com/docs/ja/rpa/23.0?topic=interfaces-computers

### プロジェクトとボットの作成
プロジェクトを作成し、プロジェクト内にボットを作成します。
先ほど作成したボット、バージョン、コンピューター・グループを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117736/be50af0b-b6af-6d79-e013-e5b9e3eafa6b.png)

### コールバック・URLの設定
watsonx OrchestrateからIBMRPAは非同期のコールバック形式で処理が依頼されます。
そのため、IBMRPA側にコールバックのURLを許可URLとして追加する必要があります。
以下の手順を参考にwatsonx Orchestrate側のURLやドメインを登録してください。
https://www.ibm.com/docs/ja/rpa/23.0.x?topic=apis-callback-urls
コールバックURLは環境により異なりますが、例えば以下のようなURLです。
https://dl.watson-orchestrate.ibm.com/mfe_connectors/api/v1/oauth/_callback

## watsonx Orchestrateからのディスカバリー
ボットの作成とテナントの構成が完了したら、watsonx Orchestrate上からボットをスキルとして呼び出せるように構成します。
スキル・スタジオ>APIのインポート>アプリから>IBM Robotic Process Automation(RPA)と進み、必要なパラメータを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117736/f8e13732-4181-f29a-5e78-e6547ec5f04a.png)
この時、接続URLに関して何を入力すべきかは、以下のマニュアルを参照してください。
例えば、AP1のサーバーを使用している場合には、https://ap1api.rpa.ibm.com を入力します。
コントロール・センターのURLとは異なることに注意してください。
この場合のリージョンはap1になります。

https://www.ibm.com/docs/ja/watsonx/watson-orchestrate/current?topic=apps-robotic-process-automation#getting-the-connection-url

接続がうまくいくと、プロジェクトの一覧が表示されるため、プロジェクトを選択します。
すると、ボットの一覧が表示されるので、起動したいボットをスキルとして登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117736/0b70f89b-c67d-3fc8-5f5c-71e7a8a60a46.png)
後は通常のスキルと同様、スキルの強化と公開、カタログからの追加と接続を行うことでチャットから呼び出すことが可能になります。

## スキルの動作確認
チャットからスキルを呼び出してみます。
nameを入力するフォームが表示されるので、入力すると、ボットが稼働するPC上でログイン作業が実施され、ボットが実行され、最終的にチャットに出力が返ってきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117736/5465e7d5-e8d0-d750-94ad-ce1ce98719ec.png)

## まとめ
生成AIやAI Agentに対する業務効率化の期待は非常に大きいですが、既存の業務処理を自動化するにあたり、RPAとの連携は欠かせないものです。この記事ではwatsonx OrchestrateからIBMRPAのボットを呼び出すための一連の設定について説明しました。AI Agentとボットが連携することで、無数にあるボットから適切なボットを選択して呼び出したり、ボットの処理結果を他のシステムに連携することなども容易になります。
watsonx Orchestrateのチャット・インターフェースでは非同期コールバックをサポートするため、ボットの処理に時間を要するようなケースでも、他の作業をしつつ、返答を受け取ることが可能になっています。RPA製品は数多くありますが、ボットの処理結果をチャット側に返す仕組みを標準で持っているものは少なく、多くの製品はボットを呼び出した後に結果をポーリングで取得するなどの工夫が必要になります。その点、IBMRPAはAI Agentとの相性は良いのではないかと思います。