結論:ネイティブの 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を使います。

運用ポイント:表示名は変更され得ます。ネイティブURIを組み立てる場合は、画面表示名から推測せずSlackのAPIや管理情報から正しい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_redirectWeb/外部アプリから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アプリが端末にインストールされているか。
  • 直接生成と保存機能を混同していないか。

Slackの現在の製品範囲

Slackは直接生成コードがありますが、コア保存APIは同等対応ではありません。

Slackの対応状況を見る

確認した一次情報