SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

Automation Anywhere - 【A360】 CR の API 呼び出し「Bot 実行」

RPA
2021.09.22

みなさま、ごきげんよう。永瀬です。

今回は、前回に引き続き Control Room (CR) の API 呼び出しです。Postman の便利な使い方や、Bot の実行(いわゆる RunAsUser API)を紹介します。また、作成した Bot 内から REST API を呼び出す手順も簡単に紹介します。

前回の記事【Automation Anywhere - 【A360】 CR の API 呼び出し「デバイスをリセット」】は、本稿末尾の「他のおすすめ記事はこちら」のリンクを参照ください。

 

※本記事は Automation Anywhere A360.21 (Build 9664) 時点での情報です。

※2021年3月15日に「Automation Anywhere Enterprise A2019」は「Automation Anywhere Automation 360」にブランド名が変更されています。

※「A-People > knowledge」は Automation Anywhere 社とパートナー契約を結んでいるユーザーのみ参照可能となります。

 

□目次

1.Postman の便利な使い方

  1a.Collections

  1b.取得したトークンを変数に格納

2.Deploy bots API

3.Bot からの REST API 呼び出し

 

それでは今回も、さっそく見ていきましょう。

 


 

1.Postman の便利な使い方

前回の記事では「デバイスのリセット」API を呼び出すために、脇目も振らずただひたすらに手順を進めていきましたが、実際には Postman はいろいろと便利に使うことができます。その中でもさわりの部分だけになってしまいますが、Collections と変数の使い方を紹介します。

前回の記事の続きの状態から始めていきます。

 

  1a.Collections

Postman では複数の API 呼び出しを「ひとまとめ」にして実行することができます。その「ひとまとめ」を作るのが Collection の機能です。Collection の中に Folder(フォルダー)を作成して管理することができます。Collection 単位でも実行できますし、Folder 単位でも実行できます。もちろん、前回で見てきたように API 呼び出し単体でも実行できます。

Collection と Folder は Postman の画面の左側で管理します。

・「Collections」を選択して、「+」ボタン押下で新しい Collection を追加します。
・作成した Collection に名前を付けます。
 ここでは「A360 Cloud」とつけています。
・作成した Collection の三点リード「・・・」ボタンから「Add Folder」を選択してフォルダーを作成します。
 フォルダーを作成して「authentication」と名前を付けたら、もう一度 Collection の三点リードから「Add Folder」してフォルダー「reset」を作成します。

postman010.png

 

postman011.png

 

postman012.png

 

postman013.png

 

前回作成した authentication と reset のタブをフォルダー内に保存していきます。

・「POST: /v1/authentication」のタブを選択して、「Save」ボタンを押下します。
・表示される「Save Request」ダイアログで、「POST: /v1/authentication」と名前を付けます。
 保存先に先ほど作成した「authentication」フォルダーを選択して、「Save」ボタンで保存します。
・同様に、「POST: /v2/devices/reset」のタブを選択して、「Save」ボタンを押下します。
 表示される「Save Request」ダイアログで、「POST: /v2/devices/reset」と名前を付けます。
 保存先に先ほど作成した「reset」フォルダーを選択して、「Save」ボタンで保存します。

postman014.png

 

postman015.png

 

postman016.png

 

このあと、変数とテストを使用することで Collection の威力が発揮されます。

 

  1b.取得したトークンを変数に格納

前回見てきた通り、「POST: /v1/authentication」で取得したトークンは、「POST: /v2/devices/reset」のヘッダーに指定して使います。この受け渡しを自動的にできると、とても便利ですよね。変数(VARIABLE)とテスト(Test)を使用して実現できます。

まず、変数「token」を作成します。変数の名前をここでは「token」としていますが、好きな名前を付けることができます。

・画面右端の目のマークのアイコンをクリックし、表示されるコンテキストダイアログで Environment の枠の「Add」を押下します。
・新規タブが作成されるので、ここでは「Env A360 Cloud」と名前を付け、VARIABLE 列に変数「token」を作成して、「Save」ボタンを押下します。

postman020.png

 

postman021.png

 

テストを追加します。テストは API を呼び出した後に JavaScript を実行する機能です。API 呼び出しの戻り値(response)から値を取得して、変数に代入します。

・画面左側の Collections から「POST: /v1/authentication」を選択します。
・「Body」の二つ右の「Tests」をクリックし、下側のエディットフィールドに以下のテキストをそのまま貼り付けます。

