Pass state
A Pass state passes the state's input to its output. You can also add arbitrary data to the output.
You typically use a Pass state as a placeholder for a state you haven't written yet. You can also use a Pass state to add mock data to a ZIS flow. This is often useful for testing or troubleshooting. For examples, seeMocking a built-in actionandMocking a custom action.
In production, you can use a Pass state to append data to a reference path. This can reduce the complexity of your flow and help you avoid passing large JSON objects toTransformactions. For an example, seeAdding data to a reference path.
"Mock.GetTicket":{
"Type":"Pass",
"Result":{
"id":35436,
"subject":"Help, my printer is on fire!"
},
"ResultPath":"$.ticket",
"Next":"MyNextStep"
}
Supported properties
In addition tocommon state properties, a Pass state supports theResult
property.
Name | Type | Mandatory | Description |
---|---|---|---|
Result | object | false | Output for the state |
Mocking a built-in action
The following Pass state mocks the output of aLoadConfig行动。您可以使用状态测试子流before building a Zendesk app that lets admins specify the config settings.
"Mock.LoadConfigData":{
"Type":"Pass",
"Result":{
"channel":"#zendesk-tickets",
"priority":"urgent"
},
"ResultPath":"$.settings",
"Next":"MyNextStep"
}
Mocking a custom action
The following Pass state mocks the output of a子custom action. You can use the state to test a ZIS flow without defining the action or making an API request.
"Mock.InitiateRefund":{
"Type":"Pass",
"Result":{
"transaction_id":54321,
"transaction_value":"99.01",
"transaction_state":"pending_approval"
},
"ResultPath":"$.refund_details",
"Next":"MyNextStep"
}
Adding data to a reference path
The following ZIS bundle's job spec listens for theComment Createdevent. When the event occurs, the bundle's ZIS flow retrieves a HTML-formatted version of the event's comment body. It then posts the HTML body to an external URL.
The bundle's flow includes a Pass state. The state appends the event's comment id to aList Commentsresponse object in the$.fetched_comments
path.
This setup lets the flow's Transform action access both the event's comment id and the comments object without processing the entire$ object. By processing a smaller JSON object, the Transform action runs more efficiently.
{
"zis_template_version":"2019-10-14",
"name":"Send webhook when ticket comment is added",
"description":"Send webhook when ticket comment is added",
"resources":{
"fetch_ticket_comments":{
"type":"ZIS::Action::Http",
"properties":{
"name":"fetch_ticket_comments",
"definition":{
"method":"GET",
"path":"/api/v2/tickets/{{$.ticket_id}}/comments.json",
"connectionName":"zendesk"
}
}
},
"post_webhook":{
"type":"ZIS::Action::Http",
"properties":{
"name":"post_webhook",
"definition":{
"method":"POST",
"url":"EXTERNAL_TARGET_URL",
"requestBody":{
"text.$":"$.message"
}
}
}
},
"Flow":{
"type":"ZIS::Flow",
"properties":{
"name":"PostWebhookFlow",
"definition":{
"StartAt":"fetch_comments",
"States":{
"fetch_comments":{
"Type":"Action",
"ActionName":"zis:INTEGRATION:action:fetch_ticket_comments",
"Parameters":{
"ticket_id.$":"$.input.ticket_event.ticket.id"
},
"ResultPath":"$.fetched_comments",
"Next":"pass.store_this_comment_id"
},
"pass.store_this_comment_id":{
"Type":"Pass",
"Result":{
"this_id.$":"$.input.ticket_event.comment.id"
},
"ResultPath":"$.fetched_comments",
"Next":“transform.fetch_this_comment”
},
“transform.fetch_this_comment”:{
"Type":"Action",
"ActionName":"zis:common:transform:Jq",
"Parameters":{
"data.$":"$.fetched_comments",
"expr":".this_id as $my_id | .comments[] | select(.id == $my_id).html_body"
},
"ResultPath":"$.fetched_comments.this_comment",
"Next":"post_webhook"
},
"post_webhook":{
"Type":"Action",
"ActionName":"zis:INTEGRATION:action:post_webhook",
"Parameters":{
"message.$":"$.fetched_comments.this_comment"
},
"ResultPath":"$.posted_webhook",
"End":true
}
}
}
}
},
"JobSpec":{
"type":"ZIS::JobSpec",
"properties":{
"name":"TicketCommentAddedJobSpec",
“event_source”:"support",
"event_type":"ticket.CommentAdded",
"flow_name":"zis:INTEGRATION:flow:PostWebhookFlow"
}
}
}
}
Before using the bundle, replace the "EXTERNAL_TARGET_URL" placeholder with an external target URL, such as an endpoint URL you obtained fromRequestBin. Replace "INTEGRATION" with your ZIS integration key.