フォームからデータが登録された際に、Teams に通知を行いたい!という要望は多いかと思います。
通知を飛ばす手順 および サンプルプログラムを作成しましたので、
通知機能を作成したい方はぜひ参考にしてみてください。
通知を飛ばす手順 および サンプルプログラムを作成しましたので、
通知機能を作成したい方はぜひ参考にしてみてください。
変更・改定履歴
-
改定
登録データ追加時に500エラーになってしまう不具合を修正
-
改定
登録データ箇所のURL不備の修正
注意点
Teams への通知機能を作成するためには、Incoming Webhook が許可されている必要があります。
サードパーティ製アプリが禁止されている場合 や Incoming Webhookが許可されていない場合は、利用することができません。
サードパーティ製アプリが禁止されている場合 や Incoming Webhookが許可されていない場合は、利用することができません。
Teams側の設定
手順1
通知を飛ばすためのチャネルを追加いたします。すでに通知したいチャネルがある場合は、追加不要です。
また、プライバシーは、標準/プライベート のいずれでも通知することが可能となります。
手順2
① を押下し、表示されたメニューから ② のコネクタを押下します。手順3
「Incoming Webhook」の箇所で、③ の「構成」ボタンを押下します。初回作成の場合は、「追加」が表示されるため追加後に「構成」ボタンを押下してください。
手順4
任意の名前をつけて、Incoming Webhookを作成します。「イメージをアップロードします」にて通知時の名前やアイコンを変更することができます。
手順5
作成に成功すると Incoming Webhook のURLが生成されるので、④ のボタンを押下して保存します。Incoming Webhook のURLを使用して、通知のプログラムを作成いたしますので、漏れてしまうと、第三者からメッセージの投稿ができてしまいます。取り扱いには、ご注意ください。
URLを保存しましたら、完了ボタンを押下し、設定が終了となります。
SPIRAL ver.2 側の設定
SPIRAL ver.2 の設定は、完了時に通知を行いたいページに PHP を埋め込みます。
サンプルプログラムは、以下となります。
PHP
設定値は下記の3ヶ所を設定してください。
次にどのフォームブロックかを判定する箇所を修正します。
9行目 - 12行目の箇所になります。
PHP
使用しないブロックタイプの設定は、コメントアウト(*)してください。
* 文字の先頭に「//」をつけることでコメントアウトできます。
使用するブロックタイプの設定として、「ブロックの識別名」となっている箇所を、識別名に変更して完了です。
メッセージの本文は、Markdown を使用した書式設定が可能となっています。
下記を参考に設定をしてみてください。
ブロックの完了画面で下記のコードを使用することで、エラーのデバックが可能となっております。
送信がうまくいかない方は、コード登録の上、原因をお確かめください。
HTML
サンプルプログラムは、以下となります。
PHP
<?php // 設定値 define("TEAMS_WEBHOOK_URL", ""); //------------------------------ // 設定値用モジュール //------------------------------ // ステップのセット // 登録ブロックの場合 $formComplete = $SPIRAL->getRegistrationForm("ブロックの識別名"); // 登録フォームブロックの識別名を登録 // 更新ブロックの場合 // $formComplete = $SPIRAL->getUpdateForm("ブロックの識別名"); // 更新フォームブロックの識別名を登録 if($formComplete->isCompletedStep()){ $record = $SPIRAL->getRecordValue(); $data["title"] = "title"; $data["text"] = <<<EOT **太字**\n _斜め文字_\n **_太字斜め文字_**\n ~~取り消し線~~\n - 中黒1 \n- 中黒2 \n- 中黒3 \n 1. 番号付き1\n 2. 番号付き2\n 3. 番号付き3\n [テキスト](URL)\n 😀😁😁\n EOT; $result = jsonAPIsend($data); if($result == 1){ $SPIRAL->setTHValue("api", true); }else{ // debug $SPIRAL->setTHValue("api", "error"); $SPIRAL->setTHValue("result", print_r($result,true)); } } function jsonAPIsend($data){ $header = array( "Content-Type:application/json", ); // curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, TEAMS_WEBHOOK_URL); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); $response = curl_exec($curl); if (curl_errno($curl)) echo curl_error($curl); curl_close($curl); return json_decode($response, true); }
設定値は下記の3ヶ所を設定してください。
TEAMS_WEBHOOK_URL 3行目 |
Teams側の設定の手順5で取得したIncoming Webhook のURLを設定 |
---|---|
$data["title"] 16行目 |
メッセージのタイトル |
$data["text"] 17行目 |
メッセージの本文(18行目-27行目の間を修正) |
次にどのフォームブロックかを判定する箇所を修正します。
9行目 - 12行目の箇所になります。
PHP
// 登録ブロックの場合 $formComplete = $SPIRAL->getRegistrationForm("ブロックの識別名"); // 登録フォームブロックの識別名を登録 // 更新ブロックの場合 $formComplete = $SPIRAL->getUpdateForm("ブロックの識別名"); // 更新フォームブロックの識別名を登録
* 文字の先頭に「//」をつけることでコメントアウトできます。
使用するブロックタイプの設定として、「ブロックの識別名」となっている箇所を、識別名に変更して完了です。
メッセージの本文は、Markdown を使用した書式設定が可能となっています。
下記を参考に設定をしてみてください。
太字 | **太字** |
---|---|
斜め文字 | _斜め文字_ |
太斜め文字 | **_太字斜め文字_** |
取り消し線 | ~~取り消し線~~ |
中黒 | - 中黒 |
リスト | 1. 番号付き |
リンク | [テキスト](URL) |
改行 | \n |
登録データ | {$record['item']['フィールドの識別名']} 下記のようにリンクに埋め込むことも可能です [https://spiral-platform.co.jp/?id={$record["item"]["_id"]}](https://spiral-platform.co.jp/?id={$record["item"]["_id"]}) |
ブロックの完了画面で下記のコードを使用することで、エラーのデバックが可能となっております。
送信がうまくいかない方は、コード登録の上、原因をお確かめください。
HTML
<th:block th:if="${cp.result.value['api']} ne 'error'"> <p style="text-align: center;">送信成功。</p> </th:block> <th:block th:if="${cp.result.value['api']} eq 'error'"> <p style="text-align: center;" th:text="${cp.result.value['result']}">エラーコード</p> </th:block>
最後に
設定後は動作確認を必ず行い、動作に問題がないか確認をしてください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。