LoginSignup
4
5

More than 5 years have passed since last update.

npm公開練習用に、Node.jsのChatworkモジュール(API未使用)を作ってみた

Last updated at Posted at 2016-01-04

はじめに

これは、昔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での公開

ここに書いてあったものをやったら全く問題なくできました。簡単ですね。

こうなりました。
→ https://www.npmjs.com/package/nodejs-chatwork

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5