Help us understand the problem. What is going on with this article?

チャットワークAPIの自動投稿に未読を付ける

More than 1 year has passed since last update.

最近、チャットワークの仕様が変わったらしく、「チャットワークAPI経由で投稿した投稿に未読がつかなくなる」という変更がありました。

この変更には正直ちょっと戸惑っており、以前書いた「自社のIRをGoogle Apps ScriptでChatWorkに通知する」や通知系のプログラムに自分で気づけなくなってしまいました。

対処方法

考えられる対処方法は2つあると思います。

  1. 通知専用の別のアカウントを作る
  2. APIで「未読」を付け直す

「1.」のほうがお手軽ですが、社用のチャットワークなので、新しいアカウントを勝手に作って部屋に入れるわけにはいきません。

というわけで後者の方法で私は対応しました。

プログラム

先ほどの記事のGoogle Apps Script(GAS)のプログラムのメッセージをポストする箇所を変更しました。

GASでチャットワークに投稿するアドオンはあるものの、unreadを追加するメソッドは実装されてなかったため、ひとまずモンキーパッチで対応しました。

/**
 * チャットワークにメッセージを送信する
 */
function postChatWork(message, room_id) {
  var client = ChatWorkClient.factory({token: TOKEN});
  var res = client.sendMessage({room_id: room_id, body: message});

  // 「未読をつける」メソッドを追加
  client.makeMessageUnread = function(room_id, message_id) {
    return this.put("/rooms/" + room_id + "/messages/unread", {"message_id": message_id});
  }

  // 投稿直後ではAPIが失敗することがあるので、6秒ごとに10回トライする
  var err;
  for (var i = 0; i < 10; i++) {
    try {
      client.makeMessageUnread(room_id, res['message_id']);
      return;
    } catch(e) {
      if (e["errors"] === "The messages is already marked as unread.") return;
      err = e;
      Utilities.sleep(6000);
      continue;
    }
  }
  throw err;
}
ninomiyt
株式会社LIFULLの愉快なPythonistaです
https://medium.com/@ninomiyt
lifull
日本最大級の不動産・住宅情報サイト「LIFULL HOME'S」を始め、人々の生活に寄り添う様々な情報サービス事業を展開しています。
https://lifull.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした