問い合わせの内容に応じてChatworkの異なるチャットに通知する方法【WordPress】

WordPressとChatwork APIを使って、問い合わせフォームに送信された内容の種別に応じて、Chatworkの異なるグループチャットに通知する方法を紹介します。

デモページはこちら

Chatwork側の作業

Chatwork画面のメニューにある【サービス連携】からAPIトークンを確認できるので、メモしておきましょう。

また、グループチャットのIDもメモしておきましょう。IDはURLから確認できます。
https://www.chatwork.com/#!rid{グループチャットのID}

フォームを作る

今回はContact Form 7を使いました。
wpcf7_mail_sentアクションにフックして、Chatworkに通知します。

function my_wpcf7_send_chatwork( $wpcf7_cf ) {
  $form_id = $wpcf7_cf->id();
  if ( $form_id == 123 ) {  // フォームの投稿ID
    $submission = WPCF7_Submission::get_instance();
    if ( $submission ) {
      $posted_data = $submission->get_posted_data();  // 送信データを取得
      switch ( $posted_data['your-type'][0] ) {
        case 'サービスに関するお問い合わせ' :
          $room_id = 00000000;  // グループチャットのID
          break;
        case '採用に関するお問い合わせ' :
          $room_id = 00000001;  // グループチャットのID
          break;
        default :
          $room_id = 00000002;  // グループチャットのID
          break;
      }
      $url = 'https://api.chatwork.com/v2/rooms/' . $room_id . '/messages';
      $data = array(
        'body' => '[info][title]' . $posted_data['your-name'] . 'さんから' . $posted_data['your-type'][0] . 'がありました[/title]' . $posted_data['your-content'] . '[/info]'
      );
      $headers = array(
        'X-ChatWorkToken: xxxxxyyyyyzzzzz'  // APIトークン
      );
      $context = array(
        'http' => array(
          'method' => 'POST',
          'header' => implode("\r\n", $headers),
          'content' => http_build_query($data)
        )
      );
      $contents = file_get_contents($url, false, stream_context_create($context));
    }
  }
}
add_action('wpcf7_mail_sent', 'my_wpcf7_send_chatwork');

以上で実装完了です。

コメント