2020.06.01

ContactForm7のフォーム送信時にLINE通知メッセ―ジを送信する方法

こんにちは、webエンジニアのゾノ( @ozonosho )です。

今日のブログではContactForm7のフォーム送信時にLINE通知メッセ―ジを送信する方法を紹介したいと思います。

たとえばイベント申込が届いた際にスタッフが参加するLINEグループにリアルタイムに通知を届けるなんてこと出来るので、グループで運営しているときには役立つ機能だと思います。

ContactForm7のフォーム送信時にLINE通知メッセ―ジを送信する方法

まず、Wordpressの記事公開時にLINE通知メッセージを送信するためには下記3ステップの作業が必要になります。

  1. LINE Notify のパーソナルアクセストークンを取得する
  2. LINE通知メッセージ送信用の処理を実装
  3. ContactForm7のフォーム送信時にメッセージ通知する処理を実装

順番に見ていきましょう。

①LINE Notifyのパーソナルアクセストークンを取得する

LINE Notifyは、LINEの提供するメッセージ通知サービスの1つです。

LINE版botアカウントのようなもので、そのbotアカウントに好きなメッセージを投稿させることができます。外部のwebサービスやアプリケーションと連携させることができて、プログラムを組めば投稿内容や投稿タイミングを自由に操作することもできます。

このLINE Notifyを利用するためには、『LINE Notifyの公式サイト』にログインしてパーソナルアクセストークンを取得する必要があります。

詳しい取得手順は、こちらの記事『LINE Notifyの使い方解説!』が分かりやすかったのでぜひご覧ください。

②LINE通知メッセージ送信用の処理を実装

パーソナルアクセストークンを取得したら、LINE Notifyを利用してLINEにメッセージを送信するための共通関数を用意します。

下記のコードをfunctions.phpに追加してください。

if(!function_exists('my_send_linenotify')) {
    function my_send_linenotify( $message, $image_thumbnail = '', $image_fullsize = '' ) {
        $url = 'https://notify-api.line.me/api/notify';
        $token = 'パーソナルアクセストークン';
        $response = wp_remote_post( $url, array(
            'method' => 'POST',
            'headers' => array(
                'Authorization' => 'Bearer '.$token,
            ),
            'body' => array(
                'message' => $message,
                'imageThumbnail' => $image_thumbnail,
                'imageFullsize' => $image_fullsize,
            ),
        ));
        if ( is_wp_error( $response ) ) {
            $error_message = $response->get_error_message();
            echo "Error: $error_message";
        }
    }
}

「パーソナルアクセストークン」と書かれた箇所には、先ほど取得したパーソナルアクセストークンの情報を入力してください。

「送信メッセージ(必須)」「アイキャッチ画像(任意)」「アイキャッチ画像サイズ(任意)」の情報を渡してあげると、LINE Notifyが自動でメッセージを送信してくれます。

ContactForm7のフォーム送信時にメッセージ通知する処理を実装

あとは、ContactForm7のフォームが送信されたタイミングで先ほどの関数に送信メッセージを渡してあげれば完成です。

一例ですが、functions.phpに下記のようなコードを追加してください。

//フォーム送信時にLINEに転送する
function wpcf7_send_line($contact_form) {
  $id = $contact_form->id();
  if($id == フォームのID) { //①
    //フォーム送信情報を取得
    $submission = WPCF7_Submission::get_instance();
    if($submission) {
      $formdata = $submission->get_posted_data();
      $message = "【" . $formdata['your-title'] . "】\n\n"; //②
      $message .= "〇お名前\n" . $formdata['your-name'] . "\n\n"; //②
      $message .= "〇メールアドレス\n" . $formdata['your-email'] . "\n\n"; //②
      $message .= "〇簡単な自己紹介\n" . $formdata['your-message'] . "\n\n"; //②
      $message .= "〇質問・その他\n" . $formdata['your-question']; //②
      my_send_linenotify_event( $message );
    }
  }
}
add_action('wpcf7_mail_sent', 'wpcf7_send_line', 10, 1);

①の部分には作成したContactForm7で作成したフォームのIDを入力してください。
(フォームのIDはフォーム一覧ページで確認できます)

②の「your-title」や「your-name」の部分には、ご自身が作成したフォーム項目の名称を入力してください。

アクションフック「wpcf7_mail_sent」を利用すればフォーム送信時に処理を走らせることができるので、入力情報を受け取ってメッセージを作成・送信しています。

これでサイトのフォームが送信されると同時にLINEにメッセージが届くようになります。

おわりに

以上、今回の記事ではContactForm7のフォーム送信時にLINE通知メッセ―ジを送信する方法を紹介させていただきました。

当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。

あなたのサイトに理想の機能を実装!WordPressカスタマイズサービス

本サービスはあなたのWordPressサイトに理想の機能を実装するサービスとなります。 どのような機能・要望でも実現可能です! Wo......

→この記事を読む