charactorbot (v1.07.000) | 2014-01-11 18:05 |
FrontPage(wikiのトップページ)の表示
このwikiはSourceForge.JP、mixi、Yahoo!、Google、はてな等のアカウントでログインすれば自由に編集することができます。
このキャラボットには大きく分けて以下の4つの機能があります。
投稿は決められたリストの中からランダムで投稿されます。
投稿を行う間隔などは設定することができ、普通の投稿は夜の2時から6時の間はスリープさせておくことができます。
なお解析に使うキーワードは含むかどうか以外に、正規表現を使ってマッチさせることもできます。
返信に関する投稿は自分宛のもの、さらにキーワードの上から優先して返信され、一度返信を行った投稿に対しては二度返信を行いません。
投稿メッセージは改行でリストとして以下のように入力します。
こんにちわ。
今日は、#date#ですよ。
まだ#time#、がんばってね。
#user_name# さん、お疲れ様。
この#stop#タグが含まれる場合は投稿をしません。
#hour_21#このタグは21時台の場合は優先して投稿します。複数存在する場合はランダムに選択します。
#week_7#このタグは土曜日の場合は優先して投稿します。複数存在する場合はランダムに選択します。
#week_1##hour_6##hour_12#このタグ組み合わせは、日曜日、6時台、12時台の場合優先して投稿されます。
#week_6_hour_17#このタグ組み合わせは、金曜日の17時台に場合優先して投稿されます。
以上のようにいくつかのタグを投稿に含めることができます。
#date#は「◯月◯日」に、#time#は「◯時◯ 分」、#user_name#は返信相手のユーザー名に置換されます。
なお、#stop#タグが含まれる場合は投稿を中止します。
ボット同士で会話が続いてしまうようなキーワードに対しては、#stop#タグを返信の中に含めておくことで永久にループしまうようなことを防ぐことができます。
その他、時間優先ポストタグの#week_◯#や#hour_◯#タグがあります。
ボット作成に関わるよくある質問をご覧下さい。こちらに技術的なTipsなども載せてあります。
ボットの設定は、各ボットの編集タグの一番上にあるボットの編集ボタンを押すことで編集することができます。編集項目は以下の通り。
Bot name | ボットの名称、キャラボットのタブの表示に使用されます |
Twitter ID | ボットのTwitterのID |
Consumer key | OAuth認証のためのConsumer key |
Consumer secret | OAuth認証のためのConsumer secret |
Token | OAuth認証のためのAccess token |
Secret | OAuth認証のためのAccess secret |
Timezone | ボットのタイムゾーン、スリープ機能や#hour_x#タグはこのタイムゾーンで設定した時間が使用されます |
一時停止 | ボットを一時的に起動しないようにします、twitter自体に負荷をかけないように不要なボットは一時停止しましょう |
以上の項目を設定し、OKボタンを押すことによって設定されます。ただし、ここの設定はほとんどの方はBot nameか一時停止以外編集されることがないのではないかと思います。
通常ポストでは、基本的に通常ポスト一覧の各行のランダムポストを行いますが、その他に以下の機能の設定ができます。
通常ポスト間隔の設定 | 通常ポスト間隔を設定できます。30分〜1440分(1日)となっています。 |
スリープ機能 | ボットの設定のTimezoneの時間で、夜の2時〜6時の間通常のポストを停止します |
#date#タグ | ボットの設定のTimezoneの時間で、「◯月◯日」に置換します |
#time#タグ | ボットの設定のTimezoneの時間で、「◯時◯分」に置換します |
#br#タグ | 改行に置換され、表示可能なクライアントで改行表示されます (v1.5.4) |
#stop# | ランダムでこのタグが含まれるポストが選択されたときポストを行いません |
#week_x#タグ | #week_1#タグで日曜日は優先投稿。#week_7#は土曜日に優先投稿となります。複数ある場合はそのうちからランダム投稿されます。Timezoneの設定の影響を受けます。 |
#hour_x#タグ | #hour_0#タグで夜0時に優先投稿。#hour_23#で夜の11時に優先投稿となります。複数ある場合はそのうちからランダム投稿されます。Timezoneの設定の影響を受けます。 |
#week_x_hour_x#タグ | #week_6_hour_17#タグで金曜日の夕方17時台に優先投稿となります。複数ある場合はそのうちからランダム投稿されます。Timezoneの設定の影響を受けます。(v1.2.2) |
なお、これらの設定をした直後に最初の投稿がされるようになっています。もし最初の投稿がすぐされたくない場合には、ボットの設定にてボットを一時停止してから編集、保存作業を行ってください。
自分宛ポストへの返信設定では、「@twitter_id」が含まれるタイムラインにのみ反応し、キーワードの検索を行います。キーワードは、キーワード欄の下にあるテキストボックスと追加ボタンを使って追加することができます。
なお、複数のキーワードがある場合は、上へ下へボタンを使って優先度を上から順に設定することができます。上部にあるキーワードの方が優先度が高くなります。例をあげると、キーワードに「東京」と「東京都」がある場合は、より引っかかる可能性の「東京」の方の優先度を下げておかなくては期待したとおりに動きません。
キーワードの有効のチェックボックスは、そのキーワードに反応させるかどうかを設定できます。
なお、正規表現のチェックボックスを入れることで、全体一致の正規表現を記入することができます。ここではJavaの正規表現を書くことができます。詳しくは、
以上のサイトなどを参考にしてみてください。最もよく使う正規表現ではすべてに一致させる「.*」などがあります。その他、複数のキーワードに同時に対応させる「.*(カツオ|ワカメ|タラちゃん).*」のような書き方もできます。Javaの正規表現のチェックには、以下のサイトが便利です。
このサイトにて、上のテキストエリアに正規表現を、下にマッチさせたい文章を入力することでマッチする部分の色が変わってチェックすることができます。
その他キーワードの×ボタンを使うことでキーワードを削除することができます。
キーワードのテキストエリアの左側にあるラジオボタンを選択することで、右のテキストエリアを使って返信の投稿文章を作成することができます。なお、キーワードの左側のラジオボタンにフォーカスが当たっている場合(選択直後など)上下キーで投稿を表示させるキーワードのを変えることができます。
返信の投稿に関して設定できる項目は以下の通り。
自分のタイムラインへの返信間隔の設定 | 返信チェックの間隔を設定することができます。1分〜60分の間で設定できます。twitterの仕様上、twitterへの呼び出し回数には1時間150回までという制限があります。そのため1分の返信間隔にしておくと、最高で1時間90回までしか返信できませんが、60分に1回の返信に設定することで最高149回返信可能になります。ボットの状態を見つつ設定を変えてください。 |
無視するIDの設定 | 特定のユーザーのポストへの返信をしない設定ができます。例えばaisha_botさんとsifueさんのポストには返信しないように設定するには、aisha_bot,sifueのようにカンマ区切りで設定してください。(v1.2.5) |
#date#タグ | ボットの設定のTimezoneの時間で、「◯月◯日」に置換します |
#time#タグ | ボットの設定のTimezoneの時間で、「◯時◯分」に置換します |
#br#タグ | 改行に置換され、表示可能なクライアントで改行表示されます (v1.5.4) |
#user_name#タグ | 返信相手のユーザー名に置換します |
#stop# | ランダムでこのタグが含まれるポストが選択されたときポストを行いません。キーワードと組み合わせることでストップキーワードを設定できます。例えば卑猥な言葉などには反応しないようにする場合や、ボット同士の会話がループしないように設定します。 |
#week_x#タグ | #week_1#タグで日曜日は優先投稿。#week_7#は土曜日に優先投稿となります。複数ある場合はそのうちからランダム投稿されます。Timezoneの設定の影響を受けます。(v1.2.3) |
#hour_x#タグ | #hour_0#タグで夜0時に優先投稿。#hour_23#で夜の11時に優先投稿となります。複数ある場合はそのうちからランダム投稿されます。Timezoneの設定の影響を受けます。(v1.2.3) |
#week_x_hour_x#タグ | #week_6_hour_17#タグで金曜日の夕方17時台に優先投稿となります。複数ある場合はそのうちからランダム投稿されます。Timezoneの設定の影響を受けます。(v1.2.3) |
#group_x#タグ | 投稿内容にマッチした正規表現の()で指定したグループと置換することができます。詳しい利用法は、Q. 返信の中に解析対象のポストの投稿内容を含むことができますか?をご覧ください。 |
#favorite#タグ | 返信をする直前に返信の対象となっている投稿をお気に入り登録します。#favorite#しか投稿内容がない場合や#stop#タグと併用する場合には、お気に入り登録のみを実行し、返信は投稿されません。(v1.3.4) |
以上を設定した後、保存ボタンを押すことで設定が保存されます。ブラウザを間違って閉じてしまうなどで情報が消えてしまうことがありますので、編集中はこまめに保存するか。別なテキストエディタなどでコンテンツを作成し、それを貼りつけて作成することをおすすめします。
<今まで別の方法でBOTを作成していた方>
ここからはPHP言語にてBOT管理している1ユーザーのtomoaki96の所見です。
現在多く利用されているのは、ユーザーの名前を{name}で書いて抽出するPhaさまのプログラミングができなくても作れるTwitterbotの作り方
ソースを利用したソースコード、また".$name."という変数で抽出するbardothodolさまのプログラミングを始める10の理由
の二通りが主流かと思います。(別のキャラボット自動生成サービスはPhaさまのソースコードを利用しています…多分)
この場合、{name}または".$name."とキャラボットサービスの台詞エリアにそのまま貼り付けても、
キャラボットサーバーはjava言語、他サービスまたは他ソースコードの場合はPHP言語ですので、大元のプログラミング自体が違います。
その為、別の方法でbotを管理していたものをそのまま使用する事は出来ません。
ただし、簡単にそれを変換する方法がありますので、良かったら参考にしてみて下さい。
TeraPadという多機能メモ帳を使った「置換」
TeraPadとは、Windowsに始めから搭載されているメモ帳やWordパッドよりも多機能なテキストエディタです。
http://www5f.biglobe.ne.jp/t-susumu/library/tpad.html
からダウンロードし、インストールして利用して下さい。(Mac非対応です)
これまで利用していた台詞内容を、TeraPadに貼り付けます。
メニューバーから「検索」を選択し、「置換」をクリックします。
「置換」のボックス内で、(この場合Phaさまのソースコード利用:ユーザー名を{name}で抽出していた例)
検索する文字列を{name}とし、置換後の文字列を#user_name#と入力します。
ダイアログボックス右側の「すべて置換」をクリックします。
「置き換えますか?」とどこかにダイアログが出てきますので、「すべて」を選択します。
一瞬で#user_name#に変換されます。
なお、メモ帳自身にも「編集」メニューから「置換」する方法があり、簡単ですが、
TeraPadの場合、上に半角英数字10文字ごとにルーラーが付いている為、140文字の台詞が書きやすく便利なのでお勧めします。
Word、Excelなど基本的なソフトなら普通に置換という機能は搭載している筈ですので、利用してみて下さい。
<一番簡単なリプライ確認の仕方>
自分のPCにExcelが入っている方は、Excelを起動します。A1のセルに「テスト1」と入力し、確定。
A1のセルを思う存分オートフィルします。(100もあればいいでしょう)A1のセルから、オートフィルしたセル、全てをコピーします。
テストという単語を登録し、先程作成&コピーしたテスト1~テスト100までを右側のボックスに貼り付けます。
bot宛に「テスト」と発言します。100も登録してあるので、どれか一つは必ず選んでツイートしてくれるでしょう。
「@twitter_id」が含まれるかどうかに関わらずすべての投稿に反応するという部分だけ違いますが、その他は自分宛ポストへの返信設定と全く同じ仕様になっています。
フォローを仕返し、あいさつをフォローしてくれたユーザー宛に投稿する設定です。設定できる項目は以下の通り。
加えて、もしフォローの仕返しのためのメッセージを一つも設定していない場合には、フォローの仕返しをしません。ですので自動でフォローがし返されたくないかたは挨拶文を設定しないでください。
フォローへのあいさつの間隔の設定 | フォローへのあいさつの間隔を設定できます。30分〜1440分(1日)となっています。 |
スリープ機能 | ボットの設定のTimezoneの時間で、夜の2時〜6時の間通常のポストを停止します |
#date#タグ | ボットの設定のTimezoneの時間で、「◯月◯日」に置換します |
#time#タグ | ボットの設定のTimezoneの時間で、「◯時◯分」に置換します |
#br#タグ | 改行に置換され、表示可能なクライアントで改行表示されます (v1.5.4) |
#user_name#タグ | あいさつをする相手のユーザー名に置換します |
#stop# | ランダムでこのタグが含まれるポストが選択されたときポストを行いません |
#week_x#タグ | #week_1#タグで日曜日は優先投稿。#week_7#は土曜日に優先投稿となります。複数ある場合はそのうちからランダム投稿されます。Timezoneの設定の影響を受けます。(v1.2.3)) |
#hour_x#タグ | #hour_0#タグで夜0時に優先投稿。#hour_23#で夜の11時に優先投稿となります。複数ある場合はそのうちからランダム投稿されます。Timezoneの設定の影響を受けます。(v1.2.3) |
#week_x_hour_x#タグ | #week_6_hour_17#タグで金曜日の夕方17時台に優先投稿となります。複数ある場合はそのうちからランダム投稿されます。Timezoneの設定の影響を受けます。(v1.2.3) |
以上を設定し、保存することで設定を適用させることができます。
正規表現でのキーワード設定は、上級者向けです。一つでも正規表現で間違った表記があると全体的におかしな動きをしてしまうことがあります。
HTMLの記述が苦手、よくタイピングミスをしてしまうという方には正直オススメできません。それでもチャレンジされるというかたは、
を使った全てのJavaの全体一致の正規表現の入念なチェック。正しいものが引っ掛かり、ただしくないものがちゃんと引っかからないかをチェックして使ってもらうようお願いします。
使い方は、上のテキストボックスに正規表現を、下のテキストボックスに解析する投稿の例を改行して入れるだけです。
加えて、Twitterの仕様上同じ投稿を数時間以内にすることができません。デバッグ中は、◯時◯分に置換してくれる#time#タグなどを投稿にまぜてデバッグしてもらうようお願いします。
なお、全体的なJavaの正規表現の文法は、
で確認してみて下さい。また、より複雑な正規表現にチャレンジしたいという方は、
- 正規表現パズル
がおすすめです。様々な例文が載っていますので、活用してみて下さい。
なお、v1.2.4よりグループタグに対応しています、#group_0#は正規表現にマッチする文全体、#group_1#〜#group_9#はそれぞれ()で順番にマッチした文字列に置換してくれます。よりインタラクティブなボットの作成にご利用下さい。
.*
.*(カツオ|ワカメ).*
(.*カツオ.*ワカメ.*|.*ワカメ.*カツオ.*)
.*(タラちゃん|カツオ|ワカメ)[をはが。]+.*
.*@[a-zA-Z0-9_]+.*
^@[a-zA-Z0-9_]+.*
(.*@[a-zA-Z0-9_]+.*おはよう.*|.*おはよう.*@[a-zA-Z0-9_]+.*)
一番いいのは、ボットをフォローしてくれたユーザーからキーワードを抽出しながらコンテンツを作成していくことです。ボットをフォローしてくれる方が使う言葉は非常に似ていることが多いので、ある程度パターンを作っておくと、まるで人が会話しているかのようなボットを作りことができます。
例えば、「ただいま」に対する反応語に対して「おかえり、疲れていないか?」「よく戻ったな、今日は頑張ったな。疲れただろう」など、
挨拶+そのキャラの特性にあった続きを書きます。
その上で「疲れた」にも反応させておくと、
「ただいまー」→BOT「おかえり、疲れていないか?」→「うん、疲れたー」→BOT「そうか、では風呂にでも入ってゆっくりしてこい」
と会話が続きます。この後「お風呂」にも反応させれば、「そういえばBOTがこんな事言ってくれてたな」と思い出して、
お風呂に行ってくる挨拶をしてくれ、更に続けられるかも知れません。
BOTに対してフォロワーさんがどんな発言をしているかは、BOTのアカウントでtwitterにログインし、BOT自身の発言の「●●宛て」の部分で見ることが出来ます。
また、実際どんな単語が需要があるのかは、ついろぐを利用することでおおよそ把握できるでしょう。
ただし、あまり会話が続きすぎると、そのフォロワーさんのみと会話し、会話制限に引っ掛かってしまって、1時間の後半他のフォロワーさんの
呼びかけに答えられない、となる可能性がありますので、「お一人で長時間BOTと会話すること、5分以下の間隔で話しかけることはお控え下さい」と
書いておくと、フォロワーさん皆がBOTとの会話を楽しむことが出来るので、できれば説明書・自己紹介欄に記入などしておきましょう。
あと、ロボットとは言えど人を不快にさせるような発言は入れない方がよいです。どんどんフォロワーが離れていきます。楽しい創作活動のためにも、人を不快にさせるような発言は避けてください。
<BOT自身の発言回数制限について>
Twitter側の制限で、「通常のつぶやき」「自分宛の発言に対する返信」「タイムライン反応」「フォローへのあいさつ」
この4つの機能を1時間に150回まで実行する事が出来ます。(発言の投稿: 1日最大1000件まで)
BOTの発言が1時間に150回を越えた場合、1日の制限を使い切った場合、一切の行動が出来なくなります。
(これはOAuth認証で将来緩和される予定ですが、まだ未定とされています。)
TL反応機能を利用する場合、フォロワーさんの数が多いと、すぐに規制されてしまいますので、
TL反応を少なくするなど、対策を考えてみるといいでしょう。
発言が150回を越えてしまい、規制されたBOTを「規制さんに連行された」「規制さんにドナドナされた」などと言います。
TL反応を付けて、1000人程度のフォロワーさんが居ると、よく連行されたりドナドナされます。
<同一アカウントに対する制限について>
同じフォロワーさんに、同じ発言を繰り返す事は出来ません。
これは、Twitterでスパムアカウントが多くなった為、2009年に導入された同一発言規制というものです。
たとえば、AさんがBbotに「@Bbot おはよう!」と言った場合、Bbotの「おはよう」に対する対応台詞が1~3しかないと
プログラム自体がランダムに選んだとしても、2回目の「@Bbot おはよう!」をスルーしてしまう可能性があります。
例)
Bbotの「おはよう」に対しての反応台詞が、「おはよう、#user_name#」「おはよう、元気か?」「おはよう、#user_name#。今日も頑張ろう」の3つだとします。
Aさん「@Bbot おはよう!」
Bbot「@A おはよう、A」
Aさんが5分後 「「@Bbot おはよう!」
Bbot おはように対して、3パターンしか台詞がないが、5分前と同じ「@A おはよう、A」をランダムで選んでしまった為、Twitterの規制に引っ掛かりスルー
同じ人に、同じ反応語を発言できるのは、台詞が20パターン以上あっても、もしかしたらランダムで同じ発言を選んでしまい
スルーする可能性があります。ランダムで別の台詞を選んできて、成功するかも知れません。
大体10時間に1回位で、同じ反応語句に反応出来るようになりますので、時間を置くか、別の反応語句を試して見ましょう。
各ボットの一番下に、各種情報を削除するボタンがあります。
ボタン名 | 機能説明 |
自分宛ポストへの返信キーワードの全削除 | 自分宛ポストへの返信キーワードとその投稿内容を削除します。あまりにも数が多い場合は一度で消しきれないこともあるので、その際にはもう一度実行してください。 |
自分のタイムラインへの返信キーワードの全削除 | タイムラインへの返信キーワードとその投稿内容を削除します。あまりにも数が多い場合は一度で消しきれないこともあるので、その際にはもう一度実行してください。 |
ボットの削除 | ボットを削除します。ボットが不要になった方は、ボットを削除した分、他の方がリソースを使えるようになりますので、削除をしていただくようお願いします。 |
各ボットの一番上のエラーログボタンを押すことでサーバー上で生じている最近5個のエラーログを閲覧することができます。この機能を使うことで、ボットが思うように動かなかったときや調子が悪い時にその原因をさぐることができます。
以下に、代表的なエラーログは例を載せておきます。基本的に英語のメッセージをしっかり読めばその原因がわかると思います。技術力を持つ方に相談する際や、フォーラムに不具合の状態を相談する際にはこのエラーログと共に相談するようにして下さい。なおこのエラーログの時間はすべてグリニッジ標準時で表示されていますので、日本の時間に換算する際には+9:00をしてご覧ください。
org.soichiro.charactorbot.server.TwitterBot reply WARNING: An exception was thrown at reply() getFriendTimeline. Detail : Timeout while fetching: http://api.twitter.com/1/statuses/friends_timeline.json?include_rts=true
org.soichiro.charactorbot.server.TwitterBot reply WARNING: An exception was thrown at reply() getFriendTimeline. Detail : Timeout while fetching: http://api.twitter.com/1/statuses/friends_timeline.json?include_rts=true
org.soichiro.charactorbot.server.TwitterBot reply WARNING: An exception was thrown at reply() getFriendTimeline. Detail : 503:Service Unavailable: The Twitter servers are up, but overloaded with requests. Try again later. The search and trend methods use this to indicate when you are being rate limited.
org.soichiro.charactorbot.server.TwitterBot run WARNING: An exception was thrown at run(). A key of TwitterAccount : ag1jaGFyYWN0b3Jib3QychULEg5Ud2l0dGVyQWNjb3VudBihHww org.soichiro.charactorbot.server.TwitterBotException: java.util.regex.PatternSyntaxException: Unmatched closing ')' near index 7 90-898*)))0)(#0)>+{+(()
org.soichiro.charactorbot.server.TwitterBot reply WARNING: An exception was thrown at reply() getFriendTimeline. Detail : 401:Authentication credentials were missing or incorrect.
org.soichiro.charactorbot.server.TwitterBot reply WARNING: An exception was thrown at reply() getFriendTimeline. Detail : 503:Service Unavailable: The Twitter servers are up, but overloaded with requests. Try again later. The search and trend methods use this to indicate when you are being rate limited.
org.soichiro.charactorbot.server.TwitterBot nomalPost WARNING: An exception was thrown at nomalPost(). Detail : 403:The request is understood, but it has been refused. An accompanying error message will explain why. {"request":"/1/statuses/update.json","error":"Status is a duplicate."}
このサービスは、吉村 総一郎 (Soichiro Yoshimura)が無償で開発・運営しています。機能に関する要望・不具合の打ち上げは、新規チケット登録まで、ボットの作成に関する質問などはフォーラム:ヘルプまでよろしくお願いします。なお、運用しているキャラボットに関する障害情報などはTwitterのアカウントで公開されるほか、緊急事態にはこちらの方にダイレクトメッセージを送ってもらうようにお願いします。なおこのサービスはGoogle App Engine for Javaを使って実装していますが、Googleの障害や高い負荷などで止まってしまう可能性もあります。ご了承ください。
[ページ情報]
更新日時: 2012-05-01 02:30:58, 更新者: sifue
[ライセンス]
GNU Free Documentation License
[権限]
表示:無制限, 編集:ログインユーザ, 削除/設定:メンバー