slack:// を使う場合はteam/channel/user/fileなどの実IDを使います。一方、HTTPSの app_redirect は用途によってchannel IDだけでなくchannel名も受け付けます。2方式を混同しないことが重要です。Slackアプリを開く基本
Slack公式資料では、デフォルトworkspaceでSlackを開く slack://open や、team IDを指定してworkspaceを切り替える形式が案内されています。Mac、Windows、iPhone、AndroidのネイティブSlackクライアントが対象です。
たとえば特定workspaceを開く場合は slack://open?team={TEAM_ID}、特定チャンネルなら slack://channel?team={TEAM_ID}&id={CHANNEL_ID} のように指定します。
slack://では表示名ではなくIDを使う
Slack公式は、slack:// URIについてworkspace subdomain、channel名、user名、filenameを識別子として使えないと明記しています。team ID、channel ID、user ID、file IDなどの実IDを使います。
app_redirectは別ルール
SlackはWebサイトや外部アプリからSlackへ戻すHTTPS形式として https://slack.com/app_redirect も案内しています。こちらはネイティブ slack:// と同じ引数ルールではありません。
たとえば会話へ送る app_redirect では、channel=C123... のようなchannel IDに加えて、channel=release-notes のようなchannel名も公式に案内されています。ユーザーがその会話へアクセスできない場合や、対象が存在しない場合は404になることがあります。
| 方式 | 主な用途 | 識別子の考え方 |
|---|---|---|
slack://... | ネイティブSlackクライアントを直接開く | team/channel/user/file等のIDを使用。表示名は使わない。 |
https://slack.com/app_redirect | Web/外部アプリからSlack内の会話やAppへ戻す | 用途によりApp ID、team ID、channel IDまたはchannel名を使用。 |
App HomeやDMにも直接移動できる
Slack公式には、App Homeを開く slack://app?team=...&id=...、ユーザーとのDMを開く slack://user?team=...&id=...、fileを開く形式なども掲載されています。必要な目的に最も近い公式テンプレートを選びます。
現在の製品実装
製品の直接生成コードにはSlack向けの候補生成があり、slack://channel?team=...&id=... のような公式資料と整合する形式を扱います。一方、コア保存APIの5系統にはSlackは含まれません。
したがって「Slackの候補を直接生成するコードがある」と「Slackリンクを保存・短縮・計測まで同じ経路で扱える」は別です。
失敗しやすいポイント
slack://でteam IDとchannel IDを表示名と取り違えていないか。app_redirectとネイティブURIのパラメータ仕様を混同していないか。- クエリ値を適切にURLエンコードしているか。
- ユーザーが対象workspace/channelへアクセスできるか。
- Slackアプリが端末にインストールされているか。
- 直接生成と保存機能を混同していないか。