gas
GoogleSpreadSheet
Slack
slackbot

GASを用いてSlack上で購買を構築,運営した

私の所属する研究室にて電子マネーの導入を検討しました。
LINE PayやICカードでの取引を検討しましたが、そもそも…

現金払いより手間になっては、電子マネーは普及しない!

やはり誰が買ったのか、何を買ったのかの認証が一番のキモです。
そこで、私はネット通販のようにSlackの専用チャンネルからポチれる電子マネーを導入しました。

slackを活用する利点として,
1.普及している所であれば開くことへの手間が少ない
2.利用者はログインにて認証ができている
3.reactionや豊富なAPIで簡易的な購入コンソールを作ることができる

が挙げられます。早速ご紹介していきましょう。

商品購入編

実際の商品の購入方法をご紹介します。
sample1.jpg

こちらが私の研究室のshopというchannelの投稿です。
商品の入荷については,担当である僕が入荷時に画像のようなフォーマットで商品情報を投稿します。

そして,どうやってポチるのかと言いますと,商品下の購入っぽいボタンを押せばOKです。このreacitonはbotが勝手に付けてくれます。
実際にペットボトル飲料をポチってみましょう。すると……

sample2.jpg

やりました,botからDirect Message(slackBot)にて支払い処理完了の通知が届きました。

内部的には,GASより毎分channel.Historyへアクセスし,reactionの情報を受け取り,決済を行なっています。
reactionは1種類につき1人1回しか押せないため,基本的には決済が発生した商品の投稿については毎回削除し,再度reactionのないまっさらな状態でbotが再投稿を行います。

これ実はreactionを削除すれば良いわけですが,現状私の実装だとAPI経由でAPI取得者以外のreactionを削除する事ができませんでした。
これはAPIのscopeの問題だと思っているので,もう少し調べてみようと思っています。

<追記:2017/11/28>
やはり現状は他人のreactionを消すことはできないようです。


マネーチャージ編

電子マネーのチャージの方法をご紹介します。
sample3.png

こちらが,電子マネーのチャージのための画面です。
チャージについては利用者が担当者へ現金を受け渡し,担当者が上記画面より利用者名を選択,金額を入力することでチャージが完了します。

内部的には,誰がいくら持っているかはGoogle SpreadSheetに記録してあります。購入やチャージは基本的にGASを使ってSpreadSheetを弄っているだけですね。上記画面についてもGASからHTMLを吐き出した簡易コンソール画面になります。

sample4.jpg

チャージも同様に,slackbotにてDirect Messageで通知がきます。

LINE Pay等の既存のものも検討しましたが,全員がクレジットカードや銀行口座の登録をしてサービスを使ってくれるビジョンが見えませんでした。これは利用する環境によってもおそらく変わってきますね。

以上,slackは結構電子マネー(購買システム)との相性は意外と良かったよというご紹介でした。