Azure Logic App を使用すると、お絵かきする感じでアプリが作れます。
今回は Twitter で Azure が含まれるログを取得したら、自作の Web API を叩くということをやってみます。
Azure Logic App を作成する
プレビューポータル(新しいポータル)からのみ作成できます。
Triggers and actions を追加する
作成したら次の箇所をクリックして、ワークスペース(?)を開く
「Twitter Connector」 を選択する。無い場合は右下の Marketplace から作成出来ます。注意点として、同じ resource group の App のみ選択できます。Authorize して、Twitter アカウントと認証する。
Twitter Connector のキーワードに「Azure」を入力する
- 「New Tweet」を選択する
- Keyword に 「azure」を入力して保存
Web API を用意する
今回は Java で Spring Boot を使用してみました。
詳細は省きますがコードはこんな感じです。Spring Initializrから Web だけチェックしてダウンロードしたものにコピペしてあげれば動くと思います。
package demo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import java.util.Optional; @SpringBootApplication @RestController public class DemoApplication { private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class); @RequestMapping("/") @ResponseBody String home(@RequestParam(value = "tweet") Optional<String> tweet) { if (tweet.isPresent() == false) return "tweet is null"; logger.info("tweet are " + tweet.get()); return "tweet echo that " + tweet.get(); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
これで、gradlew bootrun
をすると Tomcat が立ち上がります。 http://localhost:8080/?tweet=aaaa
と呼び出せば、aaaa
が返ります。
ngrok で公開する
このままだと、azure から接続できないので、ngrok を使って公開します。
localhost はそのまま立ち上げておいて、 ngrok 8080
を実行するとこんな感じになります。
forwarding のアドレスを実行できることを確認します。
Azure Logic App から Web API を呼び出す
再び、Azureに戻って、「Trigger and actions」の「HTTP 」を選択して、「GET」の action を選びます。
URI に @concat('http://9a1b70a.ngrok.com/?tweet=', triggers().outputs.body.TweetText)
と入力します。
ここも注意点として、文字列の結合は@concat()
を使います。http://9a1b70a.ngrok.com/?tweet=@triggers().outputs.body.TweetText
としたいところですが、うまくいきませんのでご注意ください。
動かしてみる
うまくいくと、Azure のログがこんな感じで出ます。
ログをクリックした詳細です。
ローカルの Web API もこんな感じででます。
まとめ
twitter から取得して、なにかするというのがすぐに出来ました。このほかに、twilio や facebook と連携もできますし、間にフィルター的な感じの処理を入れることも出来ます。これは便利ですね。
今回作成したアプリを Azure API App として公開すれば、他のアプリと連携も可能になります。
個人的には Enterprise Integration Patterns - Splitter や Aggregator のようなフローが組み込めるようになると良いなと思います。