はじめに
CData Softwareさんのブログで面白そうなローコードサービス「Paragon」が紹介されていたので、試してみたという内容です。
この「Paragon」、フリープランでもREST APIをたたけます!また、簡単なjavascriptも実行できるので、雰囲気としてはLogic Apps+Azure Functions を1つのデザイナー上で構成できるような感じです。 導入部分についてはCDataさんのブログが詳しいので参照してください。
今回は、Microsoft Teams の Outgoing webhookで作る簡易Botを、Paragonのフリープランの範囲で作ってみました。
Outgoing webhook?
簡単に言えば、Teams から外部サービスにメッセージを送る仕組みです。 Outgoing 用のBotを作成して、そのBotにメンションすることで指定したURLにメッセージが送信されます。
また、送信したメッセージのレスポンスは、メッセージへのリプライとして処理されるので、Bot frameworkを利用するまででもないような簡易的なBotを構築するときには有効な手段です。
Microsoftのサービスの範囲でこのOutgoing webhookを構成するのであれば、Power Automate のHTTP要求トリガーのフローや、Logic Apps、あるいはAzure Functionsなどでリクエストを受け取ることが考えられます。 ただ、どの方法も有償プランが前提であったり従量課金だったり、そもそもAzureにリソースを作れないというようなケースがあります。
その点をクリアする目的で、Paragonのフリープランを利用してみました。
オウム返しBot
Botの基本、オウム返しを作成します。
テスト用も含めて、2つのOutgoing webhookを利用します。
メッセージ受信部 (トリガー)
今回はTeamsからのメッセージを受け取る必要があるので、Paragonのワークフロー作成画面で、[New Workflow] > [ API Endpoint]を選択します。
最初に受信するデータのサンプルが欲しいので、テスト用のエンドポイントを発行し、TeamsでOutgoing webhookを作成します。
このテスト用Webhookに対してメンションすると、Paragonではデータが受信され、以降のアクションで利用可能なサンプルデータになります。
メッセージ加工部分 (Function)
オウム返しするテキストを加工するためにParagonでは少しだけJavaScriptを書きます。この点で ノーコードではなく、ローコードなサービスだとわかります。
ただ、簡単なメッセージ加工であれば、JavaScriptに渡すパラメータをドロップダウンで選択できるので、それほどハードではありません。
オウム返ししたいだけなので、単純に以下のようなJavaScriptを書きました。
function yourFunction(parameters, libraries) { var msg = parameters.receivedMessage.split("</at>"); return "Your message is : " + msg[1]; }
受け渡したパラメータは、コード内では parameters.xxxx
の形で参照できます。ここではBotへのメンションが必ず入るので、</at>
でsplitした残りをつかいました。
ステップごとにテストができて、ここで最初にテスト用エンドポイントで受信したサンプルメッセージが活きてきます。
応答部分
あとはOutgoing Webhookへのレスポンス = メンションしたメッセージへのリプライ です。
Functionを追加したときと同様に、ステップとしてResponse を追加します。 レスポンスで送るBodyもドロップダウンや簡単な入力で構成できます。
ここでは前段のステップで得られた結果をリプライのテキストとして指定します。
最後に、Triggerステップで本番用のエンドポイントURLをコピーし、Outgoing Webhookを作成します。
テスト→デプロイ
設定が完了したらワークフローのテストを行ってください。
無事完走すれば完了です。あとは画面右上の「Deploy」をおわすれなく。
もし失敗するステップがある場合にはエラーメッセージに応じて修正しましょう。
動作
ただのオウム返しなのでデモ映えしませんが、以下のように動作します。
最後に
Power Automate のようなノーコードサービスと比較すると、多少コードを書く必要がある点でParagonはローコードなサービスです。 要求に応じて、使い分けですがフリープランでREST APIを実行できる点は非常に魅力的だと感じました。
ぜひTeams以外の文脈でも試してみてください。