pm.test("Status code is 200", () => {
pm.expect(pm.response.code).to.eql(200);
});

pm.test("Set variable token",() => {
pm.environment.set("token", pm.response.json().token)
});

・右上の「Save」ボタン押下で変更を保存し、「Send」ボタンを押下してみましょう。
・API 呼び出しに成功したら、画面下部の「Test Results」をクリックしてください。
 緑色の「PASS」の表示とテスト名が表示されています。

postman022.png

 

取得したトークンが有効かどうかを確認する GET メソッドの API を呼び出してみましょう。「POST: /v1/authentication」と同じフォルダーに「GET: /v1/authentication/token」を作成します。

・新規にタブを追加して、GET メソッドで「/v1/authentication/token?token={{token}}」を呼び出します。
 自動的に「Params」に KEY 「token」と VALUE 「{{token}}」が追加されます。
 GET メソッドのパラメーターは「?」に続けて渡します。{{token}} が変数「token」の値を指定しています。
・名前「GET: /v1/authentication/token」として、フォルダー「authentication」に保存します。
・右上の目のマークのアイコンの横のドロップダウンリストで、先ほど作成した「Env A360 Cloud」を選択しておきます。
・「POST: /v1/authentication」を実行してから「GET: /v1/authentication/token」を実行すると、有効なトークンなら「"valid": true」が返ります。

postman023.png

 

フォルダーを実行することで、「POST: /v1/authentication」を実行してから「GET: /v1/authentication/token」を続けて実行できます。

・先に「GET: /v1/authentication/token」にもテストを追加して、「Save」しておきます。

pm.test("Body is true",() => {
pm.expect(pm.response.json().valid).to.eql(true);
});

・画面左側でフォルダー「authentication」を選択し、「Run」ボタンを押下します。
・「RUN ORDER」で実行する順序を確認して、「Run A360 Cloud」ボタンを押下します。
・正しく呼び出せていれば、テストも通過(PASS)します。

postman024.png

 

postman025.png

 

postman026.png

 

何回も使う値よく変更する値も変数で指定しておくと、わかりやすくなります。

・CR の URL の変数「A360CR」、ユーザー名の変数「UserName」、API キーの変数「ApiKey」を作成し、値を設定しましょう。
 「Env A360 Cloud」のタブを閉じてしまっている場合は、右端の目のマークのアイコンから「Edit」をクリックします。
・変数名は二重波かっこ {{ }} で括ります。
 忘れずに「Save」してから、「Send」しましょう。

{
"username": "{{UserName}}",
"apiKey": "{{ApiKey}}"
}

postman027.png

 

postman028.png

 

Status code 200 が返らない場合は、変数名の大文字小文字が間違っていないか確認してください。

 


 

2.Deploy bots API

さて、Deploy bots API を見ていきましょう。いわゆる RunAsUser API です。CR から Unattended Runner で Bot を「すぐに実行」するのと同じです。

Unattended Runner として実行させる API のため、Creator ユーザーしか持たない Community Edition では使えません。

API の詳細は Automation Anywhere 社の公式ドキュメントを参照してください。

https://docs.automationanywhere.com/bundle/enterprise-v2019/page/enterprise-cloud/topics/control-room/control-room-api/cloud-bot-deploy-api.html
Deploy bots using API

 

Deploy bots API は「POST: /v3/automations/deploy」で、最低限のパラメーターとして実行する Bot の ID実行させるユーザーの ID が必要です。

・Bot の ID の変数「BotId」とユーザーの ID の変数「UserId」を作成しておきます。

「POST: /v3/automations/deploy」の呼び出しを追加します。

・「POST: /v3/automations/deploy」の呼び出しを、新規フォルダー「deploy」に保存します。
・Header に「X-Authorization」=「{{token}}」を追加します。
・Body に以下の JSON を貼り付けます。

{
"fileId": {{BotId}},
"runAsUserIds": [
{{UserId}}
]
}

postman030.png

 

実行する Bot の ID は、CR で目的の Bot の詳細ページを開くと、URL に含まれています。

Runner として実行させるので、[公開]タブにある Bot を指定してください。

postman031.png

 

同様に、ユーザーの ID は目的のユーザーの詳細ページの URL に含まれています。

Unattended Runner ライセンスのユーザーを指定してください。

