KDL BLOG

水族館でLINEを活用してみた!〜Azureサーバーレスでバックエンドを構築編〜

こんにちは。Progressive Development チームの金谷です。

前回のブログ(水族館でLINEを活用してみた!〜展示物をもっと楽しめる、来園者向けLINE公式アカウントを開設〜)で水族館でのLINE活用事例をご紹介させていただきました。

今回は、どのような仕組みで水族館でのLINE活用を実現したのか、バックエンドをご紹介します。

水族館でのLINE公式アカウント活用

どうLINEを活用したかは前回のブログでご紹介していますが、水族館への来館前や来館後だけでなく、来館中の方々も楽しめる、館内の展示と連携したLINE公式アカウントを開設しました。

LINEが公開しているMessaging APIを使うことで、以下の機能を実現しました。

line_suma_01.jpg

LINEのMessaging API

Messaging APIを使って、LINE(LINE公式アカウント)上に企業独自のアプリケーションを構築する場合、ボットサーバーを用意することでLINEプラットフォームとデータ交換が可能になります。このボットサーバーは、JSON形式のデータをHTTPSで送受信できればOKです。

line_suma_02.jpg

ユーザーがLINEにメッセージを送信すると、LINEプラットフォームからボットサーバーのWebhook URLに、Webhookイベントが送信されます。ボットサーバーは、受け取ったWebhookイベントに応じて、ユーザーに応答します。

今回は、このボットサーバーをAzure Functionsに代表されるMicrosoftのサーバーレスコンポーネントで構築してみました。

システム構成

line_suma_03t.jpg

Azure FunctionsとAzure Queue Storage

1つ目のFunctionsは、HTTP Triggerでユーザーが送信したメッセージを受け取り、受け取ったメッセージをQueue Storageに追加します。2つ目のFunctionsは、Queue Storageへのデータ追加をトリガーとして、メッセージ内容に応じた処理を行い、ユーザーにメッセージを返信します。

Queue Storageを間に挟み非同期な処理とすることで、LINEプラットフォームからボットサーバーへのメッセージの移動を待たせないようにしています。以下の記事を参考にさせていただきました。

Azure Cosmos DB

クイズやユーザーデータを保持するDBは、先月(2020年3月)から5GBストレージまで無料で利用可能になったAzure Cosmos DB を使いました。

Azure Functionsも従量課金プランでは毎月100万回の呼び出しが無料です。Azure Functions + Cosmos DBを無料で使い始めることができるようになったのは、プライベートな開発でも使いやすくて嬉しいですね。

LUIS(Language Understanding Intelligent Service)

チャットボット機能を実現するために、自然言語処理(文章の意図やエンティティの抽出)を行うAzure Cognitive ServiceのLUISを使いました。

過去のプロジェクト(音声自動応答による「双方向の展示」という試み)では、GoogleのDialogflowを使用したこともあります。ノンコーディングで対話モデルを生成し、意図やエンティティを抽出できる点は同じですが、LUISは、公開ボタンをクリックするだけで、HTTPSでアクセス可能なエンドポイントURLが発行されるので、取り回しのしやすさを感じました。

おわりに

今回はAzureのサーバーレスコンポーネントを使い、水族館でのLINE活用を実現しました。

Azureは、チャットボット機能を実現するためのサービスとしてLUISの他、以前KDLブログでご紹介(Microsoftが開催するテクニカルカンファレンス【Ignite The Tour Osaka】で登壇してきました)したQnA Makerも提供しているなど、インテリジェントなアプリケーションを構築するためのCognitive Servicesが強いと感じています。引き続き、Azure × LINE、Azure Cognitive Service × LINEで面白い顧客体験を造っていきたいと思います。

KDLではこのようなAzure × LINEの活用を支援しておりますので、企画から開発・運用までお気軽にご相談ください。