ノートの新しいフォーマットと既存のボット

ノートの新しいフォーマットと既存のボットとの互換性について #

はじめに #

direct ではスタイル付きノート (仮称) のリリースを予定しています。スタイル付きノートではテキストに対して色やサイズといった装飾が可能となります。 一方で、これは新フォーマットであることから、古い SDK を使用したボットではこの新しいフォーマットのデータを処理することができません。

この文書では、新フォーマットのノートがリリースされた場合に、既存の古い SDK を使用したボットへ与える影響と対策について説明します。

既存のボットのうち、対象となるのは「ユーザーが作成したノートに反応 (して読み取り・更新) するボット」のみです。それ以外のボット、例えば「ボット自身がノートを作成し、それをユーザーが閲覧・編集する」といった場合については影響ありません。これから説明する対応も不要です。

以降に出てくる用語の整理 #

  • 新ノート
    • 新しいフォーマットが導入されたノート
      • ※ 2024-04-04 時点ではまだリリースされていません
    • 内部的には XML 形式で表現されている
  • 旧ノート
    • テキストとチェックボックスで構成されたノート
      • ※ 2024-04-04 時点の direct で利用可能なノートのことです
    • 内部的にはプレーンテキストで表現されている
  • 互換モードの新ノート
    • 新ノートに対応していない古いクライアント (古い SDK を使ったボット) に向けて、サーバーから送信される特殊なノート
    • サーバーから送信する際に新しいフォーマットの要素を削除するため、古いクライアントからは旧ノートのように見える

問題となるケース #

以下のすべての条件に当てはまる場合が問題となるケースです。

  • ボットはユーザーが作成したノートに反応する
  • ユーザーは新ノートが作成可能な新しいバージョンのクライアントを使っている
  • ボットは新ノートに対応した SDK を使っていない
  • ユーザーとボットが同じトークに参加している

このときユーザーが新ノートを作成すると、古い SDK を使っているボットにはそのノートが「互換モードの新ノート」として通知されます。この「互換モードの新ノート」は以下の点に注意する必要があります。

  1. 互換モードであるため元のスタイル付きノートとは異なり、装飾情報がすべて欠落したテキストデータのみが届く
  2. 「互換モードの新ノート」として受信したノートは更新できないため、ボットが更新用の API を呼び出すとエラーになる

解決または回避方法 #

ボットを新ノートに対応させたい場合 #

新ノートに対応した新しいバージョンの daab SDK を利用しなければなりません。新バージョンの SDK については開発が済み次第、仕様とともに順次公開していきます。

ボットを現状のまま使い続けたい場合 #

新ノートに対応した direct のクライアントには「旧ノート」を作成するためのオプションを設ける予定です。「旧ノート」であれば既存のボットはこれまで通りの動作をします。オプション設定に関する情報が公開されましたら、ボットのユーザーにオプションの有効化を依頼してください。

繰り返しになりますが、問題となるのは「ユーザーが作成したノートに反応するボット」のみです。ボット自身がノートを作成する場合は問題ありません。