デジタル推進課

KNIME・Excel Macro・Power Automateなど日々の業務で使用できる自動化ツールを中心に書き綴ります

KNIME - 実行完了通知をTeams / Slackに投稿するには? ~ Post Request / Incoming Webhook ~

 f:id:makkynm:20210529103031p:plain

 

はじめに

こんにちは、自動化大好きまっきーです。記念すべき100記事目前となりました。

今回はAdvancedな内容となりますが、実用性のあるであろう内容をご紹介します。

皆さんが実務においてKNIME Workflowを作って作業を自動化した後、それらの単純作業をKNIME Serverで定期実行したり、デスクトップで自動実行したり、もしくは他の誰かに作業を依頼したり、、、

自分で作ったワークフローを直接動かさないことも増えてくると思います。そうすると一つ不安なことありませんか?

「本当に実行されているのだろうか。。。エラーは発生してないだろうか。。。」

これで毎回実行の進捗を確認するステップを追加したらせっかくの自動化したのに作業を追加したことになってしまいます。それは避けたいですよね。

そこで、今回はKNIMEが実行完了したことを自動で通知する方法をご紹介します。通知の自動化はMicrosoft PowerAutomateやIFFT、Zapierなどのツールが得意としますが、Power Automate等を使用せずとも通知を送ることができる技術となります。

今回はMicrosoft Teamsを例に説明しますが、同じようにSlack等にも適用できます

 

 今回のテーマ ~Post Request / Webhook~

f:id:makkynm:20210529090442p:plain

 今回のテーマ ~Post Request / Webhook~

 

覚えてほしいこと

Incoming WebhookはPost Requestを元に通知を流す技術

 

やりたいこと -  KNIMEからTeamsに通知を送る

Workflowが実行完了したあと、Teamsの通知用チャネルに実行完了通知を自動で投稿する

「KNIME Training」 というTeamsのグループの「通知テスト」というチャネルに実行通知を流そうと思います。

f:id:makkynm:20210529090442p:plain

やりたいこと

 

事前に押さえておきたいポイント

覚えて欲しい用語をこちらにリストアップしておきます。分からないなーという方はリンクを参照ください。まあ分かってなくても使えますけど笑

Get RequestとPost Requestの違い / JSONというデータ形式について

以前Get RequestのNode紹介でご紹介したかと思います。

Post RequestはURLにリクエストを送るとき、データをくっ付けるリクエストでした

KNIME - APIを使ってみよう!郵便番号から住所を一括取得するには? ~GET Request / String to JSON / JSON to Table~ - デジタル推進課

 

Incoming Webhookとは?

Incoming WebhookとはPost Requestを元に通知を流す技術です。

Post RequestでJSON形式のデータを含ませます。Incoming Webhookは、そのJSON形式のデータを元に、通知の内容を汲み取り通知を流すことができます。

Teamsだけではなく、Slack, Gmailなどなど様々なサービスでこの技術を使うことができます。

 

Teams で通知URL (Incoming Webhook URL)を取得するには?

事前準備として、TeamsでWebhookのURLを取得する必要があります。

参考:Webhook URL取得方法(Microsoft Teams)

Slack等のツールの場合は、「Slack Webhook」でURLを取得する方法を検索してみてください。例:SlackのWebhook URL取得手順 - Qiita

 

 

今回は、Teamsの場合でWebhookを設定する手順について解説します。

KNIME Training というTeamsのグループの「通知テスト」というチャネルに実行通知を流そうと思います。

Step1 - 通知を送りたいチャネルのコネクタ オプションを開く

まずは、通知を送りたいチャネルのコネクタオプションを開きます。

f:id:makkynm:20210529092123p:plain

Step1 - 通知を送りたいチャネルの設定を開く

Step2 - コネクタ一覧からWebhookを検索、構成

次に数あるコネクタの中からIncoming Webhookを検索し、構成ボタンを押します。

f:id:makkynm:20210529092846p:plain

Step2 - Incoming Webhookを構成

 

Step3 - 通知用の名前とアイコンを設定

次に通知用の名前とアイコンを設定しましょう。アイコンは任意です。

f:id:makkynm:20210529093233p:plain

Step3 - 通知用の名前とアイコンを設定

f:id:makkynm:20210529093343p:plain

Step3 - 通知用の名前とアイコンを設定

 

これは、通知の投稿の下図の部分になります。

f:id:makkynm:20210529093124p:plain

通知用の名前とアイコン

Step4 - URLをコピー

