# Slack
Slack (opens new window) は、チームのコミュニケーションとリソースを一元化するチームコラボレーションプラットフォームです。
Workato を使用すると、組織全体で使用しているエンタープライズアプリや生産性アプリと Slack とを接続することができます。Slack のワークスペースを離れることなく、チームの会話をそうしたアプリの自動タスクに変換できます。
# Slack コネクターと Workbot for Slack コネクターの比較
Workato は、Slack コネクターと Workbot for Slack コネクターの両方をサポートしています。
Slack 管理者 (または管理チームの一員) がワークフローをワークスペースレベルで自動化する必要がある場合には、Slack コネクターを利用するとよいでしょう。Slack コネクターを使用すると、ワークスペースレベルのイベントを購読したり、チャンネルやグループなどを管理したりできます。たとえば、Jira のチケットエスカレーションをトリガーとして、Slack のプライベートチャンネル (典型的な例はカスタマーサクセス担当者と顧客が参加するもの) の作成、命名、目的設定、招待を自動化することができます。
Workbot for Slack を使用すると、Slack の Block Kit を使って、Slack のあらゆる UI サーフェス (メッセージ、モーダル、アプリホーム) 上に複雑なチャットインタラクションを設計することができます。Workbot では、ボタン、選択メニュー、ラジオボタン、日付選択のカレンダー、チェックボックスといったインタラクティブな要素を完全に制御することが可能で、リッチでインタラクティブなチャットフローを構築することができます。Workbot コマンド を使うと、ボットのメッセージ、モーダル、アプリホーム、ショートカット、スラッシュコマンドをスムーズに連鎖させることができます。動的に表示されるメニューやボタン、ブロックも Workbot を使うと簡単に構築できます。
自分のチーム用のバーチャルアシスタントを作成したいと考えていて、それが複数のステップを含む承認ワークフローのような複雑なタスクを実行でき、動的なメニューやインタラクティブな要素を表示するものであるなら、Workbot を使用するとよいでしょう。
Slack コネクターと Workbot for Slack コネクターの機能を比較した表は、こちら から参照できます。
# API バージョン
Slack コネクターは Slack Web API (opens new window) を使用します。API のエンドポイント URL は https://slack.com/api/METHOD
です。
# サポートされるエディションとバージョン
Workato は Slack for Teams (単一のワークスペースに対応) と Slack Enterprise Grid (複数のワークスペースに対応) の両方に接続できます。
# Workato での Slack への接続方法
Workato に、OAuth 2.0規格を通じて自社の Slack オーガナイゼーションにアクセスする権限を与えてください。そのためには Slack にログインし、Workato が要求する権限を承認する必要があります。
Slack コネクションの設定
# Slack コネクターの使用
# Post message (メッセージ投稿) アクションの使用
Post message アクションは、チャンネルへのメッセージ投稿や、Slack ユーザーへのダイレクトメッセージの投稿に使用できます。デフォルトでは、そのメッセージは認証されたユーザーとしての投稿になります。
# Attachment 付きのメッセージの例
下の画面は、さまざまな入力項目が Slack でどのように表示されるかの例です。入力項目 Post message as と Icon image URL が設定されていないため、このメッセージは Workato アプリによる投稿として表示されています。
Attachment 付きの Post message アクションの基本的な例
このアクションステップに対応する設定は以下の通りです。また、 メッセージタイプ は Good に設定されています。
Post message アクションの設定 -Attachment 付きのメッセージ サンプルレシピ (opens new window)
# Slack のメッセージボタンの使用
ユーザーは、Slack のボタン (opens new window) を通じて Slack のメッセージと対話することができます。Slack のボタンを使用するには、以下のものが必要になります。
ボタンを設定済みの Post message アクションを使ったレシピ。このレシピのボタン設定に関しては、特に以下の2番目のレシピを参考にする必要があります。
ボタンアクションハンドラーレシピ - 新規ボタンアクション トリガーを使ってボタンクリックを取得するレシピ。その一連のアクションには、どのボタンがクリックされたかに応じてアクションを実行するレシピロジックが必要です。
インタラクティブな Slack ボタンのレシピを作成するには、IF 条件を使う 方法と、 ボタンへの応答 Slack アクション を使う方法の2通りがあります。
# IF 条件を使った、インタラクティブな Slack ボタンのレシピの作成
IF 条件付きのレシピステップで構築したレシピの使用例としては、チーム内の投票など、ボタンが複数回クリックされても問題ないシナリオが挙げられます。
# サンプルレシピ 1A: ボタンを設定済みの Post message アクションを使ったレシピ
上述 の 基本レシピ (opens new window) に、ボタンの設定を追加していきます。ここで使用するレシピは、こちら (opens new window) に掲載されています。
このレシピで設定したボタンは、Slack 内で以下のように表示されます。
上の設定から生成された、対応するボタン
# ボタンのスタイル: danger と non-danger
ボタンに利用できるスタイルには、non-danger と danger という2種類があります。non-danger スタイルのボタンは一度クリックされると、そのボタンクリックを即座に記録し、 新規ボタンアクション トリガーを使って2番目のレシピをトリガーします。
non-danger スタイルのボタンとのインタラクション
danger スタイルのボタンはクリックされると、Slack ユーザーにそのクリックの確認を求めるポップアッププロンプトを生成します。
danger スタイルのボタンとのインタラクション
ポップアップするプロンプトのあらゆる設定は、 Post message Slack アクションのボタン設定から行えます。
ポップアッププロンプト
# ボタンの定義
双方のボタンスタイルのボタン設定は、以下のスクリーンショットのように行います。そこでは、事前に作成したレシピである 「New Salesforce account button response recipe - Notify BizDev & Notify Sales (新規 Salesforce アカウントボタン応答レシピ - 事業開発部と営業部に通知) (opens new window)」 を呼び出しています。このピックリストには、 新規ボタンアクション Slack トリガーを持つレシピすべてが表示されます。ここで設定しているボタンに応答する目的で作成したレシピを選択してください。
Post message アクションステップのボタン設定
このレシピで使用したボタン設定は以下の通りです。non-danger スタイルのアクションの場合はポップアッププロンプトが生成されないため、入力する必要があるのは最初の2つのパラメータのみです。danger スタイルのアクションの場合は、7つのパラメータすべてを入力する必要があります。
Notify BizDev, bd, , , , ,
Notify Sales, sales, danger, Confirm, Are you sure?, Yes, Cancel
上記のボタン設定は、以下のようなボタンアクションの書式に従っています。
action name, action ID, style, confirmation title, confirmation text, ok button title, dismiss button title
ボタン定義の各項目についての詳しい説明は以下のとおりです。
ボタン定義の入力項目 | 説明 |
---|---|
アクション名 | ボタンを操作する Slack ユーザーに向けて表示されるボタンラベル。 |
アクション ID | ボタンの内部値。これは一意である必要があります。Slack 上ではどのユーザーに対しても表示されません。 |
スタイル |
non-danger スタイルのアクションの場合は、ポップアップを生成することがないため、この項目と残りの4つ項目は空白のままにしてください。 そうでない場合は、danger と入力することで赤いボタンを生成し、それに伴うポップアッププロンプトでユーザーにボタンクリックの確認を要求することができます。その場合は、残りのフィールドも入力する必要があります。 |
確認タイトル | ポップアッププロンプトのヘッダーとして表示されます。 |
確認テキスト | ポップアッププロンプトの本文として表示されます。 |
OK ボタンのタイトル | ポップアッププロンプト内のボタンクリックを確認するボタンのラベル。 |
閉じるボタンのタイトル | ポップアッププロンプト内のボタンクリックをキャンセルするボタンのラベル。 |
# サンプルレシピ 1B: ボタンアクションハンドラーレシピ - 新規ボタンアクショントリガーを使ったレシピ (各ボタンクリック時に実行するアクションを IF 条件ロジックを使用して定義)
以下のレシピは、上で紹介したシナリオを想定して作られています。このレシピは、最初の Salesforce アカウント通知メッセージの下に、どのボタンがクリックされたかに応じて異なるメッセージをスレッドとして投稿します。IF 条件を使う方法は、 ボタンへの応答 Slack アクションを使うよりも高い汎用性を持っています。これは IF 条件の中において、複数のアプリで複数のステップを実行できるためです。
このレシピでは、どのボタンがクリックされたかを確認するために、IF 条件を使ってボタン名をチェックします。ボタン名が "Notify BizDev" にマッチすれば事業開発チームに向けてメッセージを投稿し、"Notify Sales" にマッチすれば営業チームに向けてメッセージを投稿します。
IF 条件を使ったボタン応答サンプルレシピ (opens new window)
# Slack トリガーの出力 - 新規ボタンアクション
IF 条件内で使用されるデータピルは、 新規ボタンアクション Slack トリガーに由来するものです。以下のスクリーンショットには、 新規ボタンアクション Slack トリガーから出力されるデータツリーが示されています。これらのデータピルは、レシピビルダーでレシピアクションを構築する際に使用できる変数となります。
新規ボタントリガーの出力データツリー
次の表では、これらのデータピル変数とその用途について詳しく説明しています。
新規ボタンクリックトリガーの出力データピル | 説明 |
---|---|
Action name | ボタンを操作する Slack ユーザーに向けて表示されるボタンラベル。 |
Action ID | ボタンの内部値。これは一意である必要があります。Slack 上ではどのユーザーに対しても表示されません。 |
Channel | ボタンクリックが発生したチャンネル。チャンネルの内部 Slack ID とチャンネル名の両方を取得できます。 |
User | ボタンをクリックしたユーザー。ユーザーの内部 Slack ID とユーザー名の両方を取得できます。 |
Team | ボタンクリックが発生した Slack チーム。固有のドメインと内部チーム ID の両方を取得できます。 |
Action timestamp | ボタンクリックが発生した時刻 (エポック時間)。 |
Message ID | ボタン付きのメッセージが送信された時刻 (エポック時間)。このメッセージ以下にスレッドを作成する際の入力項目 Thread ID として使用できます。 |
Attachment ID | ボタン付きの最初の Slack メッセージで送信された Attachment の ID (存在する場合)。 |
Response URL | ボタンクリックへの応答のために Workato で使用されます。ボタンへの応答 Slack アクションでも使用されます。 |
これらの値の例はジョブの出力で以下のように確認できます。
ボタンアクションのデータ出力
# ボタンへの応答 Slack アクションを使った、インタラクティブな Slack ボタンのレシピの作成
この方法で作成したレシピの使用例としては、ボタンが一度だけクリックされることが期待されるシナリオが挙げられます。たとえば、休暇や経費の承認に向けた承認ワークフローなどです。
# サンプルレシピ 2A: ボタンを設定済みのメッセージ投稿アクション2つを使ったレシピ
ここで使用するレシピは サンプルレシピ 1A とほぼ同じですが、1つの Post message Slack アクションを2つの別々の Post message アクションに分割している点が異なります。最初のアクションは通知情報 (このケースでは Salesforce アカウントの情報) を投稿し、2番目のアクションはボタンのデータのみを投稿します。ここで使用するレシピは、こちら (opens new window) に掲載されています。
このレシピで設定したボタンは、Slack 内で以下のように表示されます。
別々のアクションを通じて投稿された Salesforce アカウントの情報とボタン
ボタンがクリックされると、それは即座に、事業開発チームか営業チームのいずれかへ通知を行うメッセージに置き換えられます。
これは、 ボタンへの応答 アクションの設定において、入力項目 Replace original? が true としてマークされているためです。このアクションについては、以下のセクションで解説します。この置き換えにより、一度クリックされたボタンが Slack チャンネルから削除されます。そうすることで、ボタンが複数回クリックされることが防止されます。この最初のレシピにおいて通知情報とボタンのデータを2つのアクションに分割している理由が、ここにあります。ボタンだけを新しいメッセージに置き換え、通知情報は置き換えないようにすることが狙いです。
# サンプルレシピ 2B: ボタンアクションハンドラーレシピ - 新規ボタンアクショントリガーを使ったレシピ ( ボタンへの応答 Slack アクションを使用して各ボタンクリックに Slack メッセージで応答)
Slack 上でのインタラクティブなシナリオを構築する方法としては、ほかにも以下のようなレシピが考えられます。前の例と同様、このレシピも、どのボタンがクリックされたかに応じて異なるメッセージをチャンネルに投稿します。このレシピでは、メッセージを即座にチャンネルへ投稿するために、 ボタンへの応答 Slack アクションを使用します。
ボタンへの応答アクションサンプルレシピ (opens new window)
ボタンへの応答 アクションを使用する場合は、 Button response URL (ボタン応答 URL) を渡すだけで、どのボタンがクリックされたかを実行時のレシピに知らせることができます。したがって、どのボタンがクリックされたかをチャンネルに伝える一般的なメッセージを投稿するといったことが求められている場合、このアクションはそれを簡単に処理するのに適しています。
ボタンへの応答アクションの設定
# Slack アクションの入力 - ボタンへの応答アクション
ボタンへの応答 Slack アクションは、 Post message アクションの通常の入力項目に加えて、さらに以下のような入力項目を持っています。
ボタンへの応答アクションの入力項目 | 説明 |
---|---|
Button response URL | これは新規ボタンアクション Slack トリガーの出力データツリーから入力してください。この入力項目は、どのボタンクリックに反応すべきかをこのアクションに指示します。 |
Response type | In channel に設定すると、通常のチャットメッセージのようにメッセージを投稿します。Ephemeral に設定すると、グレー表示のテキストでメッセージを投稿します。 |
Replace original | yes の場合、新しいメッセージが元のメッセージをボタンで上書きし、チャンネル内の同じ位置に投稿されます。
no の場合、ボタン付きの元のメッセージがチャンネル内の同じ位置に残ります。新しいメッセージはチャンネルの会話の末尾に追加されます。 |
Delete original | yes の場合、ボタン付きの元のメッセージはチャンネルから削除されます。新しいメッセージはチャンネルの会話の末尾に追加されます。
no の場合、ボタン付きの元のメッセージはチャンネル内の同じ位置に残ります。新しいメッセージはチャンネルの会話の末尾に追加されます。 |
# Slack のスレッドの使用
Slack のスレッド (opens new window) を使用すると、複数の関連するメッセージを一括りにすることができ、Slack のチャンネルやグループでの会話を簡単に追えるようになります。Slack のスレッドは、以下のいずれかの方法で使用できます。
- あるメッセージ ID に返信してスレッドを開始することで、会話を継続する
- 親メッセージ ID (スレッドの最初のメッセージ) に返信することで、会話を継続する
- スレッド ID に返信することで、既存のスレッドを継続する
スレッドを開始または継続するには、入力項目 Thread ID にメッセージ ID、親メッセージ ID、またはスレッド ID を指定する必要があります。
# サンプルレシピ1: メッセージ ID に返信してスレッドを開始するレシピ
上で紹介した、ボタンクリックに応答するサンプルレシピ をもう一度見てみましょう。
ボタン応答の サンプルレシピ (opens new window)
Slack ユーザーが [Notify BizDev] ボタンをクリックすると、元のメッセージの下に投稿が行われ、新しいスレッドが作成されることが確認できます。
Slack ユーザーが [Notify BizDev] ボタンをクリックすると、スレッドが作成され、メッセージが投稿される
このレシピの設定は次のとおりです。入力項目 Thread ID には、元の Slack メッセージのメッセージ ID を渡しています。現時点でこのメッセージにはスレッドがないため、新しいスレッドが作成されます。
ビジネス開発部への通知アクションのアクション設定。入力項目 Thread ID にはメッセージ ID が使用されている。
同様に、Slack ユーザーが [Notify Sales] ボタンをクリックすると、元のメッセージの下に投稿が行われ、新しいスレッドが作成されることが確認できます。
Slack ユーザーが [Notify Sales] ボタンをクリックすると、スレッドが作成され、メッセージが投稿される
このレシピの設定は次のとおりです。入力項目 Thread ID には、元の Slack メッセージのメッセージ ID を渡しています。現時点でこのメッセージにはスレッドがないため、新しいスレッドが作成されます。
営業部への通知アクションのアクション設定。入力項目 Thread ID にはメッセージ ID が使用されている。
# サンプルレシピ2: 親メッセージ ID に返信してスレッドを継続するレシピ
上記 と 同じレシピ (opens new window) を使用し、親メッセージ ID を入力することでも、既存のスレッドに投稿することが可能です。
ボタン応答の [サンプルレシピ] (opens new window)
たとえば、[Notify BizDev] ボタンの2回目の選択が行われると、同じスレッドへの投稿が実行されます。
親メッセージ ID を通じて同じスレッドの下にメッセージが投稿される
アクションのスレッド設定に戻ると、入力項目 Thread ID に親メッセージ ID が指定されていることが分かります。これは、スレッドの上部にある最初のメッセージです。
ビジネス開発部への通知アクションのアクション設定。入力項目 Thread ID にはメッセージ ID が使用されている。
Last updated: 2023/8/31 1:07:14