みなさまこんにちは。竹橋ともうします。
突然ですが、子供が生まれそうになった時、みなさまはどうしているでしょうか?
私ごとで恐縮ですが、この度子供を授かりました。
勤務先まで片道2時間ほどを要するため、奥さんからの「生まれそう!」の連絡は決して逃してはなりません。
そこで、「生まれそうになってるので、はやく帰ることを促す通知ボタン」略して「生まれるかも通知」をつくって、
奥さんに使ってもらおうということにしました。
どうやるか
連絡がきたときに気づけるように、常にもっているスマホにあらゆる方法で通知を送れば大丈夫そう。
陣痛で大変だろうからワンクリックで発動するやつにした方がよさそう。
ということで、
twitterとLineとslackとメールに対して、生まれそうな旨を同時に訴えかけるphpのページを用意することにします。
なにしろ時間がない。(予定日が1月7日で、この記事を書いているのが12月28日)
下記のように定型文を送るようにします
//共通設定
$message = "うまれそうです。\nほんとうにありがとうございました";
まずLineですが、、、
断念しました。
APIはありますが、line@アカウントを取得する必要があるようで、
これには審査に10日程要するようです。。
生まれてまう。
twitterを設定する
twitterにはDMを送信するAPIがあります。
まずはデベロッパー登録を行いましょう。
APIで動かすアカウントにログインした状態で、下記にアクセスし、登録をすすめましょう。
https://developer.twitter.com/
上記で取得したAPIキーなどを使って設定していきます。
$api_key = 'APIキー' ;
$api_secret = 'APIシークレット' ;
$access_token = 'アクセストークン' ;
$access_token_secret = 'アクセストークンシークレット' ;
$request_url = 'https://api.twitter.com/1.1/direct_messages/new.json' ; // エンドポイント
$request_method = 'POST' ;
// パラメータA (オプション)
$params_a = array(
"screen_name" => "送る相手のアカウント名",
"text" => $message //定型文が入っている
) ;
// キーを作成する (URLエンコードする)
$signature_key = rawurlencode( $api_secret ) . '&' . rawurlencode( $access_token_secret ) ;
// パラメータB (署名の材料用)
$params_b = array(
'oauth_token' => $access_token ,
'oauth_consumer_key' => $api_key ,
'oauth_signature_method' => 'HMAC-SHA1' ,
'oauth_timestamp' => time() ,
'oauth_nonce' => microtime() ,
'oauth_version' => '1.0' ,
) ;
// パラメータAとパラメータBを合成してパラメータCを作る
$params_c = array_merge( $params_a , $params_b ) ;
// 連想配列をアルファベット順に並び替える
ksort( $params_c ) ;
// パラメータの連想配列を[キー=値&キー=値...]の文字列に変換する
$request_params = http_build_query( $params_c , '' , '&' ) ;
// 一部の文字列をフォロー
$request_params = str_replace( array( '+' , '%7E' ) , array( '%20' , '~' ) , $request_params ) ;
// 変換した文字列をURLエンコードする
$request_params = rawurlencode( $request_params ) ;
// リクエストメソッドをURLエンコードする
// ここでは、URL末尾の[?]以下は付けないこと
$encoded_request_method = rawurlencode( $request_method ) ;
// リクエストURLをURLエンコードする
$encoded_request_url = rawurlencode( $request_url ) ;
// リクエストメソッド、リクエストURL、パラメータを[&]で繋ぐ
$signature_data = $encoded_request_method . '&' . $encoded_request_url . '&' . $request_params ;
// キー[$signature_key]とデータ[$signature_data]を利用して、HMAC-SHA1方式のハッシュ値に変換する
$hash = hash_hmac( 'sha1' , $signature_data , $signature_key , TRUE ) ;
// base64エンコードして、署名[$signature]が完成する
$signature = base64_encode( $hash ) ;
// パラメータの連想配列、[$params]に、作成した署名を加える
$params_c['oauth_signature'] = $signature ;
// パラメータの連想配列を[キー=値,キー=値,...]の文字列に変換する
$header_params = http_build_query( $params_c , '' , ',' ) ;
// リクエスト用のコンテキスト
$context = array(
'http' => array(
'method' => $request_method , // リクエストメソッド
'header' => array( // ヘッダー
'Authorization: OAuth ' . $header_params ,
) ,
) ,
) ;
// オプションがある場合、コンテキストにPOSTフィールドを作成する
if ( $params_a ) {
$context['http']['content'] = http_build_query( $params_a ) ;
}
curlを使ってリクエストします。
$curl = curl_init() ;
curl_setopt( $curl, CURLOPT_URL , $request_url ) ;
curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;
curl_setopt( $curl, CURLOPT_CUSTOMREQUEST , $context['http']['method'] ) ; // メソッド
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER , false ) ; // 証明書の検証を行わない
curl_setopt( $curl, CURLOPT_RETURNTRANSFER , true ) ; // curl_execの結果を文字列で返す
curl_setopt( $curl, CURLOPT_HTTPHEADER , $context['http']['header'] ) ; // ヘッダー
if( isset( $context['http']['content'] ) && !empty( $context['http']['content'] ) ) {
curl_setopt( $curl , CURLOPT_POSTFIELDS , $context['http']['content'] ) ; // リクエストボディ
}
curl_setopt( $curl , CURLOPT_TIMEOUT , 5 ) ; // タイムアウトの秒数
$res1 = curl_exec( $curl ) ;
$res2 = curl_getinfo( $curl ) ;
curl_close( $curl ) ;
こちらの記事を参考にさせていただきながら設定しました。
https://syncer.jp/Web/API/Twitter/REST_API/
slack
スラックで作れるbotはかなり拡張性が高いようで、作り込めるようですが、
今回はwebhookを利用して定型文を送るのみのものを用意します。
まずは利用しているslackアカウントでログインをした状態で、下記URLにてwebhookURLを取得しましょう。
https://slack.com/services/new/incoming-webhook
定型文を送るだけなので、下記をphpファイルに記述し、curlコマンドを実行させます。
curl -X POST --data-urlencode "payload={\"channel\": \"#チャンネル名\",\"icon_emoji\": \"アイコンのコード\",\"username\": \"生まれそう通知\",\"text\": \"$message\"}" 取得したwebhookURL
メール
メールなんかもうね、こうしました。
$to = "自分のメアド";
$subject = "生まれそう通知";
$headers = 'From: 自分のメアド'."\r\n";
mb_send_mail($to,$subject,$message,$headers);
これで、自分のメアドに自分のメアドからメッセージが飛んできます。
使ってみてもらおう
奥さんのスマホに、このページをホーム画面に追加してもらって、使ってみてもらいます。
使ってみてもらった結果は、後日記載いたします!!
コメントを残す