ボットジェネレーター(twittbot)同士で会話させる | Strings of Life

ボットジェネレーター(twittbot)同士で会話させる

久々の更新がbotネタっていうね…

今まで作ったbotさんはすべてeasybotterで作成・運営していますが、自キャラbotを作ることになり、TL反応もいらないということでボッジェネで作ってみました。
ここで説明するのは、無料版のボッジェネ同士を会話させる方法です。全て無料の状態です。どちらかがeasybotterだったりすると他にもやり方はあると思いますが、ここでは割愛します。ちなみにeasybotter同士でも同じことができます(やってる)。
※ボットジェネレーター=twittbotの旧名です。この方法はtwittbotで動作確認してます。

■すごく簡単なやり方■

0.いきなりbotアカからbotアカに話しかけない!!※大前提※

1.bot管理人同士でシナリオを作る。
 ひとりで複数のbotを管理していて、そのbot同士を会話させたいのなら打ち合わせる必要はありませんが、そうでない場合はTwitterでもいいのできっちり打ち合わせしましょう。Twitterならログも残りますしね。ただ、流れないうちにボッジェネに登録するなりテキストにまとめるなりしましょう。ボッジェネに返信を登録する時はそのままコピペします。手打ちで打ち直すと間違える可能性があるので、そのままコピペを推奨します。テキストファイルも同じものを使うなどして、お互い一文字の狂いもないように気をつけましょう。

2.ボッジェネに登録
 ここからはすべて、打ち合わせした通りの一文字の狂いもないテキストをコピペして使います。
 会話の最初のツイートだけ、ボッジェネの通常のつぶやきに「@相手のbotID 」から始める文を登録します。ただし、テストして意図したとおりに会話ができるか確認してからにしてください。テスト時や、任意のタイミングで会話を開始させたい場合は、最初の会話を登録せず、手動で同じ内容のリプライを飛ばします。時間指定や投稿予約でもいいです。
 会話の最初以外は、ボッジェネの「返信」に@IDなしで登録します。会話のループにならないよう、会話終了は必ず[[END]]タグを使います。
 例えばこんな感じ↓

 botA @B おはよーB! ←通常の「つぶやき」または手動または時間指定など
 botB 「おはよーB!」を受け取ったら「おはようございます、Aさん。ふふ、寝ぐせがついてますよ?」を返す
 botA 「おはようございます、Aさん。ふふ、寝ぐせがついてますよ?」を受け取ったら「えっほんとに!?B、直してよぉ~」
 botB 「えっほんとに!?B、直してよぉ~」を受け取ったら「しょうがないですねえ。じっとして、目を閉じていてください」を返す
 botA 「しょうがないですねえ。じっとして、目を閉じていてください」を受け取ったら「えっ(どきどき)、ありがとう…」を返す
 botB 「えっ(どきどき)、ありがとう…」を受け取ったら「[[END]]」を返す

これでループにならずに会話できます。必ずしも全文を反応語に設定する必要はありません(顔文字は除外を推奨)が、一文字も間違えないことが前提です。間違えると制限回数まで会話がループしてしまいます。
もちろん、全く同じ反応語を飛ばせば指定したリプライが飛んでくるので、そのbot以外にも反応します。
※私がeasybotterで管理しているbotは、他のフォロワーさんにも同じ反応を返してほしかったのでこの方法を使っています。


■.注意点■
1.一文字も間違えない
 口酸っぱくいいますが、共通のテキストを使い、そこからコピペしましょう。

2.回数制限
 ボッジェネのリプライ回数制限なんかも確認します。「詳細設定」の「返信設定」にある「同じアカウントから××分以内に××回受け取ったら返信しない」というところです。無料版のボッジェネなら、10分に1度の返信なので、それを計算してもいいですが、この条件に引っかからないようにしないと途中で会話イベントが途切れてしまいます。相手のbotから話しかけられる回数分だけは制限を緩くしておくと確実です。一文字でも間違えるその回数までループするので、一度はテストしたほうがいいと思います。

