Nodes and actions

In each regular turn of the dialog flow, Dialog sends a response that relates to one or more nodes of the dialog. Dialog sends a response to the client app when it needs the client app to take an action and return input to carry on.

Whether the turn involves a single Execute() request/response exchange or an ExecuteStream() with a series of streamed requests and responses in either direction, the response will include a single ExecuteResponse object. As the response in the first case and as a field in the first response in the second case.

An ExecuteResponse object contains a payload containing one or more actions that need to be performed by the client app.

ExecuteResponse
    payload
        messages
        qa_action
        da_action
        escalation_action
        end_action
        continue_action

The actions correspond to nodes in the dialog:

  • Message node to play message to user: Message action (messages)
  • Question and answer node to ask a question and collect a response: Question and answer action (qa_action)
  • Data access node
    • Client side data fetch: Data access action (da_action)
    • Proceed with server-side data fetch: Continue action (continue_action)
  • External actions node
    • Transfer the conversation: Escalation action (escalation_action)
    • End the conversation: End action (end_action)

On any given turn, the response will not include all types of actions, but only those related to the specific nodes handled in that turn. Generally, a response payload will include the messages field with one or more standalone message action and one of the other five action types.

The following topics include more details about the action types and how to handle them in your client application.