# SDK リファレンス - triggers
このセクションでは、トリガーを定義するときに使用できるすべてのキーを列挙します。Workato で使用できるトリガーには、以下の3種類があります。
- ポーリングトリガー (新しいイベントを5分ごとにチェック)
- 動的 Webhook トリガー (Webhook からのリアルタイムのトリガー。アプリにおいて Webhook URL のサブスクリプションと破棄がプログラム的に可能であることが必要)
- 静的 Webhook トリガー (Webhook からのリアルタイムのトリガー。Webhook URL はエンドユーザーにより Workato からアプリに渡される)
簡単な概要
triggers
キーは、コネクションの作成が正常に済んだ後に、レシピとデバッガーコンソールの両方でのみ使用できます。トリガーはコネクターのエンドユーザーによって設定されて、レシピを開始させます。
# 構造
triggers: {
[Unique_trigger_name]: {
title: String,
subtitle: String,
description: lambda do |input, picklist_label|
String
end,
help: lambda do |input, picklist_label|
Hash
end,
display_priority: Integer,
batch: Boolean,
bulk: Boolean,
deprecated: Boolean,
config_fields: Array
input_fields: lambda do |object_definitions, connection, config_fields|
Array
end,
webhook_key: lambda do |connection, input|
String
end,
webhook_payload_type: String,
webhook_subscribe: lambda do |webhook_url, connection, input, recipe_id|
Hash or Array
end,
webhook_refresh: lambda do |webhook_subscribe_output|
Array
end,
webhook_unsubscribe: lambda do |webhook_subscribe_output, connection|
Hash
end,
webhook_notification: lambda do |input, payload, extended_input_schema, extended_output_schema, headers, params, connection, webhook_subscribe_output|
Hash or Array
end,
poll: lambda do |connection, input, closure|
Hash
end,
dedup: lambda do |record|
String
end,
output_fields: lambda do |object_definitions, connection, config_fields|
Array
end,
sample_output: lambda do |connection, input|
Hash
end,
summarize_input: Array,
summarize_output: Array
},
[Another_unique_trigger_name]: {
...
}
},
# title
属性 | 説明 |
---|---|
キー | title |
型 | String |
必須 | 省略可能。デフォルトではラベル付きキーから作成されたタイトルになります。 |
説明 | このキーにより、トリガーのタイトルを定義できます。タイトルは、トリガーに割り当てられているキーの名前と異なっていても構いません - キーは new_updated_object 、タイトルは "New/updated object" のようにできます。 |
期待される出力 | String たとえば "New/updated object" |
UI 参考 |
TIP
Workato では通常、トリガーを「Lead created」ではなく、「New lead」や「New/updated contact」のような「[形容詞] [目的語]」の構造にすることをお勧めしています。
# subtitle
属性 | 説明 |
---|---|
キー | subtitle |
型 | String |
必須 | 省略可能。デフォルトではコネクター名とトリガーのタイトルから推測されるサブタイトルになります。 |
説明 | このキーにより、トリガーのサブタイトルを定義できます。 |
期待される出力 | String たとえば "Use complex queries to search objects in Percolate" |
UI 参考 |
TIP
サブタイトルを有意義なものにするため、タイトルは簡潔にしておき、サブタイトルでより多くの情報を提供するようにしてください。たとえば、タイトルを「New/updated object (新規/更新されたオブジェクト)」とし、サブタイトルを「Trigger off new/updated leads, contacts etc. (新規/更新されたリードや連絡先などで起動するトリガー)」のようにするとよいでしょう。ユーザーが特定のトリガーを検索する場合、Workato はサブタイトルが一致するものも探します。
# description
属性 | 説明 |
---|---|
キー | description |
型 | lambda 関数 |
必須 | 省略可能。デフォルトではコネクター名とトリガーのタイトルから推測される説明になります。 |
説明 | このキーにより、レシピエディターで表示される際のトリガーの説明を定義できます。必要に応じて、静的な説明にも動的な説明にもできます。 |
使用可能な引数 | input - input_fields で定義されたユーザー入力を表すハッシュ picklist_label - ユーザーの回答がピックリストのラベルと値の両方から構成されるピックリストにのみ適用されます。このハッシュは、ピックリスト項目でのユーザー入力のラベルを表します。使用例については以下を参照してください。 |
期待される出力 | String たとえば "New or updated <span class='provider'>campaign</span> in <span class='provider'>Percolate</span>" HTML タグ <span> を追加すると、説明テキストを強調表示できます。 |
UI 参考 |
例 - description:
description
ブロックでは、2つの引数を使用して、説明を動的なものにすることができます。この機能は、個々のユーザーがアクションをどのように設定したかに基づいて説明を変更したい場合に便利です。このような変更は、ユーザーにとって非常に役立ちます。アクションの設定をクリックして表示しなくても、そのアクションの現在の動作がわかるようになるためです。
new_updated_object: {
description: lambda do |input, picklist_label|
"New or updated <span class='provider'>#{picklist_label['object'] || 'object'}</span> in " \
"<span class='provider'>Percolate</span>"
end,
config_fields: [
{
name: 'object',
control_type: 'select',
pick_list: 'object_types',
optional: false
}
]
# More keys to define the action
}
上記の例にあるのは、汎用的なオブジェクトのアクションです。つまり、このアクションはさまざまな型のオブジェクトを作成できるようになっていて、ユーザーは後でレシピを設定するときに、作成するオブジェクトの型を選ぶことができます。これは、作成したい object
(オブジェクト) をユーザーが選択することで達成されます。ユーザーがどのオブジェクトを選択したかに応じて説明を変更するには、引数 picklist_label
を参照して、選択済みのオブジェクトに説明を対応させます。
# help
属性 | 説明 |
---|---|
キー | help |
型 | lambda 関数 |
必須 | 省略可能。定義されていない場合、ヘルプは表示されません。 |
説明 | このトリガーの設定方法についてユーザーをガイドするためのヘルプテキスト。参照するべきドキュメントをユーザーに示すこともできます。 |
使用可能な引数 | input - input_fields で定義されたユーザー入力を表すハッシュ picklist_label - ユーザーの回答がピックリストのラベルと値の両方から構成されるピックリストにのみ適用されます。このハッシュは、ピックリスト項目でのユーザー入力のラベルを表します。使用例については以下を参照してください。connection - connection で定義されたユーザー入力を表すハッシュ。webhook_base_url - これは静的 Webhook トリガーを使用する場合に使います。コネクターの静的 Webhook URL を表す文字列です。 |
期待される出力 | Hash または String 。例については以下を参照してください。 |
UI 参考 |
例 - help:
lambda 関数 help
の出力は、単純な文字列またはハッシュのいずれかです。以下に2つの例を示します。
- 文字列
help: lambda do |input, picklist_label, connection, webhook_base_url|
'Create an object in Percolate. First, select from a list of ' \
'objects that we currently support. After selecting your object,' \
' dynamic input fields specific to your scope and object selected ' \
'will be populated.' \
' Creating an approval denotes submitting a specified piece of content' \
' or campaign for a specific approval workflow.'
end,
- ハッシュ
help: lambda do |input, picklist_label, connection, webhook_base_url|
{
body: "First, filter by the object you want then fill up the input fields " \
"which appear based on the object you have selected. Amongst other things, " \
"you’ll be able to search for contacts in your company and cloud recordings from the past. ",
learn_more_url: "https://docs.workato.com/connectors/zoom/event-actions.html#search-event-details",
learn_more_text: "Learn more"
}
end,
例 - 静的 Webhook トリガー - コネクションと入力を使って一意の Webhook URL を作成
単一のコネクターと静的 Webhook URL を使って、複数のコネクションにまたがる複数のレシピを駆動する必要がある場合、ユーザーには、そのユーザーのコネクションに固有の属性を含んでいる Webhook URL を登録してもらう必要があるかもしれません。その指示は、lambda 関数 help
を使って行えます。この関数内で、ユーザーに登録してもらう Webhook URL を提示してください。URL パラメータには、コネクションの何らかの属性を含めます。
{
title: "Sample connector",
webhook_keys: lambda do |params, headers, payload|
"#{params['org_id']}@#{payload['formId']}"
end,
triggers: {
sample_static_webhook_trigger: {
help: lambda do |input, picklist_label, connection, webhook_base_url|
next unless webhook_base_url.present?
<<~HTML
Creates a job when an form submission is received. To set this webhook up,
'you will need to register the webhook below under "settings" => "webhooks" => "new". <br>
<b>Webhook endpoint URL</b>
<b class="tips__highlight">#{webhook_base_url}?org_id=#{connection['org_id']}</b>
HTML
end,
webhook_key: lambda do |connection, input|
"#{connection['org_id']}@#{input['formId']}"
end,
input_fields: lambda do |object_definitions, connection, config_fields|
[
{
name: 'formId',
label: "Form",
control_type: "select",
pick_list: "forms",
hint: "Select the form you want to trigger this recipe off."
}
]
end,
}
}
}
# display_priority
属性 | 説明 |
---|---|
キー | display_priority |
型 | Integer |
必須 | 省略可能。デフォルトでは0になり、さらにはアクションのタイトルのアルファベット順が使用されます。 |
説明 | このキーにより、レシピエディタ内でのトリガーの並び順に影響を与え、上位のトリガーを目立たせることができます。この整数値が大きくなるほど、優先度が高くなります。2つのトリガーの優先度が同じ場合、それらはタイトルに基づいて並べられます。 |
# batch
属性 | 説明 |
---|---|
キー | batch |
型 | Boolean |
必須 | 省略可能。 |
説明 | アクションの横に「Batch」というタグを表示し、このアクションが複数のレコードを扱えることを示します。通常はバッチトリガーで使用するか、ユーザーがレコードのリストを渡せるバッチでの作成/更新/アップサートアクションで使用します。 |
UI 参考 |
# bulk
属性 | 説明 |
---|---|
キー | bulk |
型 | Boolean |
必須 | 省略可能。 |
説明 | アクションの横に「Bulk」というタグを表示し、このアクションが多くのレコードからなる大規模なフラットファイルを扱えることを示します。通常は、ユーザーが多くのレコードからなる CSV ファイルを渡す、バルクでの作成/更新/アップサートアクションで使用します。 |
UI 参考 |
# deprecated
属性 | 説明 |
---|---|
キー | deprecated |
型 | Boolean |
必須 | 省略可能。 |
説明 | アクションの横に「Deprecated」というタグを表示し、このアクションが廃止されることを示します。このアクションを使用してきたレシピはこれからも動作し続けますが、今後のレシピではこのアクションの検索や選択を行えなくなります。 |
UI 参考 |
TIP
「廃止」は、後方互換性のない変更を行った際に、ユーザーを新しいアクションに移行させるための優れた方法です。この方法により、アクションをより便利なものにしたり、今後の API の変更に対応させたりしやすくなります。
# config_fields
属性 | 説明 |
---|---|
キー | config_fields |
型 | Array |
必須 | 省略可能。 |
説明 | このキーは、入力項目としてユーザーに表示されるハッシュからなる配列を受け付けます。コンフィギュレーション項目は、入力項目よりも前にユーザーに表示されます。エンドユーザーに表示する入力項目のセットを変更するのに利用できます。これは多くの場合、汎用的なオブジェクトのアクションで使用されます。そのようなアクションにおいて、コンフィギュレーション項目はオブジェクトを選択するようユーザーに求め、入力項目はその選択に基づいて表示されます。コネクターは lambda 関数 input_fields の引数を通して、config_fields (コンフィギュレーション項目) への入力を参照できます。また、コンフィギュレーション項目への入力は、あらゆる object_defintions において引数として提供されます。Workato での、コンフィギュレーション項目の定義方法の詳細については、こちらをクリックしてください。 |
期待される出力 | ハッシュの配列。この配列の各ハッシュは、それぞれ個別のコンフィギュレーション項目に対応します。 |
UI 参考 |
TIP
コンフィギュレーション項目は、アクションに動的な動作をもたらす強力なツールです。これを使用すると、コネクターで新しい機能を利用したり見つけたりするのが簡単になります。上の gif 動画の例では、[Event] への入力を行うと、追加の入力項目が表示されることがわかります。これらの入力項目は、「Meeting」という値の選択に基づいて表示されています。
# input_fields
属性 | 説明 |
---|---|
キー | input_fields |
型 | lambda 関数 |
必須 | はい |
説明 | この lambda 関数では、レシピエディターでこのトリガーを設定しているユーザーに対し、どのような入力項目を表示するか定義できます。この lambda 関数の出力はハッシュの配列です。この配列に含まれるハッシュはそれぞれ、個別の入力項目に対応します。Workato 内の入力項目を定義する方法について、詳しくはこちらを参照してください。 |
使用可能な引数 | object_definitions - これを利用してオブジェクト定義を参照できます。オブジェクト定義は、入力項目と出力項目 (データピル) の両方を表現するために使用できる、ハッシュの配列の保管場所です。それらの定義は、どのアクションやトリガーからも参照できます。connection - connection で定義されたユーザー入力を表すハッシュ。config_fields - config_fields で定義されたユーザー入力を表すハッシュ (該当する場合)。 |
期待される出力 | ハッシュの配列。この配列に含まれる各ハッシュは、それぞれ個別の入力項目に対応します。 |
UI 参考 |
# webhook_key
属性 | 説明 |
---|---|
キー | webhook_key |
型 | lambda 関数 |
必須 | トリガーが静的 Webhook トリガーの場合は必須。それ以外の場合は省略可能。webhook_subscribe 、webhook_unsubscribe が定義されている場合は使用しません。 |
説明 | コネクターのルートレベル (actions や triggers と同レベル) のキーとして定義される webhook_keys と併せて使用します。このキーでは、コネクションやトリガーからのユーザー入力を使用するなどして、このトリガーに向けた一意の署名を作成できます。これは静的な文字列値にすることもできます。この lambda 関数内の署名が lambda 関数 webhook_keys 内の署名と一致する場合、Webhook がこのトリガーに送信されます。詳細については、静的 Webhook に関するガイドを参照してください。 |
使用可能な引数 | connection - connection で定義されたユーザー入力を表すハッシュ。input - input_fields で定義されたユーザー入力を表すハッシュ |
期待される出力 | ハッシュの配列。この配列に含まれる各ハッシュは、それぞれ個別の入力項目に対応します。 |
例 - webhook_key:
lambda 関数 webhook_key
は、1つのトリガーとその出力署名 (ユーザー入力をもとに作成されている場合) に固有のものになります。一方、lambda 関数 webhook_keys
はコネクター全体に紐づけられており、その出力署名は、受信した Webhook の属性 (本文、ヘッダー、クエリーパラメータなど) をもとに作成されます。これら2つの署名がマッチするようになっていると、受信 Webhook に始まりジョブを作成する適切なトリガーに至るまでのルーティングを、簡単に把握できます。
{
title: "Sample connector",
webhook_keys: lambda do |params, headers, payload|
payload['formId']
end,
triggers: {
sample_static_webhook_trigger: {
help: lambda do |_input, _picklist_label|
{
body: “Triggers in real-time whenever an event is created. Set up this trigger by registering the Webhook URL ” \
“below in <b>Settings</b> => <b>Webhooks</b>.“,
learn_more_url: “https://docs.workato.com”,
learn_more_text: “Learn more”
}
end,
webhook_url_help: lambda do |_connection, _input, webhook_base_url|
webhook_base_url
end,
input_fields: lambda do |object_definitions, connection, config_fields|
[
{
name: 'formId',
label: "Form",
control_type: "select",
pick_list: "forms",
hint: "Select the form you want to trigger this recipe off."
}
]
end,
webhook_key: lambda do |connection, input|
input['formId']
end,
}
}
}
# webhook_payload_type
属性 | 説明 |
---|---|
キー | webhook_payload_type |
型 | String |
必須 | 省略可能。デフォルトでは "parsed" になります。 |
説明 | デフォルトでは、Workato は受信した Webhook のペイロードを JSON.parse() (opens new window) を使用して解析します。webhook_payload_type を "raw" に設定すると、JSON として解析したペイロードではなく、未加工の Webhook ペイロードを受け取ることができます。 |
例 - webhook_payload_type: - Webhook の検証または XML Webhook の処理
webhook_payload_type
は、次の2通りのシナリオで使用できます。
- 生の ペイロードに基づいて Webhook のペイロードの署名を計算する必要がある場合。これは、
workato.parse_json
を使って解析済みの JSON ペイロードを取得する前に、lambda 関数 webhook_notification 内で実行できます。
webhook_payload_type: "raw",
webhook_notification: lambda do |input, payload, extended_input_schema, extended_output_schema, headers, params, connection, webhook_subscribe_output|
original_payload = payload
client_secret = input['client_secret'] || account_property('hubspot_webhook_client_secret')
if client_secret.present?
source_string = client_secret + original_payload
v1_signature = source_string.encode_sha256.encode_hex
end
if (client_secret.present? && v1_signature == headers['X-Hubspot-Signature']) || !client_secret.present?
payload = workato.parse_json(payload).select do |event|
event['propertyName'] == input['contact_property'] && event['subscriptionType'] == 'contact.propertyChange'
end
if payload.length > 0
{
events: payload,
headers: headers,
webhook_validated: client_secret.present? ? true : false
}
end
end
end,
- JSON 形式ではない Webhook を受信する場合。
webhook_payload_type: "raw",
webhook_notification: lambda do |input, payload, extended_input_schema, extended_output_schema, headers, params, connection, webhook_subscribe_output|
payload.from_xml
end,
# webhook_subscribe
属性 | 説明 |
---|---|
キー | webhook_subscribe |
型 | lambda 関数 |
必須 | トリガーが動的 Webhook トリガーの場合は必須。それ以外の場合は省略可能。webhook_key が定義されている場合は使用しません。 |
説明 | この lambda 関数は、動的 Webhook トリガーが Webhook にプログラム的にサブスクライブするために使用します。この関数が呼び出されるのは、これが定義されたトリガーを用いたレシピを、ユーザーが開始したときです。 詳細については、動的 Webhook に関するガイドを参照してください。 |
使用可能な引数 | webhook_url - レシピに固有の Webhook URL を表す文字列。これは、Webhook サブスクリプションの作成時に、API に渡す必要があります。connection - connection で定義されたユーザー入力を表すハッシュ。input - input_fields で定義されたユーザー入力を表すハッシュ recipe_id - Workato のレシピの ID を表す整数。 |
期待される出力 | 次の2通りの出力があります。 - webhook_subscribe_output としてラムダ関数 webhook_unsubscribe 、webhook_notification 、webhook_refresh に渡される単一のハッシュ。- 配列。最初のインデックスは webhook_subscribe_output として渡されるものと同一のハッシュ。2番目のインデックスは Webhook の有効期限切れの日時であり、この日時によって webhook_refresh がトリガーされます。 |
期限切れになる Webhook サブスクリプションへの対処
Microsoft の Graph API (opens new window) のような一部の API では、Webhook サブスクリプションを作成できるものの、一定時間が経過すると、それが失効してしまいます。つまり、トリガーは Webhook サブスクリプションの期限切れが近づいている時期をインテリジェントに把握し、そのサブスクリプションを更新してイベントの受信を続けられるようにする必要があります。
Webhook が1時間で期限切れになる場合のサンプルコードを示します。
webhook_subscribe: lambda do |webhook_url, connection, input, recipe_id|
[
post("https://www.acme.com/api/webhook_subscriptions", url: webhook_url),
1.hour.from_now
]
end,
webhook_refresh: lambda do |webhook_subscribe_output|
[
patch("https://www.acme.com/api/webhook_subscriptions/#{webhook_subscribe_output['id']}", refresh: true),
1.hour.from_now
]
end,
webhook_unsubscribe: lambda do |webhook_subscribe_output, connection|
delete("https://www.acme.com/api/webhook_subscriptions/#{webhook_subscribe_output['id']}")
end,
上の例において、webhook_subscribe
の出力は、日時値を含んでいる配列です。この日時値は、webhook_refresh
が次に呼び出されて Webhook サブスクリプションを更新するタイミングに対応しています。同様の指定は webhook_refresh
でも行います。webhook_refresh
の出力が元の webhook_subscribe_output
も置き換えることに注意してください。
# webhook_refresh
属性 | 説明 |
---|---|
キー | webhook_refresh |
型 | lambda 関数 |
必須 | 必須ではありません。webhook_subscribe が定義されている場合にのみ有効となります。 |
説明 | この lambda 関数は Webhook サブスクリプションに有効期限が設定されている場合に呼び出されます (この有効期限は webhook_subscribe の出力で定義されます)。この関数により、トリガーがイベントを受信し続けられるように Webhook サブスクリプションを更新することができます。 |
使用可能な引数 | webhook_subscribe_output - lambda 関数 webhook_subscribe の出力を表すハッシュ。 |
期待される出力 | - 配列。最初のインデックスは webhook_subscribe_output として渡されるものと同一のハッシュ。2番目のインデックスは Webhook の有効期限切れの日時であり、この日時によって webhook_refresh がトリガーされます。 |
# webhook_unsubscribe
属性 | 説明 |
---|---|
キー | webhook_unsubscribe |
型 | lambda 関数 |
必須 | トリガーが動的 Webhook トリガーの場合は必須。それ以外の場合は省略可能。webhook_key が定義されている場合は使用しません。 |
説明 | この lambda 関数は、動的 Webhook トリガーが Webhook サブスクリプションをプログラム的に破棄するために使用します。この関数が呼び出されるのは、これが定義されたトリガーを用いたレシピを、ユーザーが停止したときです。詳細については、動的 Webhook に関するガイドを参照してください。 |
使用可能な引数 | webhook_subscribe_output - lambda 関数 webhook_subscribe の出力を表すハッシュ。connection - connection で定義されたユーザー入力を表すハッシュ。 |
期待される出力 | 出力は不要です。 |
注意
lambda 関数 webhook_notification では、methods
や HTTP メソッドを呼び出せません。Webhook のペイロードが情報量に乏しい場合は、トリガーの出力を受け取って追加の HTTP リクエストを実行できるアクションを付け足してください。
# webhook_notification
属性 | 説明 |
---|---|
キー | webhook_notification |
型 | lambda 関数 |
必須 | トリガーが動的 Webhook トリガーまたは静的 Webhook トリガーの場合は必須。 |
説明 | この lambda 関数は、送信されてきた Webhook を、このトリガーがどのように処理するか定義します。この関数を使用して、任意のデータ操作を行うことができます。この lambda 関数では、追加の HTTP リクエストを実行したり、再利用可能な methods を追加的に呼び出したりすることはできません。 |
使用可能な引数 | input - input_fields で定義されたユーザー入力を表すハッシュ payload - 受信した Webhook のペイロードを表すハッシュ。extended_input_schema - 例については以下を参照してください。extended_output_schema - 例については以下を参照してください。headers - 受信した Webhook のヘッダーを表すハッシュ。params - 受信した Webhook のクエリーパラメータを表すハッシュ。connection - connection で定義されたユーザー入力を表すハッシュ。 webhook_subscribe_output - lambda 関数 webhook_subscribe の出力を表すハッシュ。 |
期待される出力 | 単一ジョブの出力を表すハッシュ、または個々のジョブを表すハッシュの配列。 |
# poll
属性 | 説明 |
---|---|
キー | poll |
型 | lambda 関数 |
必須 | トリガーがポーリングトリガーまたはハイブリッドトリガーの場合は必須です。 |
説明 | この lambda 関数は、このトリガーがどのように API から新しいレコードを取得してジョブを作成するかを扱います。この関数はポーリング間隔ごと (デフォルトは5分間、レシピレベルで設定可能) に呼び出されます。 |
使用可能な引数 | connection - connection で定義されたユーザー入力を表すハッシュ。input - input_fields で定義されたユーザー入力を表すハッシュ closure - 前回実行された lambda 関数 poll から同じ lambda 関数に渡されるカーソル値を表すハッシュ。extended_input_schema - 例については以下を参照してください。extended_output_schema - 例については以下を参照してください。 |
期待される出力 | 3つの属性を含むハッシュ。 - ジョブに変換されるレコードの配列 - 5分後ではなく今すぐにポーリングを再試行するようトリガーに指示する Boolean フラグ - この同じ関数が次回実行されたときに渡されるクロージャとして保存される値/ハッシュ。 例については以下を参照してください |
TIP
クロージャ値は単純な文字列/整数にも、ハッシュ (カーソルとして複数の値を保存する必要がある場合) にもできます。
例 - poll:
以下の構造では、poll ブロックの出力はハッシュになるはずです。
poll: lambda do |connection, input, closure, _eis, _eos|
# Timestamp which we need to filter records based off.
updated_since = (closure || input['since']).to_time.utc.iso8601
request_page_size = 100
records = get("/records/endpoint").
params(
# filter for records only updated after this time
updated_since: updated_since,
page_size: request_page_size
)
# Example JSON response
# {
# data: [
# {
# "id": "abcd123",
# "name": "record1"
# ...
# },
# {
# "id": "dcba321",
# "name": "record2",
# ...
# },
# ...
# ],
# total_records: 1000
# }
# Derive last updated since timestamp to filter
next_updated_since = records['data'].last['updated_at'] unless records.blank?
{
# Event accepts an array of records. Each record is a new job.
events: records['data'],
# Closure value which is passed as closure argument in next poll
next_poll: next_updated_since,
# Boolean flag to denote whether we should wait 5 mins to poll or poll immediately.
# Poll immediately if total records is still more than page size.
can_poll_more: records['total_records'] >= request_page_size
}
end,
例 - poll: - extended_input_schema および extended_output_schema
拡張入出力スキーマとは、アクションで使用される object_definitions
に由来するスキーマのことを言います。この情報は、スキーマを動的に生成し、それを使ってデータの前処理や後処理を行いたい場合にしばしば役立ちます。これらの引数には config_fields は含まれません。
たとえば、extended_input_schema を使用すれば、どの入力が日時であり、ターゲット API が受け付けるエポック時間に変換する必要があるのかを知ることができます。また同様にして、extended_output_schema を使ってレスポンスを取得し、エポック変数を ISO8601 準拠の日時に再変換することもできます。
create_object: {
description: lambda do |input, picklist_label|
"Create a <span class='provider'>#{picklist_label['object'] || 'object'}</span> in " \
"<span class='provider'>Percolate</span>"
end,
config_fields: [
{
name: 'object',
control_type: 'select',
pick_list: 'object_types',
optional: false
}
],
input_fields: lambda do |object_definitions, connection, config_fields|
object = config_fields['object']
object_definitions[object].ignored('id')
end,
execute: lambda do |connection, input, extended_input_schema, extended_output_schema|
puts extended_input_schema
# [
# {
# "type": "string",
# "name": "status",
# "control_type": "select",
# "label": "Status",
# "hint": "Status is required for creating Content",
# "pick_list": "post_statuses",
# "optional": false
# },
# ...
# ]
puts extended_output_schema
# [
# {
# "type": "string",
# "name": "id",
# "control_type": "text",
# "label": "Content ID",
# "hint": "The Content ID, Example: <b>post:45565410</b>.",
# "optional": true
# },
# {
# "type": "string",
# "name": "status",
# "control_type": "select",
# "label": "Status",
# "hint": "Status is required for creating Content",
# "pick_list": "post_statuses",
# "optional": false
# },
# ...
# ]
end,
output_fields: lambda do |object_definitions, connection, config_fields|
object = config_fields['object']
object_definitions[object]
end,
}
# dedup
属性 | 説明 |
---|---|
キー | dedup |
型 | lambda 関数 |
必須 | 必須です。 |
説明 | この lambda 関数を使用すると、同じイベントでトリガーが2回起動することがないように、トリガーイベントの重複を除去できます。これは、受信レコードの属性に基づく一意の署名文字列を作成することで達成されます。 |
使用可能な引数 | record - 1つのレコードを表すハッシュ。これは、lambda 関数 poll の events 配列の1つのインデックス、または lambda 関数 webhook_notification のハッシュ出力です。 |
期待される出力 | 文字列 - "#{record['id']}@#{record['created_at']}" または "#{record['id']}@#{record['updated_at']}" |
# output_fields
属性 | 説明 |
---|---|
キー | output_fields |
型 | lambda 関数 |
必須 | 必須です。 |
説明 | この lambda 関数により、レシピエディターでこのトリガーを設定しているユーザーに表示する出力フィールド (データピル) を定義できます。この lambda 関数の出力はハッシュの配列です。この配列に含まれるハッシュはそれぞれ、個別の出力項目 (データピル) に対応します。Workato の入力項目の詳しい定義方法については、こちらを参照してください。 |
使用可能な引数 | object_definitions - これを利用すると、オブジェクト定義を参照できます。オブジェクト定義は、入力項目または出力項目を表現できる配列の保存場所です。それらの定義は、どのアクションやトリガーからも参照できます。connection - connection で定義されたユーザー入力を表すハッシュ。config_fields - config_fields で定義されたユーザー入力を表すハッシュ (該当する場合)。 |
期待される出力 | ハッシュの配列。この配列に含まれる各ハッシュは、それぞれ個別の入力項目に対応します。 |
UI 参考 |
# sample_output
属性 | 説明 |
---|---|
キー | sample_output |
型 | lambda 関数 |
必須 | 必須ではありません。 |
説明 | この lambda 関数では、出力項目 (データピル) の横に表示されるサンプル出力を定義できます。 |
使用可能な引数 | connection - connection で定義されたユーザー入力を表すハッシュ。input - input_fields で定義されたユーザー入力を表すハッシュ。 |
期待される出力 | ハッシュ。このハッシュは、lambda 関数 execute のスタブ出力である必要があります。 |
UI 参考 |
# summarize_input
属性 | 説明 |
---|---|
キー | summarize_input |
型 | Array |
必須 | 必須ではありません。 |
説明 | これを使用すると、長いリストを含んでいる入力を要約できます。入力を要約することは、ジョブページを軽量に保ち、すばやく読み込めるようにするために重要です。一般に、入力に100行を超えるリストがある場合、それらを要約する必要があります。 |
期待される出力 | Array。例: ['leads'] または ['report.records', 'report.description'] |
# summarize_output
属性 | 説明 |
---|---|
キー | summarize_output |
型 | Array |
必須 | 必須ではありません。 |
説明 | これを使用すると、長いリストを含んでいるアクションの出力を要約できます。出力を要約することは、ジョブページを軽量に保ち、すばやく読み込めるようにするために重要です。一般に、出力に100行を超えるリストがある場合、それらを要約する必要があります。 |
期待される出力 | Array。例: ['leads'] または ['report.records', 'report.description'] |
UI 参考 |
例 - ジョブデータの入力と出力の要約
大きな配列またはデータを扱っているとき、Workato は、各アクションのジョブの入力タブと出力タブにすべてのデータを表示しようとします。多数のレコードや長大な文字列を扱う場合、これにより混乱が生じることがあります。summarize_input
キーと summarize_output
キーを使用すれば、ジョブの入力タブと出力タブのデータを要約し、コネクターのユーザーにとって読みやすいものにすることができます。
input_fields: lambda do
[
{
name: 'report',
type: 'object',
properties: [
{
name: 'records',
type: :array,
of: :object,
properties: [
{
name: 'item_name',
type: 'string'
}
]
},
{
name: 'description',
type: 'string'
},
{
name: 'comment',
type: 'string'
}
],
}
]
end,
summarize_input: ['report.records', 'report.description'],
Last updated: 2023/8/31 1:07:14