【a-blog cms ver2.1】フォーム通知をメール以外で通知(ChatWork)
a-blog cms ver 2.1がリリースされました。
6月23日、a-blog cms5周年の誕生日にver2.1がようやくリリースできました。 ver2.1では特にユニット周りが大きくバージョンアップしてますので、良かったら触ってみてください。 あとSNSログインもオススメです。
このエントリーはリリース&5周年記念のスタッフブログリレーの記事になります。 詳しい事はこちら→7月7日まで平日毎日ブログをリレー更新
フォームの通知をメール以外は利用してみる
ver2.1の新機能として、お問い合わせフォームなどから管理者にメールが飛ぶタイミングでHookポイントを用意したので、メール以外でも好きなサービスに通知を投げる事が出来るようになりました。
フックするには/php/ACMS/User/Hook.phpをカスタマイズします。
/** * フォーム Submit時 * * @param array $mail 自動返信メール * @param array $mailAdmin 管理者宛メール */ public function formSubmit($mail, $mailAdmin) { }
引数に自動返信メールと管理者宛メールの情報が入っていますので、後はごにょごにょすればいいだけです。
ChatWorkと連携してみる
Hookポイントを紹介しただけでは、面白くないのでChatWorkと連携してみたいと思います。
ChatWork APIは現在プレビュー版として限定公開されています。仕様など変わると思いますのでお気をつけ下さい。
APIトークンの取得
現在ChatWork APIを使用する為には、APIの利用申請が必要です。以下のドキュメントを参考に 利用申請をしましょう。 http://developer.chatwork.com/ja/
申請が通ると動作設定にAPI発行という新しい設定項目が増えてますので、 ここでAPIトークンを発行しておきます。
ChatWorkにフォームの通知を送ってみる
では実際にコードを書いてChatWorkにメッセージを送ってみましょう。
/** * フォーム Submit時 * * @param array $mail 自動返信メール * @param array $mailAdmin 管理者宛メール */ public function formSubmit($mail, $mailAdmin) { $apiToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // APIトークン $roomId = 'xxxxxxxx'; // ルームID URLで#!ridより後の数値 $endpt = 'https://api.chatwork.com/v1/rooms/'.$roomId.'/messages'; // エンドポイント // データの組み立て $body = "[info][title]".$mailAdmin['subject']."[/title]".$mailAdmin['body']."[/info]"; $data = array( 'body' => $body, ); $headers = array( 'Content-Type: application/x-www-form-urlencoded', 'Content-Length: '.strlen($body), 'X-ChatWorkToken: '.$apiToken, ); $options = array('http' => array( 'method' => 'POST', 'header' => implode("\r\n", $headers), 'content' => http_build_query($data), )); // 送信 $contents = file_get_contents($endpt, false, stream_context_create($options)); }
$apiTokenには先ほど取得したAPIトークンを、$roomIDにはチャットルームのURLにある数値を設定して下さい。
こんな感じでAPIを叩くとChatWorkにメッセージを送る事ができます。
という事でフォームとChatWorkの連動について紹介してみました。 今回はChatWorkと連動してみましたが、他のサービスなどに通知を送っても面白いと思います。 よかったらお試しを。