azure functionsでlinebotを作ってみた

8
Azure Functionsで Line Botを作ってみた 2017年3月15日 第6回 城東.NET勉強会

Transcript of azure functionsでlinebotを作ってみた

Page 1: azure functionsでlinebotを作ってみた

Azure FunctionsでLine Botを作ってみた

2017年3月15日

第6回 城東.NET勉強会

Page 2: azure functionsでlinebotを作ってみた

まずは自己紹介・名前

木下 裕之

・HN:Kingkino

・SNS

Twitter @kingkinoko FaceBookやってます。GitとLinkedInもちょこっと・・・。

・Azure暦:6年

・Azure Function暦:7ヶ月

・MCSE : Cloud Platform and Infrastructure 2017

(MCP 70-532 : 70-533 : 70-534)

※この資料は2017年3月15日時点での情報を元に作成しています。

Page 3: azure functionsでlinebotを作ってみた

Azure FunctionsでLine Botを作った経緯

ネットで検索してもAzure FunctionsとC#でLine Bot作ったという情報があまり出てきません。検索して出てくる目ぼしいサイトは下記のサイトくらいです。

・ Azure Functions + Node.jsのサンプルhttp://qiita.com/yorifuji/items/7f892564958cf464a812http://qiita.com/maaya8585/items/caf5c79610ed75b051a0

・ WebApps + C#のサンプル (BOT API Trial)(ピエールさんのブログ)http://pierre3.hatenablog.com/entry/2016/04/13/234505

・ Azure Functions + C#のサンプル (BOT API Trial)( guitarrapc_techさんのブログ)http://tech.guitarrapc.com/entry/2016/04/14/135520

・ WebApps + C#のサンプル MSの中の人のサンプル、※現時点で一番利用しやすそうhttps://blogs.msdn.microsoft.com/kenakamu/2017/01/10/linebotwithcsharp/

その他にもpythonやJAVA、Ruby等で作ってみたという情報はあるのですが最新のMessage APIとAzure Functions + C#で作成したという情報がなかったので開発に着手しました。ちなみにLine Message APIは昨年の9月にリリースされています。

Page 4: azure functionsでlinebotを作ってみた

Azure FunctionsでどんなLine Botを作ったのか

Azure Functions + C#でLine Botを作ってみました。Bot名は「大変よくできました!」で無条件で誉め続けてくれるBotです。

年を重ねる度に褒めてもらう機会が減り褒める事が多くなってくると思います。誰しも褒めて貰える事は嬉しいのでそんな人向けをコンセプトに作ってみました。

暫くの間、公開しているのでよければ友達使ってみてください。

作っておいてなんですがやればやるほど空しくなるので是非お試しあれ。

Lineの友達登録からQRコードで登録を選択して右記のQRコードを読み取ってください。

※なお、このBotは予告なく削除しますので予めご承知おきください。

Page 5: azure functionsでlinebotを作ってみた

Azure Functionsで動くLine Botの仕組み

Azure FunctionsはHttpTriggerCsharpテンプレートを利用して作成します。LineのMessaging APIにAzure FunctionsのWebhook URLを登録して連携します。今回利用したMessage APIはWebhook(Lineからの通知)とReply Message(Functionsからの返信)です。

Azure FunctionsのWebhook URLを登録する

HTTP Trigger Csharp

Reply Message

HTTP trigger

HTTP output

Azure Storage

②Line Reply Message APIにリクエスト

①Webhookによるトリガー

AzureStorageに配置したデータを読み込む

③HTTPtriggerのレスポンスを返却

Page 6: azure functionsでlinebotを作ってみた

苦労した点

ネットで検索しても情報があまり出てこない系の開発だったので情報が少なくて難儀しました。Message APIのリファレンスはあるのですが何故かC#のサンプルがないという悲しい現実もあります。GOですらあるのに。

あと、Azure Functions + C#は本当に開発しづらいです。VS2015でもインテリセンスが効かない部分が多いのとMessage APIの連携がWebHookのためローカルの開発環境だとIFが通らなかったり、仕方ないのでAzure PortalのFunctions Editorを利用するがメモ帳で開発するのと同じレベルで実行時にしかエラーが判断できなかったりと苦労しました。

C#のサンプルがないリファレンス Functionsの開発画面

Page 7: azure functionsでlinebotを作ってみた

Azure FunctionsでLine Botを作ってみた感想

「ハマる事もあるけれど、私Azure Functionsが大好きです。」

と、言えるようになりたい・・・。

最初はそこそこはまりましたけど、一回作り方を覚えてしまえば大して苦労せずに作れると思います。Cognitive Serviceと組み合わせると面白いBotが作れるんじゃないかと画策もしています。とりあえずもう少しまともなやり取りができるようにLUISあたりを使ってみたら面白いんじゃないかな。もちろん、「りんな」は目指しません。

無料アカウントで作成しているのでいろいろと制限はありますが有料で利用できるカルーセル等のリッチUIや認証機能を使って最終的な野望である「モスバーガーのチャットBot注文」が作れるといいなぁなんて思ってます。

最後に・・・・

Page 8: azure functionsでlinebotを作ってみた

参考:Azure Functionsの構築方法とLine message APIの開設と設定方法とサンプルソース

LINE BUSINESS CENTERhttps://business.line.me/ja/services/bot

LINE BOTの作り方を世界一わかりやすく解説(1)【アカウント準備編】http://qiita.com/yoshizaki_kkgk/items/bd4277d3943200beab26

LINE API Referencehttps://devdocs.line.me/ja/

Azure Functionsの開発環境構築http://www.buildinsider.net/pr/microsoft/azure/dictionary06

Azure Functions + C# Line Echo Bot Samplehttps://github.com/kingkino/kokoni-SmapleLineEchoBot

Azure Functions + C# Line Praise Line Bothttps://github.com/kingkino/kokoni-PraiseLineBot