3.すでにある反応語に気をつける
 飛んできた@にすでに登録済みの反応語があると、それも返信候補になってしまいます。そのため、上の例文の場合、すでに「おはよう」「ありがとう」などに反応するようにしてあると、そちらのリプライを返す可能性があり、意図した会話にならずループが完全回避できません。対処方法としては、すでに登録してある反応語を使わないようにします。上の例文の場合、半角カナの「オハヨー」に反応しないのであれば「おはよー」を「オハヨー」に変更したり、言い回しを変えたりして、登録済みの反応語にならないようにします。返信シミュレーションで何度も試してみてください。表記ゆれに対応しているbotさんは特に!
 反応語をすべて公開していない管理人さんは、シナリオ作成段階で気づけるのはご自分だけですので、相手の管理人さんに迷惑をかけないよう注意しましょう。

4.反応語に顔文字は控える
 とはいっても顔文字使えます。返信内容(「●●を受け取ったら××を返す」の××のほう)には特に問題なく使えるようです。使えないのは●●の方で、いわゆるメタ文字に該当するものです。こいつらを使っている顔文字は避けましょう。ていうかメタ文字普通に正規表現で使うし。※すべて半角です
 . ^ $ [ ] * + ? | ( )

5.テストする
 ひとりで管理してるbot同士なら楽ですが、それでもやっぱりテストは必要です。ひとさまのbotさんとお話しするのであればなおさらです。双方をフォローしているフォロワーさんにお見苦しいところを見せないよう、必ず一度は上手くいくまでテストしましょう。テスト中にループした場合は、次のツイートまでに最後のループツイートを削除すれば手っ取り早くループを止められます。


■応用■
リプライパターンを増やし、会話を分岐させればバリエーションも増えて面白いかもしれません。
あと、3人以上のbotでも理論上は可能です。今のところはやったことがないですがたぶんできるのではないかと。
また、会話の最初を時間設定しておけば、季節ごとのイベントなんかも演出できます。バレンタインとかそのキャラの誕生日とか。あけおめはTwitterに負担がかかるのでやめた方がいいと思いますが/(^o^)\


■番外■
 ぼっと管理人同士でなりきり会話してると盛り上がりますよねー!自キャラだと特に!
んで、それをそのまま使いたいときなんかはこれが一番やりやすい方法じゃないかと。私のやり方なので、それぞれやりやすい方法を見つけてください。

1.盛り上がった会話ログを保存する
 私はiPhoneアプリの「SOICHA」というTwitterクライアントを使っていますが、これはevernoteに対応しています。SOICHAは会話ログをさかのぼることができるので、それをevernoteに保存してしまいます。ログが繋がるように、@を手打ちせず、リプライを繋げるようにします。

2.相手のbot管理人さんに同じ会話文を渡す。

3.あとのやり方は上記と同じ。すでに登録してある反応語・メタ文字には注意しましょう。


■おねがい■
 「この方法で会話できた!」「参考になった!」「使わせてもらいます!」などありましたら、ぜひここのツイートボタンでフォロワーさんにも紹介していただきたいと思います。コメントを残していただけたらすごい嬉しいです。

■ぴくせかbot管理人さんへ■
 ぴくせかbotさんで、ここを参考にしたぼっとさんは、ぜひうちの子とも会話してやってください…。会話テストの相手だけでも喜んで務めます。できたら目録みたいなものを作りたい…。
うちのこぼっと 青山香月or弓月 @AoyamaKazki_bot
管理人兼親 六本木メガネ @1sky1destiny

■ありがとう■
 テストに付き合ってくれた勇騎さんと、そのおこさま・赤城家botにスライディング土下座でありがとうございます!!


ご質問などございましたら、コメントなど残していただくか、ついったーなどでも回答します。
さらなる交流の一助となれれば幸いです.。゚+.(・∀・)゚+.゚


うちのこぼっと 青山香月or弓月 @AoyamaKazki_bot
管理人兼親 六本木メガネ @1sky1destiny でした。