スケジュールはともかく、掲示板は、全社の重要なものは、総務の人が全社員に同じ内容をメールしてくれるが、その他諸々は社内にいないと分らない。
そこで、掲示板の更新を検知して、掲示板の内容をメールで送信するようにしてみた。
まず、 サイボウズはユーザー認証もあり、掲示板などの更新はどのようにして取得するのか。そこで、以下のPerlモジュールを調べてみた。
ユーザー認証はオーケーだったが、肝心の「externalAPINotify」はアクセスできない(そんなページは無い、というエラーになる)。多分、同じバージョン6でも、色々違いがあるようだ。
そこで、リマインダーの挙動を調べてみたところ、「RMDigest」というページを参照して掲示板の更新の有無を取得している、ということが分った。
・ http://サイボウズのサーバ/cgi-bin/cbag/ag.cgi?page=RMDigest (ユーザー認証略)
ほげほげ さんの最新情報(16 時 54 分更新)そこで、前述の「WWW::CybozuOffice6」を修正して、「RMDigest」を取得できるようにしてみた。
掲示板,"page=BulletinView&bid=2243&gid=3628","テスト","テストです。",1
NOERROR
<font size=-1>サイボウズ(R) Office Version 6.6...(以下略)...
use WWW::CybozuOffice6;これにより、
$office6 = WWW::CybozuOffice6->new(url => 'http://サイボウズのサーバ/cgi-bin/cbag/ag.cgi',
user => 'ユーザ名',
pass => 'パスワード');
print $office6->RMDigest,"\n";
掲示板,"page=BulletinView&bid=2243&gid=3628","テスト","テストです。",1の行の有無をチェックし、もしあれば、2番目のフィールドが掲示板本文の参照先なので(3番目はタイトル、4番目は本文の先頭部分)、これを取得すれば良い。
use WWW::CybozuOffice6;「_request」メソッドも、複数のパラメータを受け付けるように修正した(元々は「page=...」のみ)。
$office6 = WWW::CybozuOffice6->new(url => 'http://サイボウズのサーバ/cgi-bin/cbag/ag.cgi',
user => 'ユーザ名',
pass => 'パスワード');
$office6->_request("page=BulletinView&bid=2243&gid=3628");
print $office6->response->content;;
当然、HTMLが取得できるので、「w3m」コマンドの「-dump」オプションでテキスト化し、それをメールで送信すれば良い。
これらの一連の処理をスクリプト化し、これを cron で定期的に実行する(現在は 20分間隔)。
今のところ、問題なく、メールで送信されている。
0 件のコメント:
コメントを投稿