はじめに
これは、昔APIが公開される前に作ったChatwork用モジュールを、Node.js用モジュールを作ってnpmで公開してみる練習用に作り直したものです。
あまり実用的な実装ではありませんが、APIを使ったメッセージポーリングよりもリアルタイム性を重視したい場合には、お試しください。
公式APIとの違いは?
このモジュールは、APIを使わずにPhantomJSを使ってスクレイピングで情報の取得/送信を行っています。なので、ほとんどWebブラウザと同じ挙動をします。
メリットとしては、
- 呼び出し回数の制限がない(APIでは5分で100回)
- メッセージ・タスクの追加に対して、ほぼリアルタイムに検知できる
- APIキーの申請がいらない(あまりメリットではないか)
です。
一方、デメリットとして、
- APIで公開されている以下の機能の利用は不可
- メッセージリストの取得
- メッセージ/タスクの編集/削除
- コンタクトの追加/削除
- ルームの作成/削除/コンタクトからの招待
- 各ルームの完了タスクの取得
- Facebook/Twitterアカウントでの利用は不可
- 一つのメソッドで複数のHTTPリクエストを使う場合が多いので、パフォーマンスが劣る(実装がしょぼい)
などがあります。
と、書いてみるとデメリットだらけですね。。。
使い方
こちらをご覧ください
→ https://gitlab.com/horihiro/nodejs-chatwork#README
各メソッドの実行で得られるオブジェクトの構造は、公式APIのものと(だいたい)揃えてあるので、そちらをご覧ください。
→ http://developer.chatwork.com/ja/endpoints.html
一例ですが、getContactsメソッドのoncompleteコールバックの引数には以下のオブジェクトが入ります。
[
{
"account_id": 123,
"room_id": 322,
"name": "John Smith",
"chatwork_id": "tarochatworkid",
"organization_id": 101,
"organization_name": "Hello Company",
"department": "Marketing",
"avatar_image_url": "https://example.com/abc.png"
}
]
これは、公式APIの/contactsをGETした時に得られるオブジェクトと同じものです。
その他のメソッドも同様にAPIから得られるものと同じ構造のオブジェクトを返します。適当にメソッドを実行して、オブジェクトをダンプしてみてください。
npmでの公開
ここに書いてあったものをやったら全く問題なくできました。簡単ですね。