ヤマムギ

growing hard days.

*

Twilio APIでOpenWeatherMap APIで取得した天気情報を毎朝モーニングコールする

      2015/10/18


owm-twilio

OpenWeatherMap APIのJsonから取得した気温と天気の情報を、TwilioのAPIを使って毎朝5時にモーニングコール設定してみました。
ソースコード詳細は、GitHubを見ていただければと思います。

デモ動画です。

※SlidShareに発表資料をアップしましたので、概要はこちらをご確認ください。

OpenWeatherMap API Jsonから天気情報を取得する

Twilio APIでメッセージを送るために、次のようなXMLを動的に作成します。

取得する情報は今とおよそ6時間後、12時間後の天気と気温です。

JsonをString変数へ格納

2種類のJsonをString形式で扱う事にしました。

抜粋していますので、全体はGitHub GenerateJsonString.javaを見てください。

指定URLのContentをBufferedReaderに入れて読んだ情報をStringBuilderに追加していきます。

今の天気情報の取得

まず今の天気情報を取得するために、OpenWeatherMap APIのCurrentを取得します。
タイプは「Weather」です。
解析用のクラスは次のようになりました。
抜粋していますので、全体はGitHub WeatherJson.javaを見てください。

クラスの階層化や配列のところは少し調べながら作りました。
APIのURLを叩いて得られるJsonの形式にあわせて作っていく感じです。

JsonをGsonを使ってパースする

JsonのパースはGsonライブラリを使ってやりました。

抜粋していますので、全体はGitHub GenerateXMLFile.javaを見てください。

GsonのfromJsonで解析用クラスを引数に渡してJavaオブジェクト化しています。

XMLに設定するメッセージのための文字列を生成しています。

およそ6時間後と12時間後の予報の取得

OpenWeatherMAP APIの「Forecast」では3時間単位で今の時間帯を含む未来のデータが取得出来ます。

まずは、解析用クラスです。
抜粋していますので、全体はGitHub ForecastJson.javaを見てください。

先ほどの「Weather」より階層がひとつ深くなっています。

およそ6時間後と12時間後のJsonのパース

抜粋していますので、全体はGitHub GenerateXMLFile.javaを見てください。

リストの順番はOpenWeatherMAP APIの仕様を信じるとして添え字で3番目と5番目がおよそ6時間後、12時間後になるはずなのでこれでXMLメッセージ用のStringを生成しています。

XMLファイル生成

ここまでで得たStringでXMLを生成します。

XMLはTwilioの仕様どおりに作成します。

抜粋していますので、全体はGitHub GenerateXMLFile.javaを見てください。

voiceはaliceにしています。
で、やってみて思ったのですが、今のところ漢字の読み間違いはないです。
凄いですね。

Twilio APIを使って自動で電話をかける。

プログラムから電話をかける

素晴らしく簡単です。

抜粋していますので、全体はGitHub TwilioCall.javaを見てください。

propertiesファイルから各パラメータを取得しているので、それぞれ簡単に説明を書きます。

  • ACCOUNT_SID,AUTH_TOKEN
    Twilioのサイトでログインして、「Show API Credentials」で表示されます。
    twilio-api-credentials

  • To
    かけたい相手の電話番号です。

  • From
    発信元となる電話番号です。
    Twilioで購入した電話番号となります。
    トライアルアカウントでは無料です。
    twilio-phonnumber

  • Url
    生成したXMLを置いているURLです。

mainメソッドで各処理を実行する

ほとんどはXML生成のためのコードで、Twilioは本当に数行のコードで出来ました。

毎朝5時に自動で電話をかける

root権限で実行してもらいます。

エラー処理、ログなどはこれから実装していきます。


最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

 - Java, Twilio, Web , , ,

ad

ad

  関連記事

Java SE 7 Silver対策勉強をしながらメモ 2015/2/9

練習問題2日目。 同じ問題にひっかかる。つまづく。 集中力が足りない。 途中から …

Twilioで押されたプッシュボタンに応じてURLをSMSで送信する

ナビダイヤルのような電話自動通話案内で、押されたボタンに応じてWebページのUR …

Googleカレンダーの予定をPHPからXMLで取得してWebページに表示する(現在廃止されたAPIなので使えません)

目次 ご注意本文 ご注意 ※下記の記事で使用していたAPIは2016年現在使用出 …

Oracle Java SE7 Silverを受験してみて

目次 受験の目的勉強方法試験当日 受験の目的 Goldの前提条件だから Gold …

Java SE 7 Silver受験直前 練習問題総確認 2015/2/14

カーリング中継見ながら、iTunesシャッフルでかけながら、練習問題。 集中って …

Java SE 7 Silver対策勉強をしながらメモ 2015/2/8

今日から練習問題を再確認。 ひと通りテキストを終えた安心感からかイージーミスが連 …

Java SE 7 Silver対策勉強をしながらメモ 2015/2/4

本日は継承をどっぷりと。 一気に詰め込んで正解だったかも。 いつものごとくマーク …

Java SE 7 Silver対策勉強をしながらメモ 2015/1/27

だんだんなんだか日記じみてきましたが、試験対策メモをいつものごとくマークダウンで …

WordPressの記事を公開日時に関係なくソート順を変更する

PostMash Customを使う WordPressのプラグインでPostM …

Java SE 7 Silver対策勉強をしながらメモ 2015/1/29

さて本日は少しだけですが、試験対策のメモをいつものごとくマークダウンで記載したの …