LINEでビンゴゲームができるBOTを作りました
ビンゴゲームの基本機能をASP.NETのWeb APIで、LINEとの連携部分(BOT)をAzure Functionsで作りました。
例によってソースコードをGitHubにて公開していますので、覗いてみてください。
BINGO Web API
ビンゴゲームの基本的な機能は、Azure App ServiceでホストしたASP.NET CoreのWeb APIで提供します。
次のような、ごく基本的な機能のみをREST APIで提供しています。
- ゲームを作成する
- ゲームにカードを追加する
- 番号を引いてゲームを進める
- 現在のゲームの状態を取得する
- 現在のカードの状態を取得する
詳しくは、Swaggerさんが生成してくれたAPIリファレンスをご確認ください。 http://bingowebapi.azurewebsites.net/swagger/
LINE BOT Function
LINE BOT 関連の機能は、Azure Functionsで処理しています。
主に次のような処理を行っています
- LINEユーザーからのメッセージを受け取る
- メッセージの内容に応じてゲームの開始、参加、進行などを行う。
- 状況に応じたBINGO Web APIを呼び出す。
- ゲームの進行状況、その他メッセージを LINEユーザーに送信する
開発環境、Frameworkとか
BINGO WebAPI
Web APIの開発にはVisual Studio 2017を使用しています。
「ASP.NET Core Webアプリケーション」のプロジェクトテンプレートを使用して作成しました。
DB関連はAzure SQL Server + EntityFramework Coreを使用しています。
LINE BOT Function
Azure Function Tools for Visual Studio 2017
LINE BOTの開発には,「Azure Function Tools for Visual Studio 2017」というツールを使用しています。
このツールを使用するとAzure Functions の開発がとてもに楽になります。
- Azure Functions のプロジェクトテンプレートが使用できる
- 開発~(ローカル)デバッグ~デプロイをVisual Studioだけで簡単に行うことができる
- C#スクリプト(.csx)ではなくビルドしたアセンブリ(.dll)を配置する
※ このツールは(2017年7月現在では) プレビュー版のVisual Studio (Visual Studio 2017 Preview(2))でないとインストールできないようです。 お試しする場合は、ご注意を。
- Visual Studio 2017 Tools for Azure Functions - Visual Studio Marketplace
- プレリリース版 Visual Studio 2017 | Visual Studio プレビュー
Azure Table Strage
ゲームに参加しているLINEのユーザー情報と、BINGO APIの発行するゲームID、カードIDとの紐づけなどの情報はAzure Table Strageに保存しています。
遊び方
LINE BOTを友達登録します
BINGO BOTというアカウントを友達登録するとお試しで遊ぶことができます。
BINGO BOT
※ ただし、開発中のお試し版であることをご承知の上でご利用ください。 また、予告なくサービスが停止したり、仕様が変更されたりする場合がありますので予めご了承ください。
ゲームオーナーとプレーヤー
BINGOゲームを始めるには、ゲームを作成・進行するゲームオーナー1人と、ゲームに参加するプレーヤー(複数人)が必要です。
ゲームオーナーの操作
ゲームを作成する
まずは、ゲームオーナーがゲームを作成します。
やり方は簡単で、BINGO BOT に「0」または「開始」と送るだけです。
合言葉を決める
するとLINE BOTから、合言葉の設定を促すメッセージが帰ってきます。
合言葉は、プレーヤーがゲームに参加するために必要なキーワードです。
20文字まで好きな言葉を返信してください。 合言葉を設定しないこともできます。(その場合は「なし」と返します)
ゲームIDと合言葉をプレーヤーに伝える
合言葉を送信すると、ゲームが開始されLINE BOT からゲームIDが返信されます。
このゲームIDと、指定した合言葉を参加するプレーヤーに伝えて、入力してもらいます。
番号を引く
あとは、適当な文字をBINGO BOT に送信するだけです。 1回送信するたびに1つ番号を引きます。
ゲームを終了する
ゲーム進行中に「終了」と入力するとゲームを終了できます。(終了するまで次のゲームを遊ぶことができませんので注意)
プレーヤーの操作
ゲームに参加する
ゲームに参加するには、BINGO BOTに「1」または「参加」と送ります。
ゲームIDと合言葉を入力する
するとLINE BOTからゲームIDと合言葉を入力するよう促すメッセージが返ってくるので、ゲームオーナーから伝えられたそれらを入力します。
カードを取得する
ゲームへの参加に成功すると、BINGOカードが返信されます。
あとは、ゲームオーナーが番号を引くたびに、BINGO BOTから引いた番号が通知されます。
ゲーム進行中、何かメッセージを送ると、ヒットした番号を反映した現在のカードが取得できます。
まとめ
まだまだ作り込みが足りていないので、もうしばらくはこいつの開発で楽しめそうです。
とりあえず、BINGOカードは画像にしたいですね。
あと、今後は開発中にハマったこととか、調べたことなどTIPS的な小ネタを記事にできればいいな。