如何在 Synology Chat 中設定 Webhook 及斜線指令?

如何在 Synology Chat 中設定 Webhook 及斜線指令?

目的

使用 Synology Chat 時,可設定傳入及傳出 Webhook,以促進與多項服務 (例如:chatbots 或 RSS 摘要) 間的整合與溝通。本文章將引導您設定 Webhook 及斜線指令。

解決方法

Webhook 整合

有兩種類型的 Webhook 可用來與外部來源整合及溝通。若要開始使用 Chat 的 Webhook 整合功能,請前往使用者設定檔 > 整合功能

設定傳入 Webhook

Webhook 由 JSON 格式的承載資料所組成。

  1. 若要建立類似上圖所示的訊息,請按照下列方式建立 JSON 承載資料:
  2. {"text": "This is a test"}
  3. 請將此 JSON 字串放置在 payload 參數後,並使用 application/x-www-form-urlencoded 來將資料傳送至 Webhook 網址。例如:
  4. POST https://DS_IP/webapi/entry.cgi?api=SYNO.Chat.External&XXXXX Content-Type: application/x-www-form-urlencoded payload=%7B%22text%22%3A%22This%20is%20a%20test.%22%7D
  5. 以下為 CURL 範例:
  6. curl -X POST \ --data-urlencode 'payload={"text": "This is a test"}' \ https://DS_IP/webapi/entry.cgi?api=SYNO.Chat.External&XXXXX

若要加入連結:

若要加入連結,您可以直接在 text 中插入連結。例如:

payload={"text": "https://www.synology.com"}

payload={"text": "Check this out!! <https://www.synology.com|click here> for details!"}

若要上傳檔案:

可透過傳入 Webhook 將檔案上傳至 Chat。

  • 若要上傳檔案,JSON 承載資料中必須含有 file_url 及一個選用的文字。例如:
  • payload={"text": "a fun image", "file_url": "http://imgur.com/xxxxx"}
  • 系統將會從 file_url 下載檔案,並將檔案上傳至 Chat。1

設定傳出 Webhook

傳出 Webhook 可讓您收到來自 Chat 的訊息;當訊息符合所定義的觸發字和條件時,傳出 Webhook 便會將 HTTP 張貼文章的要求傳送至您所指定的網址。

觸發字和觸發條件:

  • 當訊息符合下列其一或所有條件時,才會觸發傳出 Webhook:
    • 訊息位於指定的頻道中。
    • 訊息開頭為指定的觸發字之一。
  • 若已指定頻道,觸發字並非必要;然而,若未指定任何頻道,必須使用觸發字。若指定上述兩項條件,則僅有在訊息兩項條件皆符合時,才會寄送傳出 Webhook。2

傳出資料:

  1. 收到的訊息符合觸發條件時,便會傳送張貼文章至所有指定的網址。例如:
  2. token: bot token channel_id channel_name user_id username post_id: message ID timestamp: message time text: message content trigger_word: trigger words
  3. 若要回應訊息至 Chat,需在回應主體中回傳 JSON (支援的欄位與傳入 Webhook 的 JSON 相同)。例如:
  4. {"text": "This is a test"}

設定斜線指令

斜線指令是另一種與外部來源或應用程式互動的方式。可在任何頻道中執行斜線指令,且僅有下指令的使用者可看到。

  1. 前往使用者設定檔 > 整合功能 > 斜線指令以註冊斜線指令整合。
  2. 若要建立斜線指令,請在文字欄位輸入前斜線「/」及指令。範例如下方截圖所示:
  3. 執行斜線指令時,HTTP 張貼文章的要求及以下部分屬性將會傳送至指定的網址 (流程與傳出 Webhook 相似):
  4. token: bot token user_id username text: message content
  5. 外部來源或應用程式可決定是否要回應來自 Chat 的斜線指令。若要回應指令要求,回應訊息應包含如下所示的有效 JSON 承載資料:
  6. {"text": "Slash command response."}
  7. 下圖所示的回應訊息僅會傳送給下指令的使用者,且僅有該使用者能看到訊息。
  8. 注意事項:

    1. 檔案大小上限為 32 MB。
    2. 設定傳出 Webhook 時,可指定任何可存取的頻道;若未指定任何頻道,預設 Chat 會監控所有公開頻道。
目的
內容
解決方法
Webhook 整合
設定傳入 Webhook
設定傳出 Webhook
設定斜線指令