tech.guitarrapc.cóm

Technical updates

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

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

https://qiita.com/betchi/items/8e5417dbf20a62f2239d

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

https://osa030.hatenablog.com/entry/2016/04/08/214939

https://qiita.com/yuya_takeyama/items/0660a59d13e2cd0b2516

デベロッパー登録

は、すでに多くの例があるので飛ばします。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サンプルにも追加しておきました。

https://github.com/guitarrapc/AzureFunctionsIntroduction

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

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

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

Bot処理はメッセージキューで負荷にも耐えられるようにするなど、いろんな実装方法が適用できます。API Gateway + LambdaやAzure Functionsは、どの実装でもロジックを記述するのに有効な手段なのでぜひ試してみてください。