おいら自慢の一品、留守番チャットロボットをMSNメッセンジャにつないでみました。
留守番ロボット専用に取得したMSNメッセンジャで接続。
そのアカウントに向かってメッセンジャを通して話しかけると、ロボットが答えてくれるというもの。
まずはじめにメッセンジャーのプログラムからの操作について研究。幸い、DotMSNというモジュールがあることを発見。そいつを使ってみることにする。
サンプルコードを元に、自分なりにテストプログラムを作成。ちまちまと実験。
ざっくり、メッセンジャーのコントロールができるようになったら、次は一気に留守番ロボットを接続。
この留守番ロボットもC#のモジュールとして実装されているので、実は他のプログラムに組み込むのは簡単。すぐに組み込み終了。
まずは一人で実験してみた。
いくつか問題が。
ロボットの起動がDotMSNからのメッセージハンドラの中だとうまく行かない。おそらく、Threadの問題かと思われる。しゃあないので、起動時にロボットを起動しておいて、メッセージハンドラの中ではそれを使うだけとする。おかげで、1つのロボットとしか起動できない。
起動時に自動的にMSNに接続するのだが、この接続に異常に時間がかかるときがある。どうもログインに時間がかかっている模様。これはサーバー側が調子悪いことも考えられるのでなんとも。。。
無事にログインできても、外から話しかけようとセッションを開くと、開かれたということがロボット側で検知できないことがある。開かれたということが検知できないと、以降のメッセージの受け渡しなどの処理ができない。うーん。再現性が50%くらいなので難しいところだ。なんでこんなことになるんやろ。
次に、丁度そのときログインしていた知り合いを片っ端から、会話に招待。
多人数での会話に突入。
どうも会話している全体の人数のカウントを間違えているようで、ロボットの発言の頻度が怪しい。
それ以外にも、発言者の名前をMSNのアカウントのメールアドレスと間違えていたりする。
やっかいなことに、一部の人は正しいアカウントが表示されている。うーん。どないなってるんだ。
声をかけた知り合いが、たまたま「3時のおやつ」というコミュニティのメンバーばかりであったので、そのままチャットに突入。最近、多人数チャットやってなかったから、ちょっと懐かしく思う。久々のメンツも見つけて一緒に会話。うーん。おもろかった。なんとかして、「3時のおやつ」が復活するようなネタを考えなければ。
今後の予定
セッションが開けられないことがあるのでこれを改善
会話している全体の人数のカウントの修正。およびロボットの発言頻度の調整。
発言者の名前の取得の確認。
現在、1セッションしかロボットが登場しない。既にセッションが開けられている場合は、エラーになる。
ロボットは1対1の会話よりも、複数人で行う会話の方が得意なので、そのようになるような仕組みが欲しい。2番目のセッションが張られたときは勝手に最初のセッションの会話に招待してしまうことも考えたが、それだと、知らない人にメールアドレスをさらすことになってしまう。
その他、内緒のアイデアが2~3個。。。。
やっぱり、せっかくの留守番ロボットを人様に見せないでおくのはもったいない。何とかして見せびらかさねば。
こうご期待。