MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Paragon フリープランで Microsoft Teams の Outgoing webhook を構成する

はじめに

CData Softwareさんのブログで面白そうなローコードサービス「Paragon」が紹介されていたので、試してみたという内容です。

この「Paragon」、フリープランでもREST APIをたたけます!また、簡単なjavascriptも実行できるので、雰囲気としてはLogic Apps+Azure Functions を1つのデザイナー上で構成できるような感じです。 導入部分についてはCDataさんのブログが詳しいので参照してください。

www.cdatablog.jp

今回は、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]を選択します。 f:id:mofumofu_dance:20200810013509p:plain

最初に受信するデータのサンプルが欲しいので、テスト用のエンドポイントを発行し、TeamsでOutgoing webhookを作成します。

このテスト用Webhookに対してメンションすると、Paragonではデータが受信され、以降のアクションで利用可能なサンプルデータになります。

f:id:mofumofu_dance:20200810014454p:plain

メッセージ加工部分 (Function)

オウム返しするテキストを加工するためにParagonでは少しだけJavaScriptを書きます。この点で ノーコードではなく、ローコードなサービスだとわかります。

ただ、簡単なメッセージ加工であれば、JavaScriptに渡すパラメータをドロップダウンで選択できるので、それほどハードではありません。 f:id:mofumofu_dance:20200810015537p:plain

オウム返ししたいだけなので、単純に以下のようなJavaScriptを書きました。

function yourFunction(parameters, libraries) {
var msg = parameters.receivedMessage.split("</at>");
return "Your message is : " + msg[1];
}

受け渡したパラメータは、コード内では parameters.xxxxの形で参照できます。ここではBotへのメンションが必ず入るので、</at>でsplitした残りをつかいました。

ステップごとにテストができて、ここで最初にテスト用エンドポイントで受信したサンプルメッセージが活きてきます。

f:id:mofumofu_dance:20200810020215p:plain

応答部分

あとはOutgoing Webhookへのレスポンス = メンションしたメッセージへのリプライ です。

Functionを追加したときと同様に、ステップとしてResponse を追加します。 レスポンスで送るBodyもドロップダウンや簡単な入力で構成できます。

ここでは前段のステップで得られた結果をリプライのテキストとして指定します。 f:id:mofumofu_dance:20200810020727p:plain

最後に、Triggerステップで本番用のエンドポイントURLをコピーし、Outgoing Webhookを作成します。

f:id:mofumofu_dance:20200810021145p:plain

テスト→デプロイ

設定が完了したらワークフローのテストを行ってください。

無事完走すれば完了です。あとは画面右上の「Deploy」をおわすれなく。 f:id:mofumofu_dance:20200810021445p:plain

もし失敗するステップがある場合にはエラーメッセージに応じて修正しましょう。

動作

ただのオウム返しなのでデモ映えしませんが、以下のように動作します。

f:id:mofumofu_dance:20200810022308g:plain

最後に

Power Automate のようなノーコードサービスと比較すると、多少コードを書く必要がある点でParagonはローコードなサービスです。 要求に応じて、使い分けですがフリープランでREST APIを実行できる点は非常に魅力的だと感じました。

ぜひTeams以外の文脈でも試してみてください。