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 のようなフローが組み込めるようになると良いなと思います。
参考リンク
- Create a Logic App
- Use Logic App features
- ASP.NET Web API を Azure の API App として動かす - miso_soup3 Blog