charactorbot (v1.07.000) | 2014-01-11 18:05 |
FrontPage(wikiのトップページ)の表示
このwikiはSourceForge.JP、mixi、Yahoo!、Google、はてな等のアカウントでログインすれば自由に編集することができます。
ブラウザの設定でポップアップが禁止されている場合には表示されません。ポップアップでの表示を許可するか。サーバーのURLのサイトでのポップアップを許可してください。
また、ブラウザも推奨ブラウザのFirefoxかChromeかSafariを利用されることをお勧めします。
A. いくつか原因が考えられます。
1.作成可能数が0の場合そのサーバーでは作成することができません。別なサーバーを探すか、自分で別に用意してください。
2.作成可能数が1以上あるが作成できない場合。サーバー管理人が作成制限をしていて実際には作れないことがあります。管理者に問い合わせてみてください。
3.ボタンを押した後エラーが表示される場合は、TwitterのAPIが混雑しているため認証に失敗しているなどの原因が考えられます。時間をおいてから試してみてください。
4.v1.3.10以前の古いバージョンのキャラボットでは数十回に1度エラーが表示され失敗することがわかっています。何度か試してみるか、キャラボットのバージョンを上げてください。
A. アプリケーションの作成が失敗している可能性があります。まず、http://twitter.com/oauth_clients にアクセスし、Bot作成に用いているApplicationを選択してください。Edit Application Settingsから設定を見ます。
以上を確認します。それでもダメな場合は、ボットを一旦削除し、もう一度Consumer keyとConsumer secretを使ってボットを作り直してみてください。
更にそれでもダメな場合は、アカウントがAPIからの処理を規制されている(APIの実行回数を使い切っているまたは1時間の実行回数を極端に減らされている)可能性がありますので、その他アカウントを使って作成してみることをおすすめします。
A. Twitterは仕様上まったく同じ内容の投稿は失敗するようになっています。確実に投稿するようにするためには、発言の内容の中に○時○分に置換される#time#タグを投稿内容に含め、毎回違った内容の発言がされるようにして再度試してみてください。
なお、通常のつぶやきは保存するたびに、発言するようになっています。もし何度も保存する場合には、ボットを一時停止してから編集することをおすすめします。
あと、それでもうまくいかない際は、ボットのTwitterアカウントがAPI規制がかけられているなどの可能性も考えられます。アカウントを変えてみたり、新しくボットを作成してみてください。
A. まず前提として、Twitterは仕様として数時間以内の同様の内容の投稿を認めていません。ですので、デバッグ中は全ての返信に、#time#タグなどを入れてデバッグすることをおすすめします。
原因としてよくあるのは、正規表現の設定ミスです。
一つでもおかしなJavaの正規表現があると正しく動かないので、全ての正規表現が正しいものがひっかかり、そうでないものは引っかからないか、 http://myregexp.com/ をつかってチェックしてみてください。過去に、.*(カツオ|ワカメ).*を.*(カツオ|ワカメ|).*と記入し間違え、同じ投稿を繰り返していたために投稿できなくなっていたなどという問題がありました。手間だと思うかもしれませんが、一番近道ですのでひとつひとつチェックしてみてください。
もし、 http://myregexp.com/ の使い方がわからない場合は、テキストエディタでも正規表現のチェックをすることができますので、Windowsならば、秀丸やEmEditor、サクラエディタなど、MacならばCotEditorやmiなどの正規表現を使った検索機能を使ってしっかりデバッグすることをおすすめします。
以上の正規表現のチェックを実施することができないのであれば、正規表現を使わないことをオススメします。正規表現は誤った設定をすると永久にループをしてしまい、他の多くの方に迷惑をかける動きをすることがあります。ですので、そのことを理解した上で、チェックできないのであれば正規表現は使わないということを徹底して頂ければと思います。
なお、プログラムが苦手、プログラムなのに全角を間違えて記入してしまう、よくスペルミスをするという方にはあまり正規表現を使うことはオススメできません。
加えてTwitterが重くて夜10時〜夜2時は正直どのボットも返信成功率は0%〜80%ぐらいです。デバッグをするならばこの時間を避けて行った方が良いかもしれません。ピーク時には全ての投稿が失敗している場合もあります。
以上をチェックしてもダメな場合は、APIの1時間に150回の制限(アカウント規制を受けている場合はもっと少ない)を使い果たしている可能性もあります。その場合は1時間おいてデバッグをするなどしてください。
加えて、デバッグ中の投稿タイムラインを確認する場合は、WebかiPhoneのTiwtter公式アプリを使って確認することをおすすめします。他のクライアントなどでは、再読み込みのたびにボットのAPIを1回消費してしまいます。あと、いつまでフォローを承認してくれないフォロワーもフォロー仕返しにAPI消費する原因になるので、そういうフォロワーがいるかを http://friendorfollow.com/ を利用してチェックしてみてくだい。その上でそのフォロワーをブロックするか、フォロー仕返しを投稿メッセージを空にして利用しないか、1日に1回程度にすることをおすすめします。
A. 基本的に対処方法は、"ボットがつぶやきはするが、返信をしなくなってしまった"の場合と同じですが、加えて、IDがちゃんと正しいものがキャラボットに登録されているか確認してみてください。
ボットのIDを変更した場合は、ボットの設定のIDと実際のIDが異なってしまうため、うまく私信に対して反応できなくなってしまいます。ボットの設定ダイアログのIDの部分を新しいIDに書き換えて保存してから、"ボットがつぶやきはするが、返信をしなくなってしまった"の場合と同じデバッグを試してみることをおすすめします。
A. Google App Engineのcron(定期実行をするプログラム)が1分置きに設定しているにも関わらず、1分以内に数回実行されてしまう際に生じる現象です。
そのため非常にまれですが調子が悪い場合には何度も返信されてしまうことがあります。
Google App EngineのDatastoreのメンテナンス時に多重投稿してしまう不具合はv1.4.1で対応されました。ただし、それ以外の障害で生じる可能性もあります。
予防方法の一つとして、返信間隔を1分間に設定するという方法があります。1分間に返信間隔を設定した場合には、前回の実行時間との差を補正して実行するため、cronがおかしくなっても多重投稿しない仕組みになっています。しかしながら、cron以外にdatastoreというデータ保存する機構もおかしくなっている場合はこちらの予防策では対応できません。
その他の予防方法としては、1つのキーワードに対して1つの返信内容しか設けないようにする方法です。これはtwitterの仕様上、同じ投稿を二度短時間のうちにすることを禁止しているため、多重投稿されそうになった場合、自動的に投稿をやめてくれます。こちらの予防策は前者より確実性が高いです。
以上を行うことで多重返信をある程度予防することができます。
試してみて下さい。
A. テストのための運用サーバーは、無料のGoogle App Engineのリソースを使って作成しています。そのため、その無料のリソースを使い切るとOver Quotaと表示されて、サーバーがダウンしてしまいます。
毎日、日本時間の16時にリソースがリセットされますので、その時間が来るまでお待ち下さい。
なお他人のリソース消費にサーバーが落ちるのが嫌な場合は、自分でサービスを作ることもできます。
http://sourceforge.jp/projects/charactorbot/releases/
からダウンロードできる簡易デプロイ用パッケージを使って、自分だけのキャラボットサービスを作成するというのも一つの手です。
なお、サーバー1だけは、管理人がGoogle App Engineの有償のサービスを使って動かしているため、Over Quotaで落ちることはありません。
A. 501個以上の投稿メッセージ及びキーワードは登録できません。加えて一つの投稿も500文字を超えることができません。
これは、通常のポストの内容に関しては2000個(v1.5.2までは500)まで登録でき、返信の内容はそれぞれ2000x2000で4000000個まで登録できるということです。
もちろん140文字を超えた投稿はTwitterにはできません。その場合は、#stop#タグを入れたときと同様の動きをします。なお、登録した数だけQuota(コンピューターのリソース)を消費しますので、その点はごちゅういください。
加えて保存するデータの総量が、保存するのに10秒以上かかるような状況になっても保存できなくなってしまいます。そのような際にはもう一つボットを作ってそちらで対応するのがよいかもしれません。
あと夜の10時〜2時までは、Google App Engineに負荷がかかっているせいで、保存に失敗することがよくあります。テキストなどで他に保存しておいてこまめに保存にチャレンジしてみてください。
A. まず、キャラボットではボットのタイムライン(TL)に出た発言から返信をするようになっています。ボットのアカウントでログインしてそのTLに返信をするべき投稿がちゃんとあるかどうか確かめてみてください。相手がリフォローを承認していない場合や、ボットをブロックしている場合はタイムラインにそのフォロワーの発言が表示されないため、無論返信は行われません。
ちゃんとTLに返信したい発言が表示されているにもかかわらず返信されない場合ですが、一度でも返信されている場合その発言は返信されません。これはTwitterが短時間での同様の内容のポストを禁止しているためです。必ず返信が行われるようにするためには、発言の中に◯時◯分と置換される#time#タグを混ぜて発言の内容を変えてあげる必要があります。
それでも特定のIDからの発言に反応しない場合は、正規表現で特定のIDが含まれるものを#stop#タグを含む発言で、停止していないかが疑われます。一度自分宛の返信とTLへの返信のキーワードを削除し、単純なキーワードで正規表現を使わずに#time#タグを入れた発言で返信をするかどうかデバッグをしてみることをおすすめします。
とは言っても、このキャラボットは100%の返信を保証していません。Twitterの負荷、1時間150回のAPI制限などを考え投稿に失敗した場合もリトライ実行をしないようにしています。特に、22時〜2時の間はTwitter自体の処理が重く、処理時間が長くなって失敗している場合があります。これは、人力でボットを運営した場合でも、同じだと思いますので、ある程度仕方ないと思ってください。
以上を考慮してもまだ原因を特定できない場合には、自らキャラボットのサービスを立ち上げて、ボットのエラーログを見ながらデバッグをしてみることをおすすめします。
http://sourceforge.jp/projects/charactorbot/releases/
以上のサイトから簡易デプロイ用パッケージがダウンロードできますので、自分専用のキャラボットのサービスを立ち上げてそこでボット登録をします。その後、Google App Engineの管理コンソールのlogでDebugを選択し、そこに表示されるログを見ながらどのような動きをしているのかをデバッグするのが最終手段になります。このログを見ることで、なぜ返信に失敗しているのかを見ることができますので、それで原因を確認してみてください。
A. 開発はFirefox, Safari, Chromeを使って行っています。できるだけこの3つのブラウザのどれかで編集されることを推奨します。スマートフォンに搭載されている、Safari(iPhone), Chrome(android)でも問題なく動きます。
なお、Internet Explorerでは非常に動きが遅くなったり、またおかしな挙動をしてしまうことがわかっています。
Operaは高速ですが、動きに関してはこちらも若干おかしいところがあります。
できるだけFirefox, Safari, Chromeを使用していただくようお願いします。
A. iPhoneのSafariでは2本指を使うとフレーム内のスクロールが可能です。
キャラボットでは、テキストエリアとキーワード一覧でフレームを使っていますが、その上で二本の指を使ってフリックすることでフレーム内をスクロールすることができます。
詳しくは、
http://support.apple.com/kb/HT1484?viewlocale=ja_JP
をご覧下さい。
A. 正規表現の設定のコツ、よく使われる例をご覧下さい。
A. v1.2.5よりこの機能に対応しました。
自分宛ポストへの返信設定と自分のタイムラインへの返信設定から、無視したいIDをカンマ区切りで最大500文字まで設定することができます。 例えば、aisha_botとsifueのポストを無視したい場合には、aisha_bot,sifueと入力して設定を保存してください。
なお、v1.2.4以前のバージョンでは、残念ながら相手のIDをひろってはじくという機能には対応していません。
基本的に、特定のボットの発言をキーワードとして、#stop#タグで対応してもらうしかありません。 それか完全に無視するならボットアカウントからブロックするのがよいと思います。
ただ、正直ボットのプログラム作成者としては、ボット同士の相互フォロー を推奨できません。するとしても自作ボット同士で、無視IDやストップワードを設定した上でやるべきです。
これは、無限ループの可能性があるからです。
無限ループポストを行った場合、
以上、二つの問題があるためです。
どちらも最悪ですが、特に二番目は150のAPI呼び出しを20や10にまで落とされたりする 規制をくらうと、ほぼボットをやめなくてはいけなくなってしまいます。
そんな状態にならないためにも、 ボットからフォローされたらブロックか、こまめにストップワードを設定する。 ボットの会話が見たいなら、自分でボットを作って安全に会話させる。 これがTwitterのためにも他のボット作成さにも迷惑をかけない方法です。
A. 可能です。
自分宛ポストへの返信設定で、
キーワードに、.*を記入して、正規表現のチェックボックスをオンにして、
さらにその返信メッセージには、#stop#と記入してください。
A. 可能です。
タイムラインへの返信設定で、キーワードに、@bot_idを記入して、投稿内容に#stop#と記入してください。これで私信を除く、自分のIDが含まれる発言に対して反応しなくなります。
なお、そもそも非公式RTにすべて反応させたくない場合は、
RTやQTという単語に対して#stop#を登録しておくのも一つかもしれません。
A. 「自分のタイムラインへの返信設定」で設定することが可能です。
自分のタイムラインへの返信設定の所で、^@[a-zA-Z0-9_]+.*をキーワードに設定して、
正規表現のチェックボックスをオンにし、投稿内容を#stop#だけにしておけば、フォロワー同士の
私信に対して反応しなくなります。
とにかくIDを含むものすべてを無視したい場合は、.*@[a-zA-Z0-9_]+.*をキーワードに設定し、
正規表現をオンにして、投稿内容を#stop#とすれば大丈夫です。
更におはようというキーワードも一緒にひっかかるようにしたい場合には(.*おはよう.*@[a-zA-Z0-9_]+.*|.*@[a-zA-Z0-9_]+.*おはよう.*)をキーワードに設定し、正規表現をオンにして、投稿内容を#stop#とすれば大丈夫です。このように前後関係のパターンも含めてやる必要があります。
A. 可能です。
これは、ボットの作成法にも書いてあるのですが、
http://sourceforge.jp/projects/charactorbot/wiki/CreateTwitterBot
自分宛ポストの返信キーワードの優先順位の一番下に正規表現で
.*
というキーワードを追加してあげれば大丈夫です。
A. キーワードに対する返信の内容に時間帯指定タグを使えば実現できます。
キーワード: おはよう
投稿: #hour_12# もう12時だよ。寝坊だね。
とすれば、12時の時間帯はこのポストが優先的に投稿されます。他の時刻のパターンも全て作っておけば、24時間すべての時間にバリエーションを設けることもできます。
A. あります。フォローをし返す際のあいさつメッセージを空にしておけば、フォローし返しません。
A. あります。内容には「#stop#」のみを入れておくとそのような動きになります。
A. キーワードに対する返信投稿内容を、改行で区切れば、その中からランダムに選択されるようになっています。
キーワード:
おはよう
投稿内容:
おはようございます!
早起きですね。
今日も一日がんばりましょう。
以上のように設定できます。
A. http://twitter.com/oauth_clients から作成したアプリケーションを選択して、Edit Application Settingsを選択すると、アプリケーション名が編集できると思います。
そこが、from◯◯の◯◯の部分になります。試してみてください。
A. 残念ながらキャラボットでは正確な時報を打つことはできません。
いろいろ理由はあるのですが、
・負荷分散的のために完全時間指定の実行を避けているため
・処理細切れにして遅延させて実行しているため
という二つが主な理由です。たぶん作り的にこの部分を変えることは難しそうです。
A. 正規表現のグループと#group_x#タグを使うことで表現できます。
#group_0#は正規表現にマッチした文章全体に、
#group_1#~#group_9#はそれぞれ、正規表現内のグループにそれぞれ置換されます。
グループは簡単に言うと正規表現の()でくくった部分にマッチする文字列になります。
基本的に前方から一致していったグループの順番で9個まで対応できます。
Javaの正規表現のグループについての詳細は、
http://java.sun.com/javase/ja/6/docs/ja/api/java/util/regex/Pattern.html#cg
をご覧下さい。
簡単な例で言うと、
キーワード(正規表現をオン): ^@[0-9A-Za-z_]+[ ](.*)([を]+)あげ.*
投稿内容: #user_name#、#group_1#をくれるなんてありがとう!
と設定すると
@bot チョコをあげましょう
というメッセージに対して、自分宛の返信だった場合は
@sifue 総一郎、チョコをくれるなんてありがとう!
という風に返信されます。
ただ、このgroupタグなのですが、イマイチ使い方が難しいです。正規表現をかなり作りこまないといけません。
どういう事かと言うと、以上の正規表現では
@bot 今日はあげまんじゅう食べたよ。
というメッセージにも
@sifue 総一郎、今日はをくれるなんてありがとう!
という風に返信がされます。
結構使いどころは難しいですが、 http://myregexp.com/
で入念に正規表現をチェックしつつ試してみてください。
ちなみにこのサイトでは、上記に入力した正規表現にカーソルを合わせて矢印キーでカーソルを移動すると
対応するかっこの場所が強調されるようになっています。これを使ってデバッグすると便利です。
なお、置換の結果文字数が140文字を超えると投稿されません。
A. スリープ機能が影響をうける何点かボイントがあります。
まず、ボットの設定からタイムゾーンを確認して下さい。日本にいるのにAsia/Tokyoでないと、まったく異なる時間帯でスリープすることになります。
次に、時間帯タグ、週指定タグを使ってタグの付け方によっては同じ投稿が連投され、Twitterにはじかれている可能性があります。 ですので、一度時間帯タグ、週指定タグなど(#hour_X#, #week_X#, #week_X_hour_X#,)がついているものは全て外して試してみてください。
最後に、普通の投稿の一覧の内容は保存すると必ずではありませんが、次の一分以内に投稿をが行われるようになっています。 ですので、投稿内容が被らないように#time#タグなどを入れ、スリープが適用されているのかどうか、実際にその時間帯に保存してみて投稿されるかどうかを調べることができます。
以上、試してデバッグしてみて下さい。
A. できます。 時間帯タグとストップタグを組み合わせることで可能です。
まず、スリープ機能をオフにした上で、通常ポスト一覧の所で
#hour_3##stop#
#hour_4##stop#
#hour_5##stop#
#hour_6##stop#
#hour_7##stop#
サルーインと戦わなきゃならないの。力を貸して。
ありがとう。あなた達のためにも精一杯、やってみる
...
のように入力しておけば、3〜7時は時間帯タグのついている投稿が優先して選ばれ、 さらに#stop#タグで投稿を中止してくれるので、結果として、3〜7時は投稿を中止する というような動きをします。
この方法を使えば、好きな週、好きな時間だけスリープを設定することができます。
A. 申し訳ありませんが、このcharactorbotでは、Unicodeの文字しか保存することができません。
仮にその他の第三水準や第四水準などの文字や制御文字列が混入した場合、文字化けを引き起こしてしまう可能性があります。
予め、テキストエディタやメモ帳などで、UTF-8などで保存して、問題なく保存できるかどうか確かめてからcharactorbotに保存することでこれらの文字化けを予防することができます。
A. 一番下に移動させた後、保存ボタンを押しているでしょうか。 順番の入れ替えも保存しなければ適用されません。
もし、それでも順番が入れ替わらない場合は、 ブラウザの相性かもしれません。一応、Internet ExplorerとOperaでは、少しおかしい動きをすることが あることがわかっています。
もしこれらのブラウザをお使いでしたら、Firefox、Safari、Chromeのいずれかを使って見ることを おすすめします。
さらにそれでもダメな場合は、保存の際のトラブルで、データが壊れてしまっている可能性が有ります。 一旦、キーワードをすべて削除して保存してもらい、そこからまた一つ一つ 登録してもらうしかないかもしれません。
ぜひ試してみてください。
A. まず新しいアカウントで
http://twitter.com/oauth_clients
からTwitterのアプリケーションを作成し、 もう一度キャラボットの新しいボットの作成を新規作成タブから、 PINコードによる認証まで行ってください。
残りの作成可能ボット数が0のサービスでも問題ありません
そのPINコードの認証の直後に出る、ボットの作成ダイアログの
Twitter ID
Consumer Key
Consumer Secret
Token
Secret
以上5項目をメモ帳か何かにコピー&ペーストし取っておいてください。 そしてこのボットの作成ダイアログはここで閉じてしまいます。
次に、古いボットタブにてボットの設定ダイアログを開き、 先程新しく作成した新しいアカウントのTwitterアプリケーションの 以上5項目をそれぞれコピー&ペーストで上書きしてOKボタンを押します。
以上を行うことで古いボットの内容を新しいボットの アカウントに移行することができます。
試してみてください。
A. 仕様上、リプライ返信を行った投稿に対しては、TL返信を行うことはありません。
なお、返信間隔を1分以外の設定にしている場合、Googleのサービスの時間のズレによって 0.03〜1%程度の確率で二重投稿するする場合があることがわかっていますが、 頻繁におこるようでしたら、それが原因ではないと思います。
(1分の返信間隔の場合はそのズレを自動的に補正しています)
もしかして複数のボットサービスを利用したり、複数のキャラボットを作成したり していませんか?その場合、どちらかのサービスの利用をやめるか、 ひとつのキャラボットを削除しておく必要があります。
あと、もし複数のサービスを利用している場合でも、 必ず特定のキーワードに対して同じ返信がされるように設定しておけば、 同じ文面を連続投稿できないというTwitterの仕様により連続投稿されませんので、 二重投稿される心配はありません。
ぜひ試してみてください。
A. ボットの作成方法のエラーログについての項を参照下さい。
A. 運用サーバー一覧に自分のサーバーの管理人の連絡先へのリンクがあると思いますので、そこから、ボットのサーバー名とConsumerKeyの情報を合わせて連絡し、お願いしてください。その管理人さんの都合にもよりますが、対応していただけるかもしれません。
ちなみに暴走してしまい、編集できないボットなどを強制的に止めるためには、Twitterアプリケーションからボットのアプリケーションを削除することで対応可能です。
A. SourceForge.jpのアカウントを取得してもらうことにもなりますが、新規チケットの登録からサポートリクエストのチケットを登録して下さい。なお、その際にボットを特定するためにサーバー名やConsumerKeyが必要になります。チケット発行の際にチケットに記入して発行して下さい。
[PageInfo]
LastUpdate: 2012-11-28 10:26:27, ModifiedBy: sifue
[License]
GNU Free Documentation License
[Permissions]
view:all, edit:login users, delete/config:members