tech.guitarrapc.cóm

Technical updates

Azure Functions を使って C# で LINE BOT を作ってみた

Azure Functions の活用をいろいろ考えていたところで、そういえば LINE BOT API がトライアルになってました。

qiita.com

Azure Functions で簡単に爆速10分で作ってみました。

目次

何で作るの

BOT は本来 API Gateway + Lambda などのようなイベントベース/サーバーレス向きです。Heroku や ASP.NET Web API の例がすでにありますが、今回はAzure Functions で作ってみましょう。

pierre3.hatenablog.com

qiita.com

osa030.hatenablog.com

qiita.com

デベロッパー登録

は、すでに多くの例があるので飛ばします。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 サーバー)、スタンプにはスタンプを返します。

gist.github.com

実際にこれで見てみると、うまくいきましたね。

まとめ

Github の AzureFunctions サンプルにも追加しておきました。

github.com

こういう BOT は、Slack でもいいのですが、Line とは使う側のハードルが違うので用途に応じればいいと思います。

レシピや地図、電車遅延状況、画像 の検索や、Vision API を使った画像解析、マシンラーニングなどいろんなバックエンドが楽しめそうです。

他にも、AWSやAzure リソースの作成などもいけますね。

Bot 処理は、メッセージキューで負荷にも耐えれるようにしたりいろんな実装があります。が、API Gateway + Lambda や Azure Functions は、どの実装でもロジックを記述するのに有効な手段なのでぜひ試して欲しいと思います。