postman032.png

 

変数に値を設定して「POST: /v3/automations/deploy」を呼び出します。

「Status: 200 OK」で「deploymentId」が返されてくれば、呼び出しは成功です。
Runner デバイス上で Bot が実行されるのを待ってください。

postman033.png

 

なお、Bot やユーザーの ID は API でも取得できます。詳細は Automation Anywhere 社の公式ドキュメントを参照してください。

https://docs.automationanywhere.com/bundle/enterprise-v2019/page/enterprise-cloud/topics/control-room/control-room-api/cloud-api-workspaces-list.html
List files and folders by workspace API

https://docs.automationanywhere.com/bundle/enterprise-v2019/page/enterprise-cloud/topics/control-room/control-room-api/cloud-find-userid.html
List available unattended Bot Runners API

 


 

3.Bot からの REST API 呼び出し

今度は、Bot から REST API を呼び出してみましょう。

Bot の開発画面で「REST」でコマンドを検索すると、「REST Web サービス」パッケージに REST API を呼び出すコマンドが用意されていることがわかります。

postman034.png

 

また、今回は便利のために Bot Store の「JSONParser」パッケージを使用しますので、あらかじめ Bot Store から取得しておいてください。

https://botstore.automationanywhere.com/bot/a2019-json-parser-package
JSON Parser Package

postman035.png

 

それでは、先ほど Postman で呼び出した「POST: /v3/automations/deploy」を、Bot から呼び出してみましょう。
まずは、「POST: /v1/authentication」でトークンを取得します。

・パラメーターとして渡す JSON は、あらかじめ文字列変数に代入しておきます。
 ここでは変数「pStrParamJson」に「{"username":"$cStrUserName$","apiKey":"$cStrApiKey$"}」を設定しておいて渡しています。
 cStrUserName と cStrApiKey は定数として宣言した変数で、ユーザー名と API キーの値を設定しています。
・「変数に出力を代入」で「複数の変数」を選び、「変数マッピングを追加」でキー「Body」を変数(ここでは pStrResponseBody)に受けます。

postman036.png

 

postman037.png

 

・ JSONParser パッケージの「JSON to Dictionary」コマンドで、先ほど取得した JSON 文字列 pStrResponseBody から、「変数マッピングを追加」でキー「token」の値を変数(ここでは pStrToken)に受けます。

postman038.png

 

取得したトークンの値は、続く「POST: /v3/automations/deploy」 API 呼び出しで、Postman の場合と同様にヘッダーに設定します。

・今回のサンプルでは、トークンの値が Null かどうかチェックを入れています。
・ヘッダーに「X-Authorization」として変数 pStrToken の値を設定しています。
・パラメーターとして渡す JSON は、あらかじめ文字列変数に代入しておきます。
 ここでは変数「pStrParamJson」に今度は「{"fileId":$pStrBotId$, "runAsUserIds":[$pStrUserId$] }」を設定しておいて渡しています。
 pStrBotId と pStrUserId は、呼び出す Bot の ID と実行させるユーザーの ID の値をデフォルト値として設定しています。
ここまでで API 呼び出しは成功して Bot が実行されますが、戻り値の deplyimentId の値をチェックするために、先ほどと同様に「変数に出力を代入」でキー「Body」を変数(ここではまた同じ変数 pStrResponseBody)に受け、取得した JSON 文字列からキー「deplyimentId」の値を変数(ここでは pStrDeploymetId)に受けて、メッセージボックスに表示しています。

postman039.png

 

postman040.png

 

呼び出しが成功しない場合は、pStrResponseBody の値をメッセージボックスで表示するなどして確認し、エラーの原因を調査してください。

 

また、Bot から REST Web サービスのパッケージを使った呼び出しは、Automation Anywhere 社の公式ドキュメントも参照ください。

https://docs.automationanywhere.com/bundle/enterprise-v2019/page/enterprise-cloud/topics/aae-client/bot-creator/using-the-workbench/cloud-using-rest-web-service.html
Example of using REST Web Service actions

 


 

今回はここまで。Postman の使い方は奥が深いので、是非とも極めて快適な REST API ライフをお送りください。

また次回まで、みなさまごきげんよう。

 

AA_EV_Banner2.png

著者紹介

先端技術推進統括部
DXコンサルティング部
永瀬 晋作

みなさま、ごきげんよう。