daab 仕様 - ノート機能詳細

ノート機能 #

はじめに #

ノートの作成についてはこれまで通り send メソッドを使用します。 それ以外の操作 (get, update, delete) については robot.direct.notes から提供される API を使用してください。

ノートの作成 (テキストのみ) #

本文がテキストのみのノートを作成します。

robot.hear(/note$/, (res) => {
  res.send({
    note_title: 'タイトル',
    note_content: 'コンテンツ',
  });
});

指定するフィールドの仕様は以下の通りです。

フィールド仕様
note_titleノートのタイトル最大 100 文字、空文字列は禁止
note_contentノートの本文最大 5,000 文字、空文字列は禁止

また onsend フィールドを指定することで作成されたノートの情報を受け取ることができます。

    ...
    note_content: '...',
    onsend: (sent) => {
      console.log(`note: ${sent.note}`);
    }
  });
});

添付ファイル付きノートの作成 #

「ノートの作成 (テキストのみ)」で指定した note_titlenote_content の他に、添付したいファイルを note_attachments フィールドに指定します。

res.send({
  note_title: 'タイトル',
  note_content: '本文',
  note_attachments: [
    { path: '/path/to/image.png', name: 'image.png' },
    { path: './scripts/ping.js' }
  ]
});

note_attachments フィールドの仕様は以下の通りです。

フィールド仕様
note_attachments「添付ファイルオブジェクト」の配列

「添付ファイルオブジェクト」の仕様は以下の通りです。

フィールド仕様
pathファイルパス (省略不可)
nameファイル名省略した場合は basename(path) になる
typeファイルのコンテンツタイプ省略した場合はファイル情報から推測するが期待した値にならない可能性もある

また「ノートの作成 (テキストのみ)」の場合と同様、onsend フィールドを指定すると作成したノートの情報を受け取ることができます。

ノートの取得 #

指定した id のノートを取得します。

const id = ... // 取得したいノートの ID 文字列

robot.direct.notes.get({ id })
  .then(result => console.log(result.note))
  .catch(error => console.error(error.message));

id に指定する値は、onsend で受け取ったデータの id フィールドやノートイベントnote_id フィールドから得られる値を指定します。

ノートの更新 #

指定したノートを、指定したフィールド値で更新します。

robot.direct.notes.update(note, { note_content: '新しい本文' })
  .then(result => console.log(result.note))
  .catch(error => console.error(error.message));

第一引数に指定する note は、onsendrobot.direct.notes.get で取得したノートオブジェクトを指定します。

第二引数には、以下の中から更新したいフィールドだけを指定してください。指定したフィールドの値でノートが更新されます。

フィールド仕様
note_titleノートのタイトル、最大 100 文字、空文字列は禁止
note_contentノートの本文、最大 5,000 文字、空文字列は禁止
note_attachments次の「添付ファイルを更新する場合」を参照

また、第三引数としてオプションを渡すことができます (※省略可)。

const updates = { note_content: '新しい本文' };
const options = { notify_talk_members_of_update: false };

robot.direct.notes.update(note, updates, options)
  .then(result => console.log(result.note))
  .catch(error => console.error(error.message));

省略した場合は各フィールドにデフォルト値を指定したとみなされます。指定可能なフィールドは以下の通りです。

フィールド仕様
notify_talk_members_of_updateトークメンバーにノートの更新を通知するかどうか。true の場合は通知する、false の場合は通知しない。デフォルト値は true

添付ファイルを更新する場合 #

note_attachments を指定するとノートの添付ファイルが更新されます。指定しなければ既存の添付ファイルが維持されます。

添付ファイルを新しく追加したい場合は、以下のように既存の添付ファイル情報とともに「添付ファイル付きノートの作成」と同じ形式のオブジェクトを追加で指定します。

const newAttachments = [
  ...note.attachments,          // 既存の添付ファイル情報
  { path: '/path/to/new-file' } // ← 新しく追加する添付ファイル情報
];

robot.direct.notes.update(note, { note_attachments: newAttachments })
  ...

既存の添付ファイルのうち一部だけを残したい場合は、newAttachments の部分を以下のようにします。

const newAttachments = [
  note.attachments[0],          // 既存の添付ファイルのうち、一つ目だけを残す
  { path: '/path/to/new-file' } // ← 新しく追加する添付ファイル情報
];

ノートの削除 #

指定した id のノートを削除します。

robot.direct.notes.delete({ id: note.id })
  .then(result => console.log(result.note))
  .catch(error => console.error(error.message));

指定する id 値は「ノートの取得」と同じです。

ノートメッセージの受信 #

direct でノートを作成・更新・削除すると、これらの操作を表すメッセージがトークに送信されます。これらのメッセージをボットで受け取りたい場合は以下のようにします。

// ノートが作成された
robot.hear('note_created', (res) => {
    const j = res.json;
    console.log(`created: id = ${j.note_id}, title = ${j.title}`);
});

// ノートが更新された
robot.hear('note_updated', (res) => {
    const j = res.json;
    console.log(`updated: id = ${j.note_id}, title = ${j.title}`);
});

// ノートが削除された
robot.hear('note_deleted', (res) => {
    const j = res.json;
    console.log(`deleted: id = ${j.note_id}, title = ${j.title}`);
});
補足: 「ノートの編集」で「変更をトークに通知する」のチェックを外すと、更新メッセージがトークに送信されません。この場合 note_updated ハンドラは反応しません。

res.json が持つフィールドは以下の通りです。

フィールド仕様
note_idノート ID 文字列
titleノートのタイトル

制限 #

robot.direct.notes 経由の API 呼び出しは「24 回/120 秒」に制限されています。