LINEでビンゴゲームができるBOTを作りました

ビンゴゲームの基本機能をASP.NETのWeb APIで、LINEとの連携部分(BOT)をAzure Functionsで作りました。

例によってソースコードGitHubにて公開していますので、覗いてみてください。

github.com

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 の開発がとてもに楽になります。

※ このツールは(2017年7月現在では) プレビュー版のVisual Studio (Visual Studio 2017 Preview(2))でないとインストールできないようです。 お試しする場合は、ご注意を。

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つ番号を引きます。

ゲームを終了する

ゲーム進行中に「終了」と入力するとゲームを終了できます。(終了するまで次のゲームを遊ぶことができませんので注意)

f:id:pierre3:20170718230822p:plain:w300 f:id:pierre3:20170718231038p:plain:w300 f:id:pierre3:20170718231049p:plain:w300 f:id:pierre3:20170718231102p:plain:w300

プレーヤーの操作

ゲームに参加する

ゲームに参加するには、BINGO BOTに「1」または「参加」と送ります。

ゲームIDと合言葉を入力する

するとLINE BOTからゲームIDと合言葉を入力するよう促すメッセージが返ってくるので、ゲームオーナーから伝えられたそれらを入力します。

カードを取得する

ゲームへの参加に成功すると、BINGOカードが返信されます。
あとは、ゲームオーナーが番号を引くたびに、BINGO BOTから引いた番号が通知されます。
ゲーム進行中、何かメッセージを送ると、ヒットした番号を反映した現在のカードが取得できます。

f:id:pierre3:20170718231127p:plain:w300 f:id:pierre3:20170718231150p:plain:w300 f:id:pierre3:20170718231201p:plain:w300 f:id:pierre3:20170718231205p:plain:w300 f:id:pierre3:20170718231213p:plain:w300

まとめ

まだまだ作り込みが足りていないので、もうしばらくはこいつの開発で楽しめそうです。
とりあえず、BINGOカードは画像にしたいですね。  

あと、今後は開発中にハマったこととか、調べたことなどTIPS的な小ネタを記事にできればいいな。