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');
以上で実装完了です。
コメント