見出し画像

Blue PrismからcurlでAPIを実行する!

こんにちは、Bearです。
RPAのロボットを作成する時に、小技って色々とありますよね。知っていると便利なことが多い小技の一つ、curl(カール)でAPIを実行する方法を今回はご紹介したいと思います。

全然関係ないですけど、お菓子のカールは西日本限定販売になってたのですね

なぜcurlを使うの?

ソリューション連携の記事でも何度か話題になっていますが、Blue PrismのWeb APIサービスは「multipart/form-data」に対してバイナリデータをサポートしていません。こちらの記事ではC#のコードをコードステージで書いて実現していました。しかし、他でも使いたいときにすぐに修正が出来ない・・・。プログラミングは苦手です・・・。
そんな時に登場するのが、「curlでのAPI連携」です。
curlはWindows10/11に標準で利用できるようになっています。特別何かをしなくても使えるという点も良い点になります。

curlとは?

そもそもcurlとは何者なのかはWikipedia先生に教えてもらいましょう!

と、いうことでコマンドラインからファイルの送受信などを様々なプロトコル/フォーマットで実現できるのがcurlとなります。色々サポートしているので、バイナリデータだけでなく全部curl使ってAPI連携のVBOを作る、なんてことも出来ます。

どうやって使うのか?

では実際に使ってみましょう。
例えばBlue Prism APIをcurlで実行する場合であれば、以下のマニュアルにある「Swagger UIを有効にする」の通りにswaggerのUIを起動してあげます。

そしてSwagger UIにアクセスして認証の設定を施し、「Try it out!」を押すとなんと!curlで実行する際の構文が出てきます。

カレンダーを作成するAPIを実行しているサンプル

この出てきたものはWindowsのコマンドプロンプトにそのまま貼り付けてもエラーになるので、以下の3点の修正をしてあげます。
1.「'(シングルクォーテーション)」を「"(ダブルクォーテーション)」に変更する
2.「"(ダブルクォーテーション)」を「'(シングルクォーテーション)」に変更する
3.1行にする(「\(バックスラッシュ)」と改行を削除する)
この3点の変更をして1行になったものをコピーしてコマンドプロンプトに張り付けると、Swagger UIと同じように実行されると思います。
このような感じで、色々なAPIのリファレンスガイドにcurlでどう実行するかが載っていたりするので、あとはそれをコマンドプロンプトから実行できるように整形してあげれば良いのでした。

Blue Prismからはどうすれば良いのか?

ではBlue Prismからはどうするのが良いのかについてですが、
Utility - Environment
のVBOに含まれる[Start Process Read Stderr and Stdout]のアクションを使うとcurlの実行と結果の取得が簡単にできます。
以下のような形です。

入力パラメーター:curl.exeを指定して、引数はargumentsのテキストに格納
出力パラメーター:実行結果をそれぞれ格納

入力については、「どうやって使うのか?」で説明したような、コマンドプロンプトのcurlで実行できるように1行にしたテキストを[arguments]に入れます。[arguments]のテキストは、必要なパラメーターをデータアイテムで受け取ったり計算ステージでテキスト整形して作り出す形です。
出力は、実行エラーがあれば[Standard Error]に結果が入りますので、その内容を見てエラー処理をする。正常に実行できたら[Standard Output]にAPI出力内容が入りますので、それを処理する。
というような形で構成されます。

サンプルはないの??

具体的なサンプルがあれば分かり易いですよね、ということで、以下のSmartReadさんとの連携部品はファイルの送受信がcurlを使ったVBOになっております。
Web APIを使ったものとcurlを使ったVBOの両方が含まれていますので、それぞれどんな感じで実装するのか比較も出来てサンプルとして見て頂くのにもちょうど良い内容になっております。ぜひダウンロードしてみてください。

以上、Blue Prismからcurlを使ったAPI連携についてでした!