フォームからデータが登録された際に、Teams に通知を行いたい!という要望は多いかと思います。
通知する手順をまとめましたので、ぜひ参考にしてみてください。
通知する手順をまとめましたので、ぜひ参考にしてみてください。
変更・改定履歴
-
改定
登録データ追加時に500エラーになってしまう不具合を修正
-
改定
登録データ箇所のURL不備の修正
-
追加
通知方法を追加
-
改定
コネクタ廃止に伴う、WebHookの処理の削除
-
改定
通知方法を追加
通知方法の選び方
通知方法の選び方としては、プログラムによる処理の「あり」「なし」で選びます。
| メール | 通常のフォームにて登録が成功した場合に通知する場合 |
|---|---|
| ワークフロー | 登録データに対する処理(プログラム) が成功・失敗した際に通知させる場合 |
メールを利用する場合の設定
手順1
通知を飛ばすためのチャネルを追加いたします。すでに通知したいチャネルがある場合は、追加不要です。
また、プライバシーは、標準/プライベート のいずれでも通知することが可能となります。
手順2
① を押下し、表示されたメニューから ② の「メールアドレスを取得」を押下します。手順3
表示されたポップアップより、メールアドレスを取得手順4
取得メールアドレスをメールアクションに設定するだけで、完了となります。ワークフローを利用する場合の注意点
ワークフローの所有者は作成者個人となり、変更することができません。
チャネルのプライバシーは、標準/プライベート のいずれでも通知できます。
標準ではユーザとフローボット、プライベートではユーザを送信元として設定することが可能となります。
通知のアイコンや投稿者名は変更することができません。
チャネルのプライバシーは、標準/プライベート のいずれでも通知できます。
標準ではユーザとフローボット、プライベートではユーザを送信元として設定することが可能となります。
通知のアイコンや投稿者名は変更することができません。
ワークフローを利用する場合のTeams側の設定
手順1
通知を飛ばすためのチャネルを追加します。すでに通知したいチャネルがある場合は、追加不要です。
手順2
① を押下し、表示されたメニューから ② のワークフローを押下します。手順3
「Webhook要求を受信するとチャネルに投稿する」で検索し、表示されたTemplatesを押下します。「次へ」ボタンを押下します。
手順4
投稿先のチャネルを確認し、「ワークフローを追加する」ボタンを押下します。手順5
作成に成功すると Webhook のURLが生成されるので、④ のボタンを押下して保存します。Webhook のURLを使用して、通知のプログラムを作成いたしますので、漏れてしまうと、第三者からメッセージの投稿ができてしまいます。取り扱いには、ご注意ください。
URLを保存しましたら、完了ボタンを押下し、設定が終了となります。
送信元の変更・設定をする場合
手順3で表示した画面から「管理」を押下し、送信元を設定したいワークフローの「編集」を押下します。「Send each adaptive card」の「Post card in a chat or channel」から投稿者を選択します。
SPIRAL ver.2 側の設定
SPIRAL ver.2 の設定は、完了時に通知を行いたいページに PHP を埋め込みます。
サンプルプログラムは、以下となります。
PHP
設定値は下記の2ヶ所を設定してください。
次にどのフォームブロックかを判定する箇所を修正します。
9行目 - 12行目の箇所になります。
PHP
使用しないブロックタイプの設定は、コメントアウト(*)してください。
* 文字の先頭に「//」をつけることでコメントアウトできます。
使用するブロックタイプの設定として、「ブロックの識別名」となっている箇所を、識別名に変更して完了です。
メッセージの本文は、Markdown を使用した書式設定が可能となっています。
下記を参考に設定をしてみてください。
サンプルプログラムは、以下となります。
PHP
<?php
// 設定値
define("TEAMS_WEBHOOK_URL", "");
$SPIRAL->setTHValue("result", '');
//------------------------------
// 設定値用モジュール
//------------------------------
// ステップのセット
// 登録ブロックの場合
$formComplete = $SPIRAL->getRegistrationForm("ブロックの識別名"); // 登録フォームブロックの識別名を登録
// 更新ブロックの場合
// $formComplete = $SPIRAL->getUpdateForm("ブロックの識別名"); // 更新フォームブロックの識別名を登録
// 以下修正不要
if($formComplete->isCompletedStep()){
$record = $SPIRAL->getRecordValue();
// メッセージの本文
$message = <<<EOT
**太字**\n
_斜め文字_\n
**_太字斜め文字_**\n
- 中黒1 \n- 中黒2 \n- 中黒3 \n
1. 番号付き1\n
2. 番号付き2\n
3. 番号付き3\n
[リンク](https://example.com/)\n
😀😁😁\n
EOT;
$data = array(
'type' => 'message',
'attachments' => [
[
'contentType' => 'application/vnd.microsoft.card.adaptive',
'content' => [
'type' => 'AdaptiveCard',
'body' => [
[
'type' => 'TextBlock',
'text' => $message,
]
]
]
]
]
);
$errorResult = jsonAPIsend($data);
if($errorResult){
$SPIRAL->setTHValue("api", "error");
$SPIRAL->setTHValue("result", $errorResult);
}else{
$SPIRAL->setTHValue("api", 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");
curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if (!($statusCode >= 200 && $statusCode < 300)) {
return $statusCode;
}
}
?>
設定値は下記の2ヶ所を設定してください。
| TEAMS_WEBHOOK_URL 3行目 |
Teams側の設定の手順5で取得したWebhook のURLを設定 |
|---|---|
| $message 18行目 |
メッセージの本文(19行目-27行目の間を修正) |
次にどのフォームブロックかを判定する箇所を修正します。
9行目 - 12行目の箇所になります。
PHP
// 登録ブロックの場合
$formComplete = $SPIRAL->getRegistrationForm("ブロックの識別名"); // 登録フォームブロックの識別名を登録
// 更新ブロックの場合
$formComplete = $SPIRAL->getUpdateForm("ブロックの識別名"); // 更新フォームブロックの識別名を登録
* 文字の先頭に「//」をつけることでコメントアウトできます。
使用するブロックタイプの設定として、「ブロックの識別名」となっている箇所を、識別名に変更して完了です。
メッセージの本文は、Markdown を使用した書式設定が可能となっています。
下記を参考に設定をしてみてください。
| 太字 | **太字** |
|---|---|
| 斜め文字 | _斜め文字_ |
| 太斜め文字 | **_太字斜め文字_** |
| 中黒 | - 中黒 |
| リスト | 1. 番号付き |
| リンク | [テキスト](URL) |
| 改行 | \n |
| 登録データ | {$record['item']['フィールドの識別名']} 下記のようにリンクに埋め込むことも可能です [https://pi-pe.co.jp/?id={$record["item"]["_id"]}](https://pi-pe.co.jp/?id={$record["item"]["_id"]}) |
最後に
設定後は動作確認を必ず行い、動作に問題がないか確認をしてください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。