PHPでフォームが送信されたときにSlackに通知を送信する

Slackワークスペースを作成する

通知を送信したいワークスペースがあれば、2.Incoming Webhockアプリの追加に進みます。
なければ、以下のURLを参考に新しくSlackワークスペースを作成します

Slack ワークスペースを作成する
Slack はチャンネルベースのメッセージプラットフォームです。Slack のワークスペースでは、人々が一緒に仕事を進め、すべてのソフトウェアツーBAD+C3...

Incoming Webhockアプリの追加

SlackアプリのサイドメニューのApp欄から「アプリを追加する」を選択します

「Incoming Webhock」を検索し、追加します

Webブラウザが開きます。「Slackに追加」を押下します

通知を送信したいチャンネルまたはユーザーを選択して「Incoming Webhockインテグレーションの追加」を選択します

Webhook URLが取得できるため、後ほどコピーします

フォーム送信先のPHPにSlack APIの呼び出しを記述する

対象のフォームの送信先(formタグのaction属性に記述しているPHPファイル)に、Slack APIの呼び出しを記述します。

以下の例では、formタグの中のinputタグのname属性が「content」で設定されているものの値を$contentという変数名でパラメータとして取得し、送信内容に含めています。

<?php
//(略)

//パラメータの取得
$content = htmlspecialchars($_POST["content"]);

//(略)

// Slack APIの呼び出し
$url = "ここにWebhook URL をペースト";
$message = array(
    "text" => '送信内容:' . $content
);
$ch = curl_init();
$options = array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query(array(
        'payload' => json_encode($message)
    ))
);
curl_setopt_array($ch, $options);
curl_exec($ch);
curl_close($ch);

//(略)

?>

コードの構成

  1. Webhook URL の設定: まず、$url 変数に送信先の Webhook URL を設定します。これは、Slack アプリケーションの管理画面から取得することができます。
  2. メッセージの作成$message 変数に送信するメッセージの内容を定義します。text キーには、送信するテキストメッセージを指定します。
  3. curl の初期化curl_init() 関数で curl リクエストを初期化します。
  4. curl オプションの設定curl_setopt_array() 関数で curl リクエストの設定を行います。
    • CURLOPT_URL: 送信先の URL を指定します。
    • CURLOPT_RETURNTRANSFER: 返り値を文字列として取得するよう設定します。
    • CURLOPT_SSL_VERIFYPEER: SSL 証明書の検証を無効化します。
    • CURLOPT_POST: POST リクエストを送信するよう設定します。
    • CURLOPT_POSTFIELDS: 送信するデータを指定します。ここでは、payload キーに JSON エンコードされたメッセージデータを設定します。
  5. curl リクエストの実行curl_exec() 関数で curl リクエストを実行します。
  6. curl のクローズcurl_close() 関数で curl リクエストをクローズします。

コードの注意点

  • このコードは、SSL 証明書の検証を無効化しています。本番環境では、セキュリティ上の理由から検証を有効化する必要があります。
  • 送信するメッセージの内容は、$content 変数に設定されています。この変数には、適切な値を代入する必要があります。