データパイプラインソースとしてのSlackの設定
Slackをデータパイプラインソースとして設定し、チャンネル、メッセージ、スレッド、リアクション、ファイル、ユーザーなどのワークスペースデータを送信先に抽出します。
このガイドを使用して、機能と前提条件の確認、データパイプラインソースとしてのSlackの接続、パイプラインの設定、サポートされるオブジェクト、同期モード、スキーマ処理、制限について理解します。
サポートされている機能
Slackをパイプラインソースとして使用する場合、次の機能がサポートされます。
- クラウド接続:
https://slack.com/apiを介してHTTPS経由でSlackに接続します。オンプレミスエージェントは不要です。 - OAuth 2.0認証:Slackワークフローコネクターと同じOAuth 2.0コネクションタイプを使用して接続します。詳細については、サポートされているコネクションタイプを参照してください。
- オブジェクトレベルの選択:同期するSlackオブジェクトを送信先の個別のテーブルとして選択します。完全なリストについては、サポートされているオブジェクトを参照してください。
- 完全同期と増分同期: 完全同期モードと増分同期モードをサポートします。増分同期では、チャンネルごとのカーソルと設定可能なルックバックウィンドウを使用して、最近の編集を検出します。詳細については、同期モードを参照してください。
- ダイレクトメッセージとアーカイブ済みチャンネルの包含:必要に応じて、通常のチャンネルに加えて、ダイレクトメッセージ、グループダイレクトメッセージ、アーカイブ済みチャンネルを含めます。
- チャンネルフィルタリング:必要に応じて、ワークスペース全体ではなく、特定のチャンネルリストにパイプラインを制限します。
- 削除追跡:ネイティブの論理削除フラグ、または連続する完全同期の比較によって、サポートされるオブジェクトの削除を検出します。オブジェクトのリストについては、削除追跡を参照してください。
- スキーマドリフトの検出と処理: 新しいフィールドを自動同期でスキーマの変更を自動的に検出して適用するか、新しいフィールドをブロックでスキーマを固定します。
- フィールドレベルのデータ保護:データがデスティネーションに到達する前に、機密フィールドをハッシュ化するか、そのままレプリケートします。
- 構成可能な同期頻度: 時間ベースの間隔またはcron式を使用して同期をスケジュールします。サポートされる最小間隔は15分です。
前提条件
Slackをデータパイプラインソースとして接続するには、次が必要です。
- Slackワークスペース、および同期するすべてのチャンネルにすでにメンバーとして参加している、またはそれらのチャンネルに参加または招待されることが可能なSlackユーザーアカウント。詳細については、制限事項を参照してください。
- SlackのOAuthフローを通じてサードパーティアプリケーションを認可する権限。
必要な権限
同期するオブジェクトに必要なOAuthスコープのみを選択します。各オブジェクトに必要なスコープについては、推奨権限を参照してください。
推奨権限
Workatoがチャンネルベースのオブジェクトを同期するには、2種類のスコープが必要です。検出スコープにより、Workatoは存在するチャンネルを検出できます。コンテンツスコープにより、Workatoはすでに検出したチャンネル内の内容を読み取れます。 channels、channel_members、messages、threads、reactions、message_attachments、message_files、pins、およびbookmarksはチャンネルリストで使用され、同期するチャンネルタイプの検出スコープが必要です。同期する各チャンネルタイプに対して、次の検出スコープを選択します。
| Slack OAuthユーザースコープ | チャネルタイプ |
|---|---|
channels:read | パブリックチャンネル |
groups:read | プライベートチャンネル |
im:read | ダイレクトメッセージ。ダイレクトメッセージとグループダイレクトメッセージを含めるを有効にしている場合にのみ関連します。 |
mpim:read | グループダイレクトメッセージ。ダイレクトメッセージとグループダイレクトメッセージを含めるを有効にしている場合にのみ関連します。 |
同期するオブジェクトに対して、次の追加スコープを選択します。
| Slack OAuthユーザースコープ | Workatoオブジェクト |
|---|---|
channels:history | messages、threads、reactions、message_attachments、message_files(パブリックチャンネル) |
groups:history | messages、threads、reactions、message_attachments、message_files(プライベートチャンネル) |
im:history | messages、threads、reactions、message_attachments、message_files(ダイレクトメッセージ、有効な場合) |
mpim:history | messages、threads、reactions、message_attachments、message_files(グループダイレクトメッセージ、有効な場合) |
pins:read | pins |
bookmarks:read | bookmarks |
users:read | ユーザー |
users:read.email | users(メールアドレス) |
users.profile:read | users(custom_profile_fields列) |
team:read | team |
usergroups:read | user_groups |
files:read | files |
channelsとchannel_membersに必要なのは、上記の検出スコープのみです。アプリがパブリックチャンネルに自動的に参加できるSlackのchannels:joinスコープは、このコネクションでは使用できません。詳細については、制限事項を参照してください。
一部のスコープにはCUSTOM OAUTH PROFILEが必要
team:read、usergroups:read、files:read、pins:read、bookmarks:read、またはusers.profile:readを付与するには、独自のSlackアプリを使用するCustom OAuth profileが必要です。設定手順については、Slackへの接続を参照してください。
サポートされるコネクションタイプ
Slackデータパイプラインは、1つの認証方法をサポートします。
- OAuth 2.0:Slackワークフローコネクターと同じコネクションタイプを使用して、WorkatoがSlackワークスペースにアクセスすることを認可します。設定手順については、Slackへの接続を参照してください。
Slackへの接続
Slackをデータパイプラインソースとして接続するには、次の手順を実行します。
Slackへの接続
WorkatoでSlackに接続するには、次の手順を実行します:
作成 > コネクションをクリックするか、Cを2回押します。
Slackを検索し、アプリとして選択します。
コネクション名フィールドにコネクションの名前を入力します。
Slackコネクション
ロケーションドロップダウンメニューを使用して、コネクションを保存するプロジェクトを選択します。
任意です。詳細を展開し、これはClassic Slackアプリですかドロップダウンメニューを使用して、YesまたはNoを選択します。 Slackアプリを詳細な権限スコープに移行していない場合にのみ、Yesを選択します。詳細は、詳細な権限スコープへの移行を参照してください。
任意です。コネクションにリクエストするOAuthユーザースコープを選択するには、OAuthユーザースコープドロップダウンメニューを使用します。このフィールドを空のままにすると、デフォルトスコープがリクエストされます。
任意です。 Custom OAuth profileドロップダウンメニューを使用して、コネクション用のCustom OAuth profileを選択します。詳細については、Slack用Custom OAuth profilesを参照してください。
接続をクリックします。
許可をクリックして、Workatoにアカウントへのアクセス権限を付与します。
Custom OAuth profiles
Custom OAuth profileを使用すると、このコネクションでWorkatoのデフォルト共有アプリの代わりに独自のSlackアプリを使用できます。付与するスコープを完全に制御する必要がある場合は、Custom OAuth profileを検討してください。
Custom OAuth profileは、単一のSlackワークスペースにのみ接続できます。複数のワークスペースでSlack Enterprise Gridを使用する場合は、ワークスペースごとに個別のCustom OAuth profileと個別のSlackアプリを作成します。設定手順については、SlackのCustom OAuth profilesを参照してください。
パイプラインの設定
Slackをデータパイプラインソースとして設定するには、次の手順を実行します。
作成 > データパイプラインを選択します。
データパイプライン名フィールドにデータパイプラインの名前を入力します。
ロケーションドロップダウンメニューを使用して、データパイプラインを保存するプロジェクトを選択します。
ビルドを開始をクリックします。
ソースアプリから新規/更新済みレコードを抽出トリガーをクリックします。このトリガーは、パイプラインがSlackからデータを取得する方法を定義します。
ソースアプリから新規/更新済みレコードを抽出トリガーを設定
接続済みソースアプリドロップダウンメニューを使用して、Slackを選択します。
このパイプラインで使用するSlackコネクションを選択します。または、+ 新規コネクションをクリックして新しいコネクションを作成します。
オブジェクトを追加をクリックして、新しいオブジェクトを追加パネルを開きます。
オブジェクトを追加
使用可能なSlackオブジェクトのリストを検索または参照し、同期するオブジェクトを選択して、追加をクリックします。
任意です。オブジェクトの同期方法を設定するには、オブジェクトの横にある設定アイコンをクリックします。 messages、threads、reactions、message_attachments、およびmessage_filesは完全同期と増分同期の両方をサポートし、デフォルトでは増分同期になります。その他のすべてのオブジェクトは、完全同期のみをサポートします。詳細については、同期モードを参照してください。
選択した各オブジェクトのスキーマを確認してカスタマイズします。オブジェクトを選択すると、パイプラインはそのスキーマを自動的に取得し、宛先がソースと一致するようにします。
オブジェクトを展開して、関連フィールドを表示します。使用可能なすべてのデータを抽出するにはすべてのフィールドを選択したままにし、データ抽出とスキーマレプリケーションから除外するには特定のフィールドの選択を解除します。
任意です。オブジェクトを展開し、各フィールドの処理方法を選択して、フィールドレベルのデータ保護を設定します。
- そのまま複製: ソースのデータ値が宛先に同一に複製されます。
- ハッシュ: 宛先に同期する前に、フィールド内の機密データ値をハッシュ化します。
Workatoでは、個人を特定できる情報(PII)やその他の機密フィールドをハッシュ化することを推奨します。 PIIが一般的に含まれるフィールドのリストについては、機密データの処理を参照してください。
さらにオブジェクトを追加するには、もう一度オブジェクトを追加をクリックします。この手順を繰り返して、追加のSlackオブジェクトをパイプラインに含めます。
ルックバックウィンドウフィールドに日数を入力します。 Workatoは、初回同期後に行われた編集を取得するため、増分同期の実行ごとに、このウィンドウ内に作成されたメッセージ、スレッド、リアクション、メッセージ添付ファイル、メッセージファイルを再確認します。デフォルトの3日のままにするか、0~30の値を設定します。再確認を無効にするには、このフィールドを0に設定します。
このウィンドウ外のメッセージに対する編集は、影響を受けるオブジェクトの完全同期を実行するまで取得されません。削除は、このウィンドウに関係なく取得されません。詳細については、制限事項を参照してください。
ダイレクトメッセージとグループダイレクトメッセージを含めるドロップダウンメニューを使用して、チャンネルに加えてダイレクトメッセージとグループダイレクトメッセージを同期するかどうかを選択します。これには、コネクションに対応するimとmpimの検出スコープおよび履歴スコープが必要です。詳細については、推奨権限を参照してください。
アーカイブ済みチャンネルを含めるドロップダウンメニューを使用して、次回の完全同期にアーカイブ済みチャンネルを含めるかどうかを選択します。
任意です。同期するチャンネルフィールドを使用して、同期する特定のチャンネルを選択します。コネクションがアクセスできるすべてのチャンネルを同期するには、このフィールドを空白のままにします。アーカイブ済みチャンネルは、アーカイブ済みチャンネルを含めるも有効にしている場合にのみ含まれます。
スキーマ変更の処理方法を選択ドロップダウンメニューを使用して、スキーマドリフトの処理オプションを選択します。
- 新しいフィールドを自動同期: ソースに追加された新しいフィールドを自動的に検出して同期します。
- 新しいフィールドをブロック: パイプラインの開始後、スキーマを固定します。新しいフィールドは手動で追加する必要があります。
任意です。同時実行制限フィールドに値を入力して、同時実行操作数の上限を設定します。 Workatoが設定したデフォルトの制限を使用するには、このフィールドを空白のままにします。ここに入力した値に関係なく、SlackパイプラインはSlackのメソッドごとのレート制限を超えないように、オブジェクト同期を一度に1つずつ実行します。
標準の時間ベースのスケジュールを選択するか、Frequencyフィールドでカスタムcron式を定義します。これにより、パイプラインがSlackから送信先にデータを同期する頻度が決まります。
サポートされるオブジェクト
Slackデータパイプラインは、Slack Web APIからデータを同期します。次の表は、サポートされているオブジェクトをカテゴリ別に示しています。各オブジェクトは、宛先内の個別のテーブルとして同期されます。 team、user_groups、files、pins、およびbookmarksにはCustom OAuth profileが必要です。詳細については、推奨権限を参照してください。
チャンネルとメンバーシップ
| オブジェクト | 同期モード | 削除追跡 | メモ |
|---|---|---|---|
channels | Full sync | はい(宛先で推定) | 該当なし |
channel_members | Full sync | はい(宛先で推定) | 親channelsオブジェクトと同期 |
メッセージとメッセージコンテンツ
| オブジェクト | 同期モード | 削除追跡 | メモ |
|---|---|---|---|
messages | 増分 | いいえ | 該当なし |
threads | 増分 | いいえ | 親messagesオブジェクトと同期 |
reactions | 増分 | いいえ | 親messagesオブジェクトと同期 |
message_attachments | 増分 | いいえ | 親messagesオブジェクトと同期 |
message_files | 増分 | いいえ | 親messagesオブジェクトと同期します。ファイルメタデータのみを含み、トップレベルのfilesオブジェクトとは区別されます |
ファイル、ピン、ブックマーク
| オブジェクト | 同期モード | 削除追跡 | メモ |
|---|---|---|---|
files | Full sync | はい(宛先で推定) | 該当なし |
pins | Full sync | はい(宛先で推定) | 親channelsオブジェクトと同期 |
bookmarks | Full sync | はい(宛先で推定) | 親channelsオブジェクトと同期 |
ワークスペースとユーザー
| オブジェクト | 同期モード | 削除追跡 | メモ |
|---|---|---|---|
ユーザー | Full sync | はい(ソフト) | 該当なし |
team | Full sync | いいえ | ワークスペースの単一レコード |
user_groups | Full sync | はい(ソフト) | 該当なし |
同期モード
Slackデータパイプラインは、完全同期と増分同期をサポートします。各オブジェクトは、Slackがそのオブジェクト用の増分カーソルを公開しているかどうかに応じて、いずれか一方または両方のモードをサポートします。
フル同期
完全同期では、選択したオブジェクトについてSlackから使用可能なすべてのレコードを読み取り、実行ごとに送信先テーブルを上書きします。次のオブジェクトはデフォルトで完全同期されます。
channelschannel_membersfilespinsbookmarksユーザーteamuser_groups
増分同期
増分同期では、メッセージタイムスタンプ(ts)をカーソルとして使用し、前回の実行以降の新しいレコードのみを読み取ります。 Slackは変更以降フィルターを公開していないため、各実行では、最近の編集を検出するために、設定されたルックバックウィンドウ内のメッセージも再確認します。このウィンドウの設定についてはパイプラインの設定を、その範囲外になる内容については制限を参照してください。次のオブジェクトはデフォルトで増分同期されます。
messagesthreadsreactionsmessage_attachmentsmessage_files
削除追跡
削除追跡はオブジェクトごとに行われ、同期モードに従います。完全同期オブジェクトは、Workatoが各実行を前回の実行と比較するため、削除を反映します。増分オブジェクトは、比較対象となる2つ目の完全スナップショットがないため、削除を反映しません。
channels:アーカイブ済みチャンネルを含めるを有効にすると、ネイティブのis_archivedフィールドを使用します。それ以外の場合、アーカイブ済みチャンネルは送信先から除外されます(送信先推定)。users:ネイティブのdeletedフィールドを使用して、ユーザーを削除するのではなく、そのフィールドがtrueに設定された非アクティブ化ユーザーを保持します。user_groups:Slackのdate_deleteフィールドから派生した_workato_is_deleted列を使用します。channel_members、files、pins、bookmarks:Slackからのネイティブシグナルはありません。 Slackに表示されなくなったレコードは、これらのオブジェクトが毎回完全同期されるため、次回の同期時に送信先から除外されます(送信先推定)。messages、threads、reactions、message_attachments、message_files:なし。これらは増分同期され、Slackは削除シグナルを提供しません。削除されたメッセージは、影響を受けるオブジェクトの完全同期を実行するまで、送信先に残ります。
スキーマとデータ型の処理
Slackからデータを同期する場合、スキーマとデータ型には次の考慮事項が適用されます。
メッセージタイムスタンプ
Slackメッセージタイムスタンプ(ts)はマイクロ秒精度を持ち、チャンネル内の各メッセージの一意の識別子としても機能します。例:1512085950.000216。 Workatoは、この精度を保持するために、tsを数値ではなく文字列として保存します。
メッセージメタデータとブロック
messagesとthreadsには、メッセージに添付されたアプリ定義の構造化データ用に、metadata.event_type列とmetadata.event_payload列が含まれます。 Workatoは、metadata.event_payloadの形状が添付元のアプリによって定義されるため、JSON文字列として保存します。
messagesとthreadsには、SlackのBlock Kitレイアウトデータ用のblocks列も含まれます。 Workatoは、Slackがブロックコンテンツの固定スキーマにコミットしていないため、blocksを固定された列セットではなくJSON文字列として保存します。
カスタムプロファイルフィールド
ワークスペース管理者は、部署、従業員ID、マネージャーなど、usersオブジェクトにカスタムプロファイルフィールドを設定できます。ワークスペースに、コネクションがアクセスできるカスタムプロファイルフィールドが少なくとも1つある場合、Workatoはusersにcustom_profile_fields列を追加します。この列には、Slackの内部フィールドIDをキーとして、Slackのフィールド値がJSON文字列として含まれます。
この列にデータを入力するには、ユーザーごとに追加のSlack APIリクエストが1件必要になり、特にユーザー数の多いワークスペースではusersの同期時間が大幅に増加する可能性があります。 usersの同期に予想よりも時間がかかっている場合は、オブジェクトのフィールド選択でcustom_profile_fieldsの選択を解除します。同じ理由で、不要な他の非主キーフィールドも選択解除できます。
フィールドの選択を解除
機密データの処理
Slackオブジェクトには重要なPIIが含まれる可能性があります。次のオブジェクトには、一般的に機密フィールドが含まれます:
| オブジェクト | 機密フィールド | メモ |
|---|---|---|
ユーザー | name、real_name、profile.email、profile.phone、profile.skype、profile.first_name、profile.last_name、profile.display_name、tz、custom_profile_fields | 該当なし |
messages、threads | テキスト | PIIリスクが最も高い。ユーザーが名前、メールアドレス、電話番号、アカウント番号、その他の機密性の高いビジネス情報を共有できる自由テキスト |
files、message_files | name、title、user、url_private | 該当なし |
パイプライン設定中にフィールドレベルのデータ保護でHashオプションを使用し、PIIが宛先に到達する前に保護します。詳細については、パイプラインを構成手順を参照してください。
制限事項
Slackをデータパイプラインソースとして使用する場合、次の制限が適用されます。
自動参加は利用不可
アプリがパブリックチャンネルに自動的に参加できるSlackのchannels:joinスコープには、ボットトークンが必要です。このコネクションタイプはボットトークンをサポートしていないため、このスコープは使用できません。設定前または設定中に、パブリックチャンネルに参加するか、接続されたSlackユーザーを誰かに招待してもらいます。
同期対象は接続ユーザーがアクセスできるチャンネルのみ
Slackは、メッセージ、ピン、ブックマークなどのコンテンツを、接続ユーザーがすでにメンバーであるチャンネルについてのみ返します。プライベートチャンネルに回避策はありません。 Slackの管理者APIは、チャンネルメタデータのみを公開し、コンテンツは公開しません。完全なカバレッジが提供されるのは、接続ユーザーがすでにメンバーであるチャンネル、メンバーとして参加したチャンネル、または個別に参加招待されたチャンネルのみです。
削除されたメッセージは検出されません
Slackは削除されたメッセージを返さず、メッセージが削除されたときのシグナルも提供しません。詳細については、削除追跡を参照してください。
ルックバックウィンドウ外の編集は取得されません
各増分実行では、設定されたルックバックウィンドウ内に作成されたメッセージのみを再確認します(デフォルトは3日、0から30まで設定可能)。このウィンドウより古いメッセージに対する編集は、影響を受けるオブジェクトの完全同期を実行するまで取得されません。
バイナリファイルコンテンツは同期されません
filesとmessage_filesは、名前、タイプ、サイズ、URLなどのファイルメタデータを同期しますが、ファイルのバイナリコンテンツは同期しません。
データリテンション設定により履歴の利用可能性が制限されます
ワークスペースの保持ポリシーに基づいてSlackがすでに削除したメッセージは、ルックバックウィンドウまたは初回開始時に、このパイプラインでレコードの取得を開始する日付の設定に関係なく、永続的に利用できず、同期できません。
各コネクションは単一のワークスペースを対象とします
Slackコネクションは、Custom OAuth profileの有無にかかわらず、単一のSlackワークスペースにスコープ設定されます。複数のワークスペースでSlack Enterprise Gridを使用する場合は、同期するワークスペースごとに個別のコネクション、個別のCustom OAuth profile、Slackアプリを作成します。
最小同期頻度
サポートされる最小同期間隔は15分です。
最終更新日: