開発情報・ナレッジ

投稿者:SPIRERS ナレッジ向上チーム 2022年3月25日 (金)

Slackでフォーム登録通知を受け取る方法(Slack×SPIRAL)

スパイラルにはSlackとの連携プラグインはありません。
ですが、SPIRALのカスタムプログラムと、Slackのプラグイン「Incoming WebHooks」を利用することで、連携が可能になります。
本記事では、フォーム登録通知をSlackへ飛ばすようにする方法をご紹介します。
※必要最低限の手順のみ公開しております。要件に合わせて変更してください。

Slackとは

アメリカのSlack Technology社が運営しているビジネスチャットツールです。
※詳細は公式HPをご覧ください。
https://slack.com/

事前準備

・Slack
今回は通知先として「#spiral」というチャンネルを作成しました。
・SPIRALで通知を飛ばしたいフォーム
作成済みのフォームでも問題ありません。

Slackの設定

「Apps & integrations」をクリック
「Incoming WebHooks」を検索
「Add Configuration」ボタンをクリック
「Post to Channel」に通知を飛ばしたいチャンネル選択し、
「Add Incoming WebHooks Integration」ボタンをクリック
「Webhook URL」をメモ

SPIRALの設定

ここからはSlackに通知を投稿するプログラムを、SPIRAL側に設置していきます。

POST用プログラムはカスタムモジュールに定義
※カスタムモジュールについては、サポートサイト カスタムモジュールを参照ください。

カスタムモジュールサンプル
<?php
class Slack {
    /**
     * 引数のテキストを#spiralチャンネルへ投稿する
     * @param string $text
     */
    function postSlack($text){
        // 【変更箇所】Webhook URL
        $url = "(上記手順でメモしたWebhook URL)";
        $postdata = array(
            "text" => $text
        );
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postdata));
        $result = curl_exec($ch);
        curl_close($ch);
    }
}
?>
投稿プログラムサンプル(サンキューページに追加)
<!-- SMP_DYNAMIC_PAGE DISPLAY_ERRORS=ON NAME=18_CREATE_DEMO -->
<?php

// フォームで登録された内容を取得
$title = $SPIRAL->getContextByFieldTitle("title");

// カスタムモジュール読込
include_once("18_createDemo/Slack.php");
$Slack = new Slack();

// 投稿メッセージ作成
$text = '【おしごと登録】'.$title.'(<https://www.pi-pe.co.jp/sample|確認はこちらから>)';

// slackへ投稿
$Slack->postSlack($text);

?>

動作確認

SPIRALで作成したフォームからデータ登録。
Slackへ通知されました。
実装手順は以上となります。

コンテンツに関しての
要望はこちら