garoonbot

会社のグループウェア、いままでずっと自社開発のものを使っていたのだが、国産大手のものにリプレイスしてみた。世のみんながどんなものを使っているのかな、というのを知る意味もある。

いままで使っていたグループウェアは、irc botとも連携するようになっていて、内線番号の設定や参照、現在位置の登録や予定の参照もircからぐいぐい行えてなかなか便利だった。ここは自社開発のメリットだ。
会社はフリーアドレスなので、TPOに応じて好き勝手なところに座って仕事するから、座ったらircで「内線 123」とかつぶやけばグループウェアに反映される、これは快適だ。

市販品のグループウェアに乗り換えたらここはどうするかな、と思っていたが、マニュアルを読むと、データベースのバックアップ手順の解説にmysqldumpとかいうコマンドがでてきたりして、つまりそういうことだ。ふむふむと見てみるとなかなかきれいだ。というような話はどこまで書いていいのかわからないが。takesakoさんに聞いてみようか (わら

いままでのグループウェアと、新しいグループウェアと、それぞれデータ構造をいじるperl moduleを書いてコンバータを作ったあと、さらにちょっと軽めのpmも書いて、botも書いて、まあ同等にいけるようになった。

  use POE;
  use POE::Component::IRC;
  use GaroonBoy;
  use utf8;

とか

  POE::Session->;create(
    package_states => [
      main => [ qw(_default _start irc_001 irc_public irc_invite) ],
    ],
    heap => { irc => $irc });
  
  our $garoon = new GaroonBoy;
  $poe_kernel->run();
  exit 0;

とか

  if($msg =~ m/^(?:よてい|予定|yotei)(?:おしえて|教えて|oshiete|osiete)(.*)$/) {
    $res = $garoon->get_user_schedule($nick, $1);
  }
  
  if($msg =~ m/^(?:よやく|予約|yoyaku)(?:おしえて|教えて|oshiete|osiete)(.*)$/) {
    $res = $garoon->get_facility_schedule($nick, $1);
  }

  if($msg =~ m/^([a-zA-Z0-9-]+)\?$/) {
    $res = $garoon->get_current_user_schedule($nick, $1);
  }

  if($res) {
    for my $line (split("\n", $res)){
      $poe_kernel->post($sender => privmsg => $channel => Encode::encode('iso-2022-jp', $line));
    }
  }

こんな感じ。