読者です 読者をやめる 読者になる 読者になる

tech.guitarrapc.cóm

C#, PowerShell, Unity, Cloud Platfrom Technical Update and Features

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

Azure C# AzureFunctions Serverless

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 です。

f:id:guitarrapc_tech:20160414133856p:plain

f:id:guitarrapc_tech:20160414133824p:plain

Server IP Whitelist

Azure Functions も WebApps なので、OUTBOUND IP を取得できます。

Go to App Service Settings > Properties > OUTBOUND IP ADDRESSES にあります。

f:id:guitarrapc_tech:20160414134212p:plain

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

f:id:guitarrapc_tech:20160414134431p:plain

コード

あとは処理を書きましょう。

今回は、テキストにはオウム返し (Echo サーバー)、スタンプにはスタンプを返します。

gist.github.com

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

f:id:guitarrapc_tech:20160414135050p:plain

まとめ

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

github.com

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

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

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

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