URLが出てくるので、コピーしましょう。このURLを使います。

これで完了です。とても簡単ですよね。

f:id:makkynm:20210529093511p:plain

Step4 - URLをコピー

 

設定を再度変更したい場合は。。。

もし再度設定を変更したい場合は、同じようにコネクタから検索してください。

すでに構成が完了しているので、「構成済み」をクリックすると先ほど設定したものが見えるようになっています。管理をクリックすると設定変更が可能です。

f:id:makkynm:20210529093706p:plain

設定を再度変更したい場合は。。。

 

Post Requestの使い方

Post Requestを送信するNodeです。

Workflow -  Post Request

今回はものすごく寂しいWorkflowにしました。Post Requestはこれ単体で動くことができます。Inputは白い矢印になっているので、任意です。

実行完了通知の場合はWorkflowの最後にこのPost Requestを繋げば使えますね。

f:id:makkynm:20210529093927p:plain

Workflow - Post Request

 

Workflowは下記リンクからダウンロードできます。

kni.me

 

Confirm 

実行が完了すると、即座にTeamsに投稿されます。もちろんネット環境が必須です。

f:id:makkynm:20210529094253p:plain

Confirm - Teams通知

 

Configure - Post Request

もちろんPost RequestのNodeの機能自体は多いのですが、今回はTeamsの通知に必要な部分のみ解説します。

Step1 - Connection Settings - URLの設定

先ほど取得したURLを設定しましょう。

Get Requestと同じく、URLはInputのTableから指定することもできます。

f:id:makkynm:20210529094514p:plain

Configure - Step1 - URLの設定

 

Step2 - Request Body - JSON形式で通知内容を指定 

次にRequest BodyにJSON形式のデータを記載します。もちろんInput TableからJSON形式のコラムを指定してもいいです。

f:id:makkynm:20210529094650p:plain

Step2 - JSON形式で通知内容を指定 

今回はこのようなJSONを記述しました。

{
  "title": "タイトル: Completed!",
  "text": "本文: **実行完了**したよ!  \nThis is sent via KNIME workflow<br /><br />[参考:まっきーのKNIMEブログ](https://degitalization.hatenablog.jp/)"
}

 

ちょっと一言

Webhook投稿の見栄え良くするには? JSON Markdown

先ほどのJSONには、装飾用のコードがいくつか含まれています。それぞれの意味を実際の通知画面と照らし合わせながら理解していきましょう。

f:id:makkynm:20210529095749p:plain

それぞれの意味 - Teams Webhook

こちらのサイトを参考にさせていただきました。

Teams incoming webhook で使う JSON Markdown - poke_dev’s blog

 

1. JSONのタグの意味

見た目の通り、

title --> タイトル

text --> 内容

です。タイトルは改行等はできません。textにあたる本文は装飾が可能です。

{
  "title": "タイトル",
  "text": "本文"
}
2. 太字にする
**実行完了**

太字にする場合は、**で太字にしたい部分を囲みます。空白を含まないようにします。

3. 改行パート1
  \n

 

改行をしたい場合、半角スペース2つに「\n」です。

4.改行パート2
<br />

<br>タグでも改行できます。今回は2個入れて2回改行してます。

5. リンクをつける
[参考:まっきーのKNIMEブログ](https://degitalization.hatenablog.jp/)

リンクをつけるには[]でテキスト部分、()でURL部を指定します。

 

おわりに

お疲れ様でした。細かく解説しましたが、分かったでしょうか。

設定内容自体は簡単ですが、かなりパワフルですよね。ぜひ実務で使ってみてください!

今後も本ブログをよろしくお願いします。また、ぜひ様々な方にShareいただけると幸いです。こんなこと知りたい・やってほしいなど、要望あればぜひお問い合わせいただければと思います。

 

 

余談 

久しぶりにAmazon Primeの映画紹介。

まさかこれが実話とは、、、というようなお話。スキーでオリンピックを目前にしていた人が、セレブ専用のポーカーゲームの経営者になるという意味分からない経歴の持ち主の実話です。色々感動ポイントありますが、そもそもこの話が実話であるという驚きと、このモーリーの頭の良さがすごい。弁護士との駆け引きもいい。

緊急事態宣言も延長されましたし、この機会にぜひ。

www.youtube.com

KNIMEに関する本

KNIMEに関する日本語の本って今これくらいしかないと思うんですよね、、

本がいいなーと言う人はぜひ試してみてください。

 

参考リンク