Slack
概要
Slack は、チームのコミュニケーションを支えるビジネス向けメッセージングプラットフォームです。チャンネルでの会話、ユーザー管理、ユーザーグループ、チャンネルへの参加管理などの機能を提供します。
| 項目 | 内容 |
|---|---|
| 公式HP | https://slack.com/intl/ja-jp/ |
| 公式ヘルプ | https://slack.com/intl/ja-jp/help |
| APIドキュメント | https://api.slack.com/ |
注意
機能によって必要なSlackのプランが異なります。
- アカウント管理(SCIM 2.0 APIによるアカウントの作成・更新・無効化):Business+プラン以上が必要です
- ユーザーグループ(グループ付与・グループプッシュ):有料プラン(Proプラン以上)が必要です。Freeプランのワークスペースでは利用できません
サービス仕様
Slack は以下の主要な機能と仕様を提供します。
ユーザー管理
- ユーザーの招待(作成) / 有効化・無効化(削除に相当する運用) / 属性更新
- ユーザー種別(通常メンバー / ゲスト等)は Slack 側の仕様・プランに依存します
グループ / チャンネル管理
- ユーザーグループ:メンバーの追加・削除ができます
- チャンネル:パブリックチャンネルへの参加(Join / Invite)ができます
ポイント
アーカイブ済みチャンネルとプライベートチャンネルは取り込み対象外です。パブリックチャンネルのみが割当の対象になります。
注意
- ユーザーグループには少なくとも1人のメンバーが必要という仕様上の制約があり、対象アカウントがユーザーグループの唯一のメンバーである場合、割当剥奪タスクはエラーになります。ユーザーグループを削除するか、他のメンバーを追加してから再度実行してください。
- ワークスペースの全メンバーが参加する「general」チャンネルからメンバーを外すことはできません。generalチャンネルに対する割当剥奪タスクは成功として扱われますが、Slack上ではメンバーはチャンネルに残ります。
コネクタ仕様
| 項目 | 備考 |
|---|---|
| アカウント管理 | ・アカウントの作成 / 有効化・無効化(削除に相当) ・属性同期による属性更新 |
| グループ、チャンネルの管理(グループ付与) | 割当種別で設定できます(ユーザーグループ / チャンネル) |
| グループプッシュ | YESODのグループをSlackの「ユーザーグループ」として作成・更新・削除できます(詳細はグループプッシュを参照) |
業務アセットの作成
OAuth を利用して接続します。
接続時にログインするSlackアカウントは、ワークスペースのオーナーまたは管理者である必要があります(アカウント管理に使用するSCIM APIのトークンを発行できるのが、ワークスペースのオーナーまたは管理者のみのため)。
接続時に以下のスコープをYESODに委譲します。
| スコープ | 用途 |
|---|---|
| SCIM APIの利用(アカウントの作成・更新・無効化) | |
| ワークスペース情報の取得 | |
| / | メンバー一覧・メールアドレスの取得 |
| プレゼンス設定(現行機能では未使用) | |
| / | ユーザーグループの取得・作成・更新・無効化(グループ付与・グループプッシュで使用) |
| / | チャンネル一覧の取得・チャンネルメンバーの追加・削除 |
アカウント管理
アカウントの作成
Slack では通常、招待(Invite)によってユーザーを作成します。招待の挙動(メール送信、初回ログイン時の入力項目等)は Slack 側の設定に依存します。
Slack上に同一のメールアドレスのアカウントが存在するかに応じて、以下のような挙動になります。
| 条件 | 挙動 |
|---|---|
| 同一メールアドレスのアカウントがSlackに存在しない | アカウントを新規作成する |
| 同一メールアドレスの有効なアカウントがSlackに存在する | そのアカウントの情報を更新する |
| 同一メールアドレスの無効なアカウントがSlackに存在する | そのアカウントを有効にして情報を更新する |
注意
Slack側の仕様により、既存アカウントのパスワードの更新・リセットには対応していません。パスワードはアカウント作成時のみ設定されます(デフォルトはYESODが作成したパスワード)。パスワードを変更する場合は、ユーザー自身がSlack上で変更してください。
アカウントの削除(無効化)
運用上は「削除」ではなく「無効化(Deactivation)」として扱います。すでに無効化されているアカウントに対して削除タスクを実行した場合も成功として扱われます。
同期する項目(アカウントのマッピング)
Slack は SCIM 2.0 を利用したプロビジョニングに依存します。
指定可能な key と意味
以下は、アカウント作成 / 属性同期で利用できる代表的なマッピング項目です(詳細は Slack 側仕様に依存します)。
| 指定可能key | 必須 | 説明 | デフォルトの式 | 公式ドキュメントのProfile Attribute | 公式ドキュメントのSCIM Attribute |
|---|---|---|---|---|---|
| ✅ | ユーザー名。一意。最大21文字。ピリオド・アンダースコア、ハイフンをサポート。その他はアンダースコアに変換。 | Username | userName | ||
| ✅ | メールアドレス。アカウント検索の識別キーとして使用されます。 | emails[0]['value'] | |||
| - | メールアドレスがプライマリーかどうか(設定メールアドレスが一つの場合は強制的に) | - | - | ||
| - | 名 | name | - | ||
| - | 姓 | name | - | ||
| - | 敬称 | - | Honorific Prefix | name.honorificPrefix | |
| - | ニックネーム | - | Nickname | nickName | |
| - | 最大80文字。ピリオド・アンダースコア、ハイフンをサポート。その他はアンダースコアに変換。 | - | Display Name | displayName, userName | |
| - | パスワード。アカウント作成時のみ設定されます(更新時はリクエストに含まれません)。 | イエソドが作成したパスワード | - | password | |
| - | プロファイルURL。URL形式で入力しないとSlackのデフォルトのURLになる。 | - | Profile URL | profileUrl | |
| - | アクセス可能な URL または画像データを含むデータ URL(例:"data:image/png;base64,...") | - | Profile Photo | photos[0]['values'] | |
| - | 役職など | - | Title | title | |
| - | タイムゾーン | "Asia/Tokyo" | Timezone | timezone | |
| - | 地域 | - | Locale | locale | |
| - | ユーザーの言語 | - | Preferred Language | preferredLanguage | |
| - | 電話(携帯電話 type: 'mobile' の指定方法は Slack 側仕様に依存) | - | Phone | phoneNumbers[0]['values'] | |
| - | 住所(市区町村) | - | City | addresses[primary]['locality'] | |
| - | 国 | - | Country | addresses[primary]['country'] | |
| - | 郵便番号 | - | Zip Code | addresses[primary]['postalCode'] | |
| - | 従業員タイプ | - | UserType | userType | |
| - | 役割 | - | Roles | roles | |
| - | 従業員番号 | - | Employee ID | enterprise.employeeNumber | |
| - | コストセンター | - | Cost Center | enterprise.costCenter | |
| - | 組織 | - | Organization | enterprise.organization | |
| - | 部署 | - | Division | enterprise.division | |
| - | 部署 | - | Department | enterprise.department | |
| - | マネージャーID:他のアカウントのID(例:"U06P83AJ3U3")を指定する。有効なIDでない場合は Null が入る。 | - | Manager | enterprise.manager.managerId |
グループプッシュ
ポイント
このセクションでは、グループプッシュ機能を使ってYESODのグループをSlackに連携する際の仕様について説明します。グループプッシュの基本的な使い方は グループプッシュ を参照してください。
グループプッシュを使用すると、YESODに登録されているグループ(組織・会社・事業所・プロジェクト・動的グループ)をSlackのユーザーグループとして作成・更新・削除できます。
注意
グループプッシュで作成・管理できるのはSlackの「ユーザーグループ」のみです。「チャンネル」はグループプッシュの対象外です。チャンネルへの割当については上記「グループ / チャンネル管理」を参照してください。
前提条件
| 項目 | 内容 |
|---|---|
| 対象コネクタ | 通常版Slackコネクタのみです。Slack Enterprise Grid / Slack Enterprise Grid For Guest コネクタは対象外です(ワークスペース割当のみを管理し、ユーザーグループを扱わないため)。Enterprise Gridプランをご利用の場合も、ユーザーグループのグループプッシュは通常版Slack業務アセット経由で利用できます |
| Slackプラン | ユーザーグループ機能が利用できる有料プラン(Proプラン以上)が必要です。Freeプランでは利用できません |
| 権限・再接続 | 必要なスコープ( / )は既存の接続で取得済みのため、再接続・再認可は不要です |
グループの作成・更新
Slack上に同一の名前(グループ名)のユーザーグループが存在するか(無効化済みを含む)に応じて、以下のような挙動になります。
| 条件 | 挙動 |
|---|---|
| 同名のユーザーグループがSlackに存在しない | ユーザーグループを新規作成する(メンバー0人で作成され、メンバーは後続の割当タスクで追加されます) |
| 同名の有効なユーザーグループがSlackに存在する | 既存のユーザーグループにリンクし、属性を上書き更新する(手動作成済みのグループも対象になります) |
| 同名の無効化済みユーザーグループがSlackに存在する | エラーになります(下記参照) |
注意
Slack上にグループプッシュの連携対象と同じ名前の有効なユーザーグループがすでに存在する場合、それがYESODが作成したものかどうかを確認せずに採用して更新します。グループ名の生成ルール(属性式)を決める際は、Slack上の既存グループと名前が衝突しないかご確認ください。
注意:同名の無効化済みユーザーグループがある場合はエラーになります
Slackのユーザーグループは無効化してもグループ名・メンション名を占有し続けるため、同名では新規作成できません。エラーになった場合は、Slack側で該当のユーザーグループを有効化して名前を変更するか、YESOD側のグループ名を変更してから再度実行してください。
なお、無効化済みグループを自動で再有効化して再利用することはしません(再有効化すると無効化前のメンバー構成が復元され、YESODの管理外のメンバーが残ってしまうためです)。
グループの削除(無効化)
Slackにはユーザーグループを完全に削除する機能がないため、グループ削除タスクはユーザーグループの無効化として実行されます。
すでに無効化されている場合や、対象のユーザーグループがSlackに存在しない場合は、成功として扱われます。
グループの移動
Slackのユーザーグループには階層(グループ内グループ)がないため、グループの移動はありません。YESOD側のグループ階層はフラットに連携されます。
同期する項目(グループのマッピング)
| 指定可能key | 必須 | 説明 | デフォルトの式 | 備考 |
|---|---|---|---|---|
| ✅ | グループ名 | ユーザーグループ間で一意である必要があります | ||
| - | メンション名( で使われる文字列) | - | チャンネル名・ユーザー名・他のユーザーグループと重複できません。文字種の制限はなく日本語も設定できます | |
| - | グループの説明 | - | - |
ポイント:メンション名(handle)は任意項目です
Slackの管理画面からユーザーグループを作成する場合はメンション名が必須入力ですが、API経由では未指定でも作成できるため、YESODでは任意項目としています。未設定の場合はメンション名なしでユーザーグループが作成されます。
ポイント:デフォルトチャンネルには対応していません
ユーザーグループの「デフォルトチャンネル」(メンバーが追加された際に自動でチャンネルに追加される設定)の同期には対応していません。チャンネルへの参加は既存の割当機能でアカウント単位に管理する前提のため、そちらと競合しないようにするためです。
グループの属性同期
連携済みのユーザーグループに対して、「同期する項目(グループのマッピング)」に設定された値を反映します。
- 属性マッピングが設定されている項目のみ更新され、マッピングを設定していない項目はSlack側の既存値がそのまま維持されます
- YESOD側でグループの名称などを変更(リネーム)した場合、連携済みのユーザーグループに対して更新されるため、別のユーザーグループが新規に作られることはなく、同一のユーザーグループの名前が変わります
エラーになった場合の対処
グループプッシュのタスクがエラーになった場合、タスクの実行ログに原因と対処方法が表示されます。主なエラーと対処方法は以下の通りです。
| Slackエラーコード | エラーメッセージ | 原因と対処 |
|---|---|---|
| / | ユーザーグループはSlackの有料プランでのみ利用できます | 接続先ワークスペースがFreeプランです。有料プランへのアップグレードが必要です |
| 同名のユーザーグループが既に存在します | リネーム先の名前が既存のユーザーグループと重複しています。YESOD側のグループ名またはグループ名(name)の属性マッピングを変更してください | |
| メンション名が既に使用されています | メンション名がワークスペース内のチャンネル名・ユーザー名・他のユーザーグループと重複しています。メンション名(handle)の属性マッピングを変更してください | |
| / | メンション名に使用できない値です | Slack側でメンション名が拒否されました。メンション名(handle)の属性マッピングを変更してください(発生条件はSlack側で非公開です) |
| グループ名が長すぎます | グループ名(name)の属性マッピングの評価結果を短くしてください | |
| グループの説明が長すぎます | 説明(description)の属性マッピングの評価結果を短くしてください | |
| ユーザーグループの管理権限がありません | Slackワークスペースの設定で、ユーザーグループを管理できるロールの設定を確認してください |
ポイント
上記以外のエラーコードの場合は、Slackから返されたエラー内容がそのままタスクの実行ログに表示されます。