
n8n(Nodenamtion)でSlackを使ったアプリを作っていてどうしても欲しい機能があったので追加してのプルリクエストを投稿しました。
Add chat.getPermalink interface in Slack Nodes. #1366
現在は、マージされリリースされています。 このPRは、Slackのメッセージに対しパーマリンクを得るためのAPIchat.getPermalink を呼び出すためのものです。
変更したのは以下のファイルです
- packages/nodes-base/nodes/Slack/MessageDescription.ts
- packages/nodes-base/nodes/Slack/Slack.node.ts
順番に解説します
packages/nodes-base/nodes/Slack/MessageDescription.ts
SlackノードはたくさんのSlackAPIを既にサポートしており、リソースとして分類されています。
利用にあたってはまずこのリソースから一つ選択する必要があります。

今回、扱うリソースはMessageです。このメッセージについてn8nのノード設定画面にあらわれる項目を構成するファイルがMessageDescription.tsです。tsファイルの中身はmessageOperationsとmessageFieldsのハッシュになっていてここに設定項目を定義していく感じです。
messageOperationsにはOperationメニューの項目を以下のように設定し
| |
このようになります。
messageFieldsには個別の設定内容を以下のように設定します。
| |
Slack API chat.getPermalink が要求する、ChannelとTimeStamp(TS)の入力フォームが定義されます。以下のようになります。

ちょっと長いですが、内容は難しくないと思います。
packages/nodes-base/nodes/Slack/Slack.node.ts
次に実際の処理の部分をSlack.node.tsに書きます。SlackのAPIを呼び出す処理を以下のように実装しました。
| |
これだけ書くとわかりにくい部分もあるのですが、前後の似たようなコードを探すと割と簡単に実装が完了します。こういった拡張が自分でできるのはn8nのメリットですね。