各製品の資料を入手。
詳細はこちら →CData Sync の処理結果を MS Teams に通知する
こんにちは。CData Software Japan リードエンジニアの杉本です。
前回の記事で CData Sync のジョブ結果を Slack に通知する方法を紹介しました。
今回はこちらを使っている人も多いであろう Microsoft のコラボレーションツール Teams に処理結果を通知する方法を紹介したいと思います。
MS Teams 側に Incoming Webhook のエンドポイントを準備する
まずは前回と同様にIncoming Webhookのエンドポイントを準備しましょう。
投稿したいチャネルのコネクタ画面に移動して、「Incoming Webhook」を構成します。
Incoming Webhookの名前とアイコンを設定し登録しましょう。
これでIncoming WebhookのURLを取得できるので、この値を元にCData Syncの設定を追加します。
Sync に Post-Job イベントを追加する
MS Teams の Webhook URLを取得したら、そのURLを用いてPost-Job イベントのスクリプトを作成します。
「http」という変数にそれぞれパラメータを設定して「httpPost」というオペレーションメソッドにその変数を渡すことで、APIリクエストが実行されます。
今回も私が簡単な雛形を作っているので、これを利用してみましょう。
「<api:set attr="http.url" value="https://XXXX.webhook.office.com/webhookb2/XXXX@XXXX/IncomingWebhook/XXXXX/XXXXX"/> 」の部分だけ、作成したWebhook URLに差し替えてみてください。
<!-- NOTE: Do not edit api:info --> <api:info title="After Run" desc="This event is fired after running a job."> <input name="JobName" required="true" desc="The name of the job being executed." /> <input name="Source" required="true" desc="The name of source connection." /> <input name="Destination" required="true" desc="The name of destination connection." /> <input name="JobStatus" required="true" desc="The status of the completed run." /> <input name="Query#" required="true" desc="The hash of each query that ran." /> <input name="QueryStatus#" required="true" desc="The hash of the status of each query ran." /> </api:info> <api:set attr="http.url" value="https://XXXX.webhook.office.com/webhookb2/XXXX@XXXX/IncomingWebhook/XXXXX/XXXXX"/> <api:set attr="http.contenttype" value="application/json"/> <api:set attr="_input.temp"> ## Results </api:set> <api:enum prefix="Query#"> <api:set attr="_input.temp"> [_input.temp] - [_index | just(5)] : [_value] : [QueryStatus#[_index]] </api:set> </api:enum> <api:set attr="text"> - Source: [_input.Source] - Destination: [_input.Destination] [temp] </api:set> <api:set attr="http.postdata"> { "title":"JobName: [_input.jobname] / JobStatus: [_input.JobStatus]", "text":"[text]" } </api:set> <api:call op="httpPost" in="http"/>
このScriptを対象のジョブの「Post-Job イベント」のところに貼り付けます。
設定を保存したら、試しにジョブを手動実行してみましょう。
ジョブが完了すると、以下のように MS Teams にジョブの処理結果が通知されました!
それぞれのレプリケーション内容およびレプリケーション結果も表示できます。
失敗の通知だけ行いたい場合(2021/10/13追記)
こちらの記事を公開した後に「失敗のときだけ通知したい場合はどうすればいいの?」という質問をお客様から頂きました。
スクリプトでは以下のようにIF文を使って、条件分岐を行うことができます。ここで「_input.JobStatus」の変数に格納されている処理結果を元に分岐して、失敗、つまり成功以外を通知させる設定にすることが可能です。
<api:if attr="_input.JobStatus" value="SUCCESS" operator="notequals"> (SUCCESSで無い場合) </api:if>
スクリプトの全体像としては以下のようになります。もしスケジュールを細かく組んでいる場合はこちらのほうが良いかもですね。
<!-- NOTE: Do not edit api:info --> <api:info title="After Run" desc="This event is fired after running a job."> <input name="JobName" required="true" desc="The name of the job being executed." /> <input name="Source" required="true" desc="The name of source connection." /> <input name="Destination" required="true" desc="The name of destination connection." /> <input name="JobStatus" required="true" desc="The status of the completed run." /> <input name="Query#" required="true" desc="The hash of each query that ran." /> <input name="QueryStatus#" required="true" desc="The hash of the status of each query ran." /> </api:info> <api:if attr="_input.JobStatus" value="SUCCESS" operator="notequals"> <api:set attr="http.url" value="https://XXXX.webhook.office.com/webhookb2/XXXX@XXXX/IncomingWebhook/XXXXX/XXXXX"/><api:set attr="http.contenttype" value="application/json"/> <api:set attr="_input.temp"> ## Results </api:set> <api:enum prefix="Query#"> <api:set attr="_input.temp"> [_input.temp] - [_index | just(5)] : [_value] : [QueryStatus#[_index]] </api:set> </api:enum> <api:set attr="text"> - Source: [_input.Source] - Destination: [_input.Destination] [temp] </api:set> <api:set attr="http.postdata"> { "title":"JobName: [_input.jobname] / JobStatus: [_input.JobStatus]", "text":"[text]" } </api:set> <api:call op="httpPost" in="http"/> </api:if>
おわりに
もし設定で不明な部分、よくわからない点があれば、テクニカルサポートまでお気軽にお問い合わせください。
https://www.cdata.com/jp/support/submit.aspx