この記事 is 何?
Chatworkってチーム機能があるじゃないですか?
チームをグループチャットと紐付けて、メンバーが追加されたときに
自動的にルームのメンバーにできる便利機能なんですよ。
でもチームに To する機能はないんですよね。
関係するチームに連絡するときにそのチームのマネージャーを窓口に相談するんだけど
これもなんか違うと思うんですよね。
マネージャーがお休みだったらどうなる?
部署異動があるたびに、それを意識しないといけない?
チームにTOしたいんだ。
ないなら、作る。作ったから話を聞いて欲しいんだ。
チームにToできるChrome拡張作った
完全にベータ扱いですが作りました。
デザインとか操作感とか作り込めていません😭
https://chrome.google.com/webstore/detail/chatwork-mention-to-team/gbofncipdgnliehdohjimpdelcmpdeap
チームを選ぶと、チームメンバーかつそのルームに所属しているメンバーのToに展開してくれます。
個人の感想
自分が抱えていた問題は解決できました。
チームに To できるってやっぱイイ!
- 多数にToするのは心理的ハードルが…
- → 所属しているチームに機械的に送っているから恣意的な配慮をしてないから負担軽減
- マネージャーにToしたけど反応してくれないな…
- 応答ないな、お休み? ミーティング中? たまたま離席してるだけ?
- マネージャーのカレンダー、勤怠報告、休暇予定などをあさる、という切ない作業をしていた過去
- メンバー全員にToすると誰かが反応してくれる
- 担当者がいないのでちょっと待って / チームで分かっている人いない / あとでチーム内で確認して回答する などなど
- 応答ないな、お休み? ミーティング中? たまたま離席してるだけ?
技術情報
Chatworkの非公式内部APIを叩きたい人向けの情報です。
リポジトリ
Chatworkの非公式内部API
Chatwork公式APIにはチームに関する操作APIがありません。
なので非公式APIを探します。
内部APIを探る
- ブラウザのデベロッパーツールを開く
- グループチャットにチームを追加する画面を開いたり、設定してみたり、チームを削除してみたり…
- コールされているAPIとレスポンス参考に必要なAPIを探す
Chatworkの内部非公式APIを呼び出すために必要なこと
ログインセッション
- 設定により Chrome 拡張機能ではログインしているセッション情報をそのまま使えます
- https://github.com/yamatomo73/chatwork-mention-to-team/blob/main/manifest.json#L13
アクセストークン
Chatwork のチャット画面のソースをみると javascript にアクセストークンがあります。
このトークンが必要です。
Chrome拡張でサイトコンテンツのjavascrip変数にアクセスするハック
セキュリティにより、Chrome拡張側からそのままサイトコンテンツのjavascrip変数にアクセスできません。
ソースがあるので詳しく説明しませんがギミックをつかって取得します。
チーム機能に関するChatwork内部API(2021/11/30現在)
コールしているAPIをトレースしてなんとなくコールしてします。
非公式でインターフェースが変わることもあるとおもうので、参考程度に。
- 組織の全チーム
- 特定のグループチャットに所属しているチーム一覧
- 特定のチームを指定して所属しているメンバー一覧取得
さいごに
Chatwork公式APIになくても内部APIを使いChrome拡張で実現してみました。
Chrome拡張をつくったのは初めてでしたが、おもったよりもサクッとつくれました。
公式APIがもっと増えたらいいのになあと思います。
参考にした記事