カスタムアクション
Workatoがすでにサポートしているコネクター用のアクションを作成しますか。 カスタムアクションを使用すると、HTTPユニバーサルコネクターまたはSDK経由でゼロから作成する代わりに、既存のコネクターフレームワークを使用して新しいアクションを作成できます。 カスタムアクションを使用すると、アクションのリクエストとレスポンスの形式をWorkatoに指定することで、アクションを簡単に作成できます。 これはAPIドキュメントから取得できます。
カスタムアクションの作成は、HTTPコネクター経由でアクションを作成する方法を高速化したものです。カスタムアクションは、コネクターの既存の認可フレームワークを利用し、そのアプリのAPIをすでに理解しているためです。
カスタムアクションのアプリサポート
Workato上のほとんどのアプリはカスタムアクションをサポートしています。 カスタムアクションは、コネクターのアクションピックリストにあります。
カスタムアクションの選択
カスタムアクションには、使用可能なスコープが一覧表示されます。 通常、読み取りまたは書き込みができるのは、スコープを持つオブジェクトのみです。 たとえば、Slackコネクターでカスタムアクションを選択すると、含まれるスコープが次のものだけであることがわかります。
channels:read, channels:write, chat:write:bot, chat:write:user, groups:read, groups:write,
users:read, users:read.email
カスタムアクションで使用可能なアプリスコープ
追加のスコープが必要なアクションを作成すると、そのアクションがAPIでリクエストを実行しようとしたときにエラーが発生します。 たとえば、Slackでリマインダー作成アクションを作成しようとすると、reminders:write権限がないため、このエラーが返されます。
呼び出し時にAPIから返されたスコープエラー
Workato上のコネクターにカスタムアクションまたは追加のスコープを追加したい場合は、Customer Success Representativeに連絡して機能拡張リクエストを提出してください。
カスタムアクションの入力フィールド
このセクションでは、カスタムアクションの設定入力フィールドについて詳しく説明します。
| 入力フィールド | 説明 |
|---|---|
| アクション名 | カスタムアクションの名前を指定します。 この名前はアクションタイトルとして表示されます。 |
| リクエストタイプ | 呼び出すAPIエンドポイントのHTTPメソッドを指定します。 |
| パス | ベースURIに追加する相対URIを指定します。 デフォルトパスを上書きする予定がない限り、先頭に/を付けないでください。 たとえば、SlackのベースURIはhttps://slack.com/api/です。 conversations.listを入力すると、リクエストはhttps://slack.com/api/conversations.listに送信されます。一方、/conversations.listはhttps://slack.com/conversations.listに送信されます。 古いAPIバージョンなど、別のベースパスを使用する場合は、/プレフィックスを追加します。 |
URLパラメーター(GETおよびDELETEの場合) | APIリクエストでGETまたはDELETEを使用する場合は、URLパラメーターを指定します。 これらは送信前にURLエンコードされます。 |
入力(POST、PUT、およびPATCHの場合) | APIリクエストでPOST、PUT、またはPATCHを使用する場合は、JSONリクエスト本文を指定します。 |
| 出力 | APIが返すことを想定している出力スキーマをWorkatoに記述します。 これは出力データツリーの生成に使用されます。 |
カスタムアクションの例: Slackのlist conversationsアクションの作成
この例では、パブリックチャンネル、プライベートチャンネル、ダイレクトメッセージなど、チャンネルに似たオブジェクトである会話を一覧表示するカスタムSlackアクションを作成する方法を示します。 詳細については、Slack APIドキュメントを参照してください。
Slackアクションとしてカスタムアクションを選択します。
Slackカスタムアクションを選択
アクション名フィールドに、List conversationsなどのアクション名を入力します。 これにより、レシピエディター内のアクションタイトルが変更されます。
カスタムアクションの命名
呼び出すAPIエンドポイントに基づいて、リクエストのHTTPメソッドを選択します。 Slackのlist.conversationsエンドポイントはGETメソッドを使用します。
list conversationsに関するSlackのAPIドキュメント
該当するHTTPメソッドを選択すると、該当する入力フィールドが表示されます。
HTTPメソッドを選択すると追加フィールドが表示される
Pathフィールドにconversations.listまたはhttps://slack.com/api/conversations.listを入力します。
list conversations用URLエンドポイントの追加
Request URL parametersフィールドで、リクエストにURLパラメーターを追加します。 このAPIエンドポイントには、認証トークン以外に必須の引数はありません。認証トークンは、確立済みのSlackコネクションを通じてWorkatoが処理します。
list conversationsエンドポイントの引数に関するSlack APIドキュメント
アーカイブ済みの会話を除外し、返される会話の数を制限するには、次のパラメーターを定義します。
exclude_archived: データ型としてブール値を選択します。limit: データ型として整数を選択します。
カスタムアクションのURLパラメーターの追加
パラメーターを定義したら、それらの値を指定します。 この例では、値はexclude_archivedにtrue、limitに20としてハードコードされていますが、変数を渡す予定がある場合は、これらをデータピルに置き換えることができます。
パラメーター値の入力
最後にもう1つ、出力スキーマを指定する必要があります。 これは通常、APIドキュメントからコピーしてWorkatoに貼り付けることができます。 Slack APIドキュメントからコピーしたJSONレスポンスを次に示します。
{
"ok": true,
"channels": [
{
"id": "C012AB3CD",
"name": "general",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1449252889,
"creator": "U012A3CDE",
"is_archived": false,
"is_general": true,
"unlinked": 0,
"name_normalized": "general",
"is_shared": false,
"is_ext_shared": false,
"is_org_shared": false,
"pending_shared": [],
"is_pending_ext_shared": false,
"is_member": true,
"is_private": false,
"is_mpim": false,
"updated": 1678229664302,
"topic": {
"value": "Company-wide announcements and work-based matters",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "This channel is for team-wide communication and announcements. All team members are in this channel.",
"creator": "",
"last_set": 0
},
"previous_names": [],
"num_members": 4
},
{
"id": "C061EG9T2",
"name": "random",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1449252889,
"creator": "U061F7AUR",
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "random",
"is_shared": false,
"is_ext_shared": false,
"is_org_shared": false,
"pending_shared": [],
"is_pending_ext_shared": false,
"is_member": true,
"is_private": false,
"is_mpim": false,
"updated": 1678229664302,
"topic": {
"value": "Non-work banter and water cooler conversation",
"creator": "",
"last_set": 0
},
"purpose": {
"value": "A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you'd prefer to keep out of more focused work-related channels.",
"creator": "",
"last_set": 0
},
"previous_names": [],
"num_members": 4
}
],
"response_metadata": {
"next_cursor": "dGVhbTpDMDYxRkE1UEI="
}
}これをコピーしてWorkatoに貼り付けると、出力データツリーを生成できます。
APIドキュメントのJSONレスポンスサンプルを使用してWorkatoで出力データツリーを生成
これにより、想定されるレスポンススキーマをWorkatoに伝えます。また、生成されたデータピルは、レシピの後続ステップでデータを他のアプリに移動するために使用できます。
Workatoで生成された出力データツリー
ただし、実際のレスポンスに、このレスポンスサンプルで指定したデータが含まれていない場合、データピルには値が入りません。
カスタムSlackアクションをテストする準備ができました。 スケジューラー by Workatoの新しい定期イベントトリガーを使用し、テストレシピをクリックします。
会話を一覧表示する完成済みのSlackカスタムアクション
レシピをテストした後、アクションに渡された入力を詳細なジョブ履歴で確認できます。
ジョブ履歴: 入力データ
Slack APIによって返された詳細な出力を表示して、API呼び出しが成功したかどうかを確認することもできます。 Okフィールドがtrueの場合、呼び出しは成功しています。
ジョブ履歴: 返された会話データを示す出力
Last updated: