TwitterのAPIでBASIC認証が廃止されました
2010年8月31日にTwitter APIでBASIC認証が廃止されました。実際にBASIC認証が使えなくなったのは日本時間の2010年9月2日10:30ごろだったようです。
以前作ったbotが停止したままだったりしないでしょうか?
OAuthは仕組みとしては複雑ですが、
たとえばPHPでのOAuthの使い方については第3回 実際にTwitter botを作ってみるを参照してください。
今回はmentionsを扱います
今回はmentionsで会話をするbotの例を紹介します。mentionsというのはAPI上で使われるメソッド名です。直訳すると
弊社で開発したrecipetterもこのタイプになります。
mentionsを扱う上でのポイント
mentionsを使うことで対話のような形をとることができるようになりますので次のポイントを押さえる必要があります。
- 先頭だけでなく文中現れた@bot名もmentionsに現れます
- botの発言を引用された場合や非公式RTされた発言もmentionsに現れます
- どこまでmentionsに対して反応をしたかに注意しましょう
- 反応した順番を保持する必要があります
mentionsのすべてに返答してはいけません
bot宛に話しかけられたら、
ここで、
たとえば、
@hi_
echo こんにちは
hi_
@matsuu こんにちは
これだけなら問題はないのですが、
@hi_
echo こんにちは、 @hi_ echo さん
これに対してそのまま次のように返してしまうと、
@matsuu こんにちは、 @hi_
echo さん
このつぶやきがまたmentionsにはいってしまうので、
@hi_
echo こんにちは、 @hi_ echo さん
@matsuu こんにちは、
@hi_ echo さん
@matsuu こんにちは、
@hi_ echo さん
…
と無限ループに陥ってしまうかもしれません。
対策する方法はいくつかあります。
bot自身の発言はすべて無視する
bot自身の発言はすべて無視するようにしておきましょう。そうでなければ上のようなパターンに陥ってしまいます。
@bot名からはじまるつぶやき以外は無視する
引用やRTをする場合、
bot同士の無限キャッチボールに注意
mentionsを必ず返すbot同士が何かのきっかけでmentionsを投げると、
対策としては次のような方法があります。
同じ発言を何度もくり返してくるのはbotと判断して以後返答しない
何度も同じ言葉を返してくるbotの場合、
必ずmentionsを返すのではなく、たまに返事をしないようにbotを作る
たとえば20回に1回は返事をしないように実装することで、
ブラックリストを作る
返事を返さないブラックリストユーザを作成しておき、
弊社開発のrecipetterはプログラム内でbotのブラックリストを作って対処しています。
ということで
実際につくり始めると、
次回はmentionsを使った簡単なサンプルプログラムを紹介する予定です。