目的
PowerAutomateでSOAPの呼び出しを実現したい。
デスクトップフローではSOAPを呼び出すアクションが存在します。
一方クラウドフローではSOAPを呼び出すアクションが存在しません。
RESTを呼び出すアクションとしてHTTPアクションが用意されています。
今回はHTTPアクションを使い、SOAPサービスを呼んでみたいと思います。
実装フロー全体像
全体像はこんな形となっています。
それではアクションを1つ1つ見ていきます。
フロー詳細
1. 手動でフローをトリガーします
これはとくに解説不要ですね。テスト動作するときはみなさん使われるかと思います。
2. 変数を初期化する - inputを設定
ここも本筋ではありませんが、後続のSOAP呼び出しを行うときのinputとして変数化しています。
3. HTTP - SOAPサービスの呼び出し
今回テストにあたり以下の公開SOAPを利用させていただきました。
https://documenter.getpostman.com/view/8854915/Szf26WHn#ce8589ab-0fc5-493c-9792-93e5d427e608
※入力した数値を文字に変更してくれるようです。
SOAPの仕様に従ってHTTPアクションを設定していきます。
なお、本文(Body)には前項で設定したinputを挟み込んでいます。
4. 作成 - レスポンスをJSON形式に変換
前項のHTTPアクションでレスポンスが返ってくるのですが、
どうやらXMLのふりしたテキストのようです。
これをPowerAutomateで利用しやすいように整形します。
式は上記のような形となっています。
body('HTTP_-_SOAPサービスの呼び出し')が前項のレスポンスです。
まず、そのレスポンスをxml()でxml形式に変換します。
さらに、json()でjson形式に変換します。
5. JSON の解析 - JSON形式をPowerAutomateで使いやすく
ここまでくればSOAPならではのことはありません。
JSONの解析アクションでPowerAutomateで使いやすいようにします。
スキーマは「サンプルから生成」を使うと楽です。
サンプルから生成の際は、前項のアクションの結果をコピペするのが楽です。
6. 変数を初期化する - outputを設定
最後に結果を変数に確認します。
結果
上記は想定通り、
input「928」に対し、output「nine hundred and twenty eight」を
取得することができました。
最後に
RESTのサンプルはたくさんありますが、
SOAPで呼び出す例が探した限り見当たらなかったので記事にしてみました。
ご指摘やコメントありましたらいただけると幸いです。