0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

雑談(乱入)用BOT「SPACE PIRATES」を作りました。

Last updated at Posted at 2017-02-17
IMG_9950.PNG

##BOT概要
LINEmessagingAPIを使った雑談(乱入)用BOTです。
LINE内のすべてのトーク(1:1トーク/グループ/トークルーム)に招待できます。
LINEといえばグループで会話することが多いと思うので、グループ内に招待しておくことで会話が楽しくなるようなBOTを目指して作りました。
もちろん1:1トークでの雑談対話APIを使ったBOTとの会話も可能です。

##主な機能

  • 雑談
  • 乱入 & 地図表示

##使い方

QRコードから友達登録をお願いします。

スマホの人は下記からでも友達登録できます。
友だち追加

例えばこんな雑談が可能です。
IMG_9948.PNG

乱入検知時
IMG_9949.PNG

特定の言葉の場合には反応し、世界地図で場所を教えてくれます。
ちなみに地図をタッチするとgoogle mapが開きます。

##乱入について
基本的には某宇宙海賊様のネタの場合に反応します。
また、世界の首都の座標データをASTI アマノ技研様のページよりお借りいたしました。
これにより約200の国名に近い言葉がメッセージ内に入っていた場合に容赦なく乱入可能になりました。
念のため日本の都道府県も対象にしました。
まだ検知率が低いので、今後なにか増やすかもしれません。

##モード

  • サイレントモード
  • トークモード

グループおよびトークルーム内にBOTを招待するとモードの切り替えができます。
モード名をそのままメッセージとして送信することでモード切替が行えます。

サイレントモードでは乱入検知のみを行い、雑談対話を行いません。
普段と変わらない会話の中に突然乱入されたい時に最適です。
グループやトークルームに招待した時の初期設定はこのサイレントモードです。

トークモードではメッセージに対して雑談対話APIを通して全レスします。
1:1トークの場合は常にトークモードになっています。

##雑談対話時の口調

  • デフォルトキャラ
  • 関西弁キャラ
  • 赤ちゃんキャラ

雑談対話時のBOTの口調を変更できます。
この機能は後述の外部APIが提供している機能になります。

モードと口調は1:1トーク時のメニューからも変更出来ます。

##しりとり
雑談対話時に「しりとり」もしくは「しりとりしよう」というメッセージを送信するとしりとりモードになるようです。
この機能も雑談対話APIが提供している機能です。

##使用API

  • NTT docomo 雑談対話API
  • Google Static Maps

##問題点

  • 雑談対話APIが返したメッセージも乱入チェックしているので、雑談対話APIが変な単語を覚えてしまうと無限ループっぽくなる仕様。
  • 「タイ」「マリ」「滋賀」「三重」「奈良」などの文字数が少ないもののヒット率が高い
  • グループおよびトークルーム内でBOT以外の入室があった場合にjoinイベントが飛んでくる(?)(確認中)

##その他、技術的なこととか
サーバはさくらのレンタルサーバを使っています。
基本的な構成はphpとnode.jsです。

メッセージイベント

mecabで形態素解析してカタカナに変換

正規表現で国名にマッチするかチェック

マッチしたらnode.jsから指定時間後に返信するように指示

マッチしなかったらそのままphpで返信

という流れです。

時間差でメッセージを送りたいがためだけにnode.jsを使いました。
node.js側ではsqlite3でリクエストを保存しながらsettimeoutで指定時間後にpostリクエストを返しています。
作り方が甘く、たまにメモリ不足(?)で落ちているときがあって、メッセージの順番が前後するときがあります。
もっといい方法があればどなたか教えてください。

また、Push APIは普通に使うと高額なため、このBOTはBot Award中の無料期間が終われば削除する予定です。

###雑感
LINEmessagingAPIはグループおよびトークルーム内のメンバーの情報やグループ内に何人いるとかグループ名とかが取得できないのが辛かった。
この辺が改善されればゲームなんかが作りやすくなりそう。

あと、1:1トーク画面じゃないとメニューが出てこないっていう仕様も辛い。
メニューを押してもメッセージ送信とかURL開くとかしか出来ないのでそこまで問題にならないのだけれど、せっかくPostback eventが実装されたのだからメニューとかImagemapからも使わせて欲しかった。

##最後に
ネタ的なBOTなので怒られそうな場合には即刻削除します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?