Azure Functionsの活用をいろいろ考えていたところで、そういえばLINE BOT APIがトライアルになってました。
Azure Functionsで簡単に爆速10分で作ってみました。
何で作るの
BOTは本来API Gateway + Lambdaなどのようなイベントベース/サーバーレス向きです。HerokuやASP.NET Web APIの例がすでにありますが、今回はAzure Functionsで作ってみましょう。
https://pierre3.hatenablog.com/entry/2016/04/13/234505
https://qiita.com/teyosh/items/567ee416c94c2af2fe91
デベロッパー登録
は、すでに多くの例があるので飛ばします。1万人制限のようですが、まだ登録できたので実はあまり触られてない...?
Callback URL の登録
LINE BOTには、Callback URLが必要です。これは、Azure FunctionsのFunction Urlにポート :443 を追加して登録すればokです。


Server IP Whitelist
Azure FunctionsもWebAppsなので、OUTBOUND IPを取得できます。
Go to App Service Settings > Properties > OUTBOUND IP ADDRESSESにあります。

このIPを、/24で登録すればokです。(LINE BOT登録は、/24~/30で、/32がなくてしょんぼり)

コード
あとは処理を書きましょう。
今回は、テキストにはオウム返し (Echoサーバー)、スタンプにスタンプを返します。
https://gist.github.com/guitarrapc/2ea244ea0cd6d1c4099090d7af08c651
実際にこれで見てみると、うまくいきましたね。

まとめ
GitHubのAzureFunctionsサンプルにも追加しておきました。
こういうBOTは、Slackでもいいのですが、Lineとは使う側のハードルが違うので用途に応じればいいでしょう。
レシピや地図、電車遅延状況、画像の検索や、Vision APIを使った画像解析、マシンラーニングなどいろんなバックエンドが楽しめそうです。
他にも、AWSやAzureリソースの作成などもいけますね。
Bot処理はメッセージキューで負荷にも耐えられるようにするなど、いろんな実装方法が適用できます。API Gateway + LambdaやAzure Functionsは、どの実装でもロジックを記述するのに有効な手段なのでぜひ試してみてください。