ノート機能 #
はじめに #
ノートの作成についてはこれまで通り 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_title
や note_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
は、onsend
や robot.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 秒」に制限されています。