瀏覽文件

為 OpenConnector 建立 Slack OAuth app

當 OpenConnector 需要透過 slack service 讀取 Slack conversations、列出 users、傳送訊息、上傳檔案或管理 reactions 時,使用 Slack OAuth app。

OpenConnector service

Service IDProviderAuth type
slackSlackOAuth2

OpenConnector 的 Slack provider 使用 Slack OAuth v2,請求的 Slack scopes 包括 channels:readgroups:readim:readmpim:read、history scopes、file scopes、users:readchat:writeim:write 和 reaction scopes 等。

前置條件

  • 一個正在運作的 OpenConnector runtime。
  • 有權限為目標 workspace 建立或管理 Slack app。
  • 有權限在 Slack workspace 中安裝 app,或可以讓 workspace owner/admin 核准安裝。
  • 使用者在瀏覽器中開啟的 OpenConnector origin,例如 http://localhost:3000https://connect.example.com

第 1 步:確定 OpenConnector callback URL

在 OpenConnector origin 後串接 /oauth/callback,得到 callback URL。

本機測試使用 http://localhost:3000/oauth/callback。如果 Slack 不接受本機 callback URL,請透過 HTTPS tunnel 或公開網域暴露 OpenConnector,設定 OOMOL_CONNECT_ORIGIN,重新啟動後使用公開 callback URL,例如 https://connect.example.com/oauth/callback

第 2 步:建立 Slack app

Slack API app management 中:

  1. 建立一個新 app。
  2. 選擇開發或測試用的 workspace。
  3. 開啟 OAuth & Permissions
  4. 在 redirect URLs 中加入 OpenConnector 的準確 callback URL。
  5. 加入 OpenConnector actions 需要的 bot token scopes。
  6. 儲存 app 設定。

Slack 官方文件見 Installing with OAuth,scope 列表見 Scopes

第 3 步:複製 client credentials

開啟 Slack app 的 Basic Information,複製:

Slack 欄位OpenConnector 欄位
Client IDclientId
Client SecretclientSecret

不要把 bot token 當成 OAuth client secret。OpenConnector 會啟動 OAuth flow,並在授權完成後儲存 Slack credential。

第 4 步:在 OpenConnector 中儲存 Slack client

優先使用 OpenConnector Web 控制台:

  1. 開啟 OpenConnector Web 控制台,例如 http://localhost:3000
  2. 開啟 Providers,選擇 Slack
  3. 點擊 Configure OAuth ClientEdit OAuth Client
  4. 貼上 Slack client ID 和 client secret。
  5. 點擊 Save OAuth Client

第 5 步:連接並測試

儲存 OAuth client 後,在 Slack provider 頁面點擊 Connect。選擇 Slack workspace,核准 app,回到 OpenConnector,並確認 provider 頁面顯示 workspace 已連接。

低風險測試 action 包括 slack.list_conversationsslack.list_channelsslack.list_users

排查建議

現象檢查項
Slack 拒絕 redirect URL確認 Slack redirect URL 是 <openconnector-origin>/oauth/callback。如果 Slack 要求 HTTPS,請使用 HTTPS 公開 origin 並設定 OOMOL_CONNECT_ORIGIN
App 無法安裝如果 workspace 限制 app 安裝,請讓 Slack workspace owner 或 admin 核准 app。
找不到 channel可見性取決於 scopes、workspace policy,以及 app 是否能存取該 channel。Private channel 通常需要邀請 app。
訊息動作失敗確認 app 有 chat:write 等寫入 scopes,並且能存取目標 conversation。
修改 scopes 後沒有生效修改 scopes 後重新安裝或重新連接 Slack,讓新權限寫入 connected credential。