フォームからデータが登録された際に、SLACK に通知を行いたい!という要望は多いかと思います。
通知を飛ばす手順 および サンプルプログラムを作成しましたので、
通知機能を作成したい方はぜひ参考にしてみてください。
通知を飛ばす手順 および サンプルプログラムを作成しましたので、
通知機能を作成したい方はぜひ参考にしてみてください。
変更・改定履歴
-
改定
登録データ追加時に500エラーになってしまう不具合を修正
-
改定
登録データ箇所のURL不備の修正
SLACK側の設定
手順1
通知を飛ばすためのチャンネルを追加いたします。すでに通知したいチャンネルがある場合は、追加不要です。
プライベートチャンネルでも通知できます。
手順2
通知したいチャンネルのタブで右クリックを行い、表示されたメニューから ① 「チャンネル詳細を表示する」を押下します。手順3
詳細画面で、② の「インテグレーション」タブを押下し、③ の「アプリを追加する」のボタンを押下します。手順4
検索の箇所で「Incoming Webhook」を検索し、「インストール」ボタンを押下します。手順5
インストールボタンを押下するとブラウザが立ち上がります。⑤ の「SLACKに追加」ボタンを押下します。
手順6
通知を行うチャンネルを設定します。手順7
チャンネルの設定を行いましたら、下部の Webhook URL の箇所の ⑥ URLのコピーを行います。Webhook のURLを使用して、通知のプログラムを作成いたしますので、漏れてしまうと、第三者からメッセージの投稿ができてしまいます。取り扱いには、ご注意ください。
URLを保存しましたら、完了ボタンを押下し、設定が終了となります。
「名前をカスタマイズ」「アイコンをカスタマイズする」にて通知時の名前やアイコンを変更ができます。
SPIRAL ver.2 側の設定
SPIRAL ver.2 の設定は、完了時に通知を行いたいページに PHP を埋め込みます。
サンプルプログラムは、以下となります。
PHP
設定値は下記の2ヶ所を設定してください。
次にどのフォームブロックかを判定する箇所を修正します。
9行目 - 12行目の箇所になります。
PHP
使用しないブロックタイプの設定は、コメントアウト(*)してください。
* 文字の先頭に「//」をつけることでコメントアウトできます。
メッセージの本文は、Markdown を使用した書式設定が可能となっています。
下記を参考に設定をしてみてください。
ブロックの完了画面で下記のコードを使用することで、エラーのデバックが可能となっております。
送信がうまくいかない方は、コード登録の上、原因をお確かめください。
HTML
サンプルプログラムは、以下となります。
PHP
<?php
// 設定値
define("SLACK_WEBHOOK_URL", "");
//------------------------------
// 設定値用モジュール
//------------------------------
// ステップのセット
// 登録ブロックの場合
$formComplete = $SPIRAL->getRegistrationForm("ブロックの識別名"); // 登録フォームブロックの識別名を登録
// 更新ブロックの場合
// $formComplete = $SPIRAL->getUpdateForm("ブロックの識別名"); // 更新フォームブロックの識別名を登録
// 以下修正不要
if($formComplete->isCompletedStep()){
$record = $SPIRAL->getRecordValue();
$data["text"] =
<<<EOT
テキスト
*対象テキスト*
_対象テキスト_
>対象テキスト
*_対象テキスト_*
<リンク|テキスト>
EOT;
$result = jsonAPIsend($data);
if(!$result){
$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, SLACK_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);
}
設定値は下記の2ヶ所を設定してください。
| TEAMS_WEBHOOK_URL 3行目 |
SLACK側の設定の手順7で取得したWebhook のURLを設定 |
|---|---|
| $data["text"] 17行目 |
メッセージの本文(18行目-23行目の間を修正) |
次にどのフォームブロックかを判定する箇所を修正します。
9行目 - 12行目の箇所になります。
PHP
// 登録ブロックの場合
$formComplete = $SPIRAL->getRegistrationForm("ブロックの識別名"); // 登録フォームブロックの識別名を登録
// 更新ブロックの場合
$formComplete = $SPIRAL->getUpdateForm("ブロックの識別名"); // 更新フォームブロックの識別名を登録
* 文字の先頭に「//」をつけることでコメントアウトできます。
メッセージの本文は、Markdown を使用した書式設定が可能となっています。
下記を参考に設定をしてみてください。
| 太字 | *太字* |
|---|---|
| 斜め文字 | _斜め文字_ |
| 太斜め文字 | *_太字斜め文字_* |
| 取り消し線 | ~~取り消し線~~ |
| 山括弧を追加 | >対象テキスト |
| リンク | <URL|テキスト> |
| 登録データ | {$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['errorText']}">エラーコード</p>
</th:block>
最後に
設定後は動作確認を必ず行い、動作に問題がないか確認をしてください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。
不具合やほかのやり方が知りたい等あれば、下記の「コンテンツに関しての要望はこちら」からご連絡ください。