はじめに
SlackにはSlackワークフローという、簡易的なワークフロー機能があります。この機能を利用すると、Slackで利用可能なワークフローを追加のツールを必要とすることなく、ノーコードで実装することができます。
また、Slackワークフローでは、ワークフローのステップごとに「ワークフローステップ(コネクタステップ)」を定義することができます。ワークフローステップはSlack上でのフォームの提供や、チャンネルへのメッセージ送信だけでなく、サードパーティのサービスでアクションを実行するステップを追加することも可能です。
そして、ワークフローステップは事前に用意されたサービスだけでなく、ユーザー側でカスタムアプリ(カスタムステップ)として作成することも可能です。これにより、デフォルトで提供されているワークフローステップ以外のサービスをSlackワークフロー上から利用することができ、Slackワークフローの活用の幅が広がります。
WorkatoでSlackワークフローのカスタムステップを実装する
WorkatoでSlackワークフローのカスタムステップを実装するメリット
WorkatoでSlackワークフローのカスタムステップを実装するメリットとして、iPaaSとしてのWorkatoならではの様々なアプリへの対応、様々な連携への対応が挙げられます。
例えば、自社で利用するアプリが標準のワークフローステップに用意されていない、あるいはアプリは用意されているが機能が不足しているといった場合、Workatoを利用してそれら不足している機能を補完することができます。
また、ノーコード/ローコードで実装でき、かつ運用・管理もサーバーレスである点は、カスタムステップの開発・運用にかかる負荷低減も期待できます。
実装における課題
Slackワークフローのカスタムステップは、BoltフレームワークやDeno Slack SDKを利用した開発が一般的です。当然のことながら、SlackにはWorkatoでSlackワークフローのカスタムステップを実装する標準的な方法は提供されていません。
また、BoltフレームワークやDeno Slack SDK以外によるカスタムステップの実装方法についても、ドキュメント上に明確な記述がありません(ドキュメント上のサンプルはBoltフレームワークやDeno Slack SDKがベースとなっており、フレームワークやSDKを使用しない、あるいは他の言語を対象としたサンプルは存在しません)。
このため、Slackワークフローのカスタムステップの実装にはBoltフレームワークやDeno Slack SDKの利用が必須であり、それら以外の実装手段は存在しないように感じられるかもしれません。
WorkatoでSlackワークフローのカスタムステップは実装できるのか
結論から先に伝えますと、WorkatoでSlackワークフローのカスタムステップは実装できます。(そもそも、Workatoでできなければこの記事は書いていません)
SlackワークフローステップのカスタムステップはSlack Web APIおよびSlack Event APIによって成立している機能であり、Slackの各APIの仕様を理解していれば、任意の手段でカスタムステップを実装することが可能です。ですので、Workatoでもカスタムステップの実装ももちろん可能です。
具体的にどのように実装するのか
以下は、Slackワークフローにおけるカスタムステップの一連の処理をシーケンス図に起こしたものです。
Slackのドキュメントには、BoltフレームワークあるいはDeno Slack SDKによる実装例しかサンプルとして無く、実装難易度は高いのかな?と思われる方もいるのではないかと思いますが、やることは非常にシンプルです。
Slackワークフローでカスタムステップが呼び出されると、Slackでは function_executed イベントが発生します。またWorkatoでは、そのイベントをトリガーにレシピを実行することができます。
なお、Slackワークフローはカスタムステップの処理が完了するまで待機状態となるため、WorkatoからSlackに対しては function.completeSuccess または function.completeErrorメソッドを利用してSlackへ処理結果を返却する必要があります。
以上の内容が理解できれば、WorkatoでSlackワークフローのカスタムステップを実装することが可能です。もちろん、ノーコード/ローコードでの実装が可能です。
次からは、WorkatoによるSlackワークフローステップのカスタムステップの実装方法について説明を行います。
手順
【1】Enterprise Workbotを作成する
1. 以下のURLの手順をもとに、Enterprise Workbotを作成します。
手順に沿って、必要な設定を進めてください。
2. Workbot for Slackコネクションを作成します。
1)ワークスペース画面上で[Create] - [Connection]をクリックします。
2)「Workbot for Slack」を選択します。
3)Connection name(任意の名称)とCustom OAuth Profile(手順1で設定したEnterprise WorkbotのCustom OAuth profileを選択)し、[Connect]をクリックします。
4)Slackアプリ認可画面が表示されます(リダイレクトされます)ので、内容確認のうえ[許可する]をクリックします。
5)Workatoへ戻り、「Connected」となったことを確認します。
【2】カスタムステップの利用準備を行う
1. Slack APIのYour Apps を開き、1で作成したSlackアプリを選択します。
2. [Event Subscription]をクリックします。
3. Request URLの [Retry] をクリックします。
以下の手順は「Your URL didn't respond.」表示されている場合のみ対応します
「Verified」の場合は対応不要のため、次の手順に進みます
4. [Org Level Apps]をクリックします。
5. [Enable org-readiness]を有効化します。
6. [Workflow Steps]をクリックします。
7. 赤枠で示した[Update settings]をそれぞれクリックします。
【3】カスタムステップの利用準備を行う
1. [Add Step]をクリックします。
2. Callback IDとTitle of stepを入力します。
Callback IDは、カスタムステップのアクションごとに割り当てる一意のIDです。この値は、当該アクションが実行された際、入力値と合わせてWorkatoのトリガーに渡されます。
Title of stepは、アクションのタイトル(ラベル)です。
3. [Input Parameters]をクリックし、[Add an input]をクリックします。
[Add an input]をクリックすることで、パラメータを追加する(複数のパラメータを定義する)ことが可能です。
4. Input type(入力パラメータの型)とParameter ID(入力パラメータのキー)をそれぞれ設定します。
5. [Output Parameters]をクリックし、[Add an output]をクリックします。
6. Input type(入力パラメータの型)とParameter ID(入力パラメータのキー)をそれぞれ設定します。
[Add an output]をクリックすることで、パラメータを追加する(複数のパラメータを定義する)ことが可能です。
7. [Create]をクリックします。
8. アクションが追加されたことを確認します。
【4】Slackアプリをインストールする
1. [Install App]をクリックします。
2. [Install to <ワークスペース名 / Org名>]をクリックし、ワークスペースまたはOrgへアプリをインストールします。
既にアプリがインストール済みの場合は、[Renstall to <ワークスペース名 / Org名>]をクリックします。
【5】Slackワークフローにカスタムステップが追加されたことを確認する
1. Slackワークフローを開き、[新規]をクリックし、ワークフローの構築を開始します。
2. [ステップを追加する]をクリックします。
3. カスタムステップとアクションが追加されたことを確認します。
4. アクションをクリックし、Input Parameters で定義したフィールドが表示されることを確認します。
【6】Workatoレシピを作成する
サンプルとして、Slackワークフローから値が渡されたら、 Hello, <入力値>を返すレシピを作成します。
1. ワークスペース画面上で[Create] - [Recipe]をクリックし、レシピ作成を開始します。
2. トリガーに「Workbot for Slack」を選択します。
3. [New event]を選択します。
4. Event nameを「Enter custom value」に切り替え、 function_executed と入力します。
5. Event schemaの[Use a sample JSON]をクリックします。
6. JSON sample に以下のJSONをコピー&ペーストし、[Next]をクリックします。
inputs は、Slackアプリのカスタムステップの「Input Parameters」へ追加したパラメータに合わせて定義します。
例えば、value1, value2というキー(フィールド)を追加した場合は、次のようになります。
"inputs": {
"value1": "value",
"value2": "value"
}
{
"type": "value",
"function": {
"id": "value",
"callback_id": "value",
"title": "value",
"description": "value",
"type": "value",
"input_parameters": [
{
"type": "value",
"name": "value",
"title": "value"
}
],
"output_parameters": [
{
"type": "value",
"name": "value",
"title": "value"
}
],
"product_level_availability": {
"is_available": true,
"available_to": "value"
},
"category_id": "value",
"category_label": "value",
"app_id": "value",
"date_created": 0,
"date_released": 0,
"date_updated": 0,
"date_deleted": 0,
"form_enabled": false
},
"inputs": {
"value": "value"
},
"function_execution_id": "value",
"workflow_execution_id": "value",
"event_ts": "value",
"bot_access_token": "value"
}
7. [Generate schema]をクリックします。
8. アクションに「Workbot for slack」を選択します。
9. [Custom action]を選択します。
10. [Setup manually]をクリックします。
11. 赤枠の項目について、以下の通り設定します。
ここでパスに設定した functions.completeSuccess メソッドの詳細は以下のURLを参照ください。
Method: POST
Path: functions.completeSuccess
Request type: JSON request body
Response type: JSON response
12. スクロールし、inputの[Use JSON]をクリックします。
13. JSON sample に以下のJSONをコピー&ペーストし、[Next]をクリックします。
outputs は、Slackアプリのカスタムステップの「Output Parameters」へ追加したパラメータに合わせて定義します。
例えば、value1, value2というキー(フィールド)を追加した場合は、次のようになります。
"outputs": {
"value1": "value",
"value2": "value"
}
{
"function_execution_id": "value",
"outputs": {
"result": "value"
}
}
14. [Generate schema]をクリックします。
15. Response bodyの[Add fields manually]をクリックします。
16. 以下の設定を行い、[Add field]をクリックします。
※以下に示す項目以外の設定は不要です。
Name: ok
Data type: boolean
17. 「Handle errors」を追加します。
18. 2ステップ目のアクションを、MONITORブロック内へ移動します。
19. 不要なステップを削除します。
※以下は不要なステップを削除した後の結果です。
20. DO NOT RETRYブロック内に「Workbot for Slack」を追加します。
21. [Custom action]をクリックします。
22. [Setup manually]をクリックします。
23. 赤枠の項目について、以下の通り設定します。
ここでパスに設定した functions.completeError メソッドの詳細は以下のURLを参照ください。
https://docs.slack.dev/reference/methods/functions.completeerror
Method: POST
Path: functions.completeError
Request type: JSON request body
Response type: JSON response
24. スクロールし、inputの[Use JSON]をクリックします。
25. JSON sample に以下のJSONをコピー&ペーストし、[Next]をクリックします。
{
"function_execution_id": "value",
"error": "value"
}
25. [Generate schema]をクリックします。
26. Response bodyの[Add fields manually]をクリックします。
27. 以下の設定を行い、[Add field]をクリックします。
※以下に示す項目以外の設定は不要です。
Name: ok
Data type: boolean
28. Step3をクリックします。
29. InputのData内の各フィールドを、以下の通り設定します。
Outputsのフィールドが画面上に表示されない場合は、一度Outputs内のフィールドを削除し、再設定ください。
Function execution ID: Step1の Function execution ID データピルをセットします。
Result: 「Hello, 」と入力し、その後ろに Step1の Inputs > Value データピルをセットします。
30. Step5をクリックします。
29. InputのData内の各フィールドを、以下の通り設定します。
Function execution ID: Step1の Function execution ID データピルをセットします。
Result: Step4の Error type データピルと Error type データピルをセットします。その間に : (コロン)を入力します。
30. レシピを保存し、スタートします。
【7】Slackワークフローを作成する
次のようなSlackワークフローを作成し、公開します。
Step 1
Step 2
Step 3
【8】Slackワークフローを試す
1. ワークフローのURLをコピーし、ワークフローを利用したいチャンネルに共有します。
2. [ワークフローを開始]をクリックし、ワークフローを開始します。
3. ワークフローの操作を進めます。
4. Workatoのレシピが問題なく実行されれば、以下のようなメッセージが出力されます。
まとめ
今回はWorkatoを利用したSlackワークフローのカスタムステップの実装について説明しました。
Slackワークフローは、Slackを利用している組織にとっては追加のツールを必要とすることなく様々な自動化・効率化を行えるという点で非常に利便性の高いツールですが、SlackワークフローとWorkatoを組み合わせることで、Slackワークフローに高い自由度と拡張性が生まれ、Slackワークフローのさらなる利活用に繋がることが期待できます。
もしSlackとWorkatoを利用されている企業においては、本記事を参考に、WorkatoでSlackワークフローの利活用を進めてみてはいかがでしょうか。



































































