flow

This component will start a nested flow (sub-flow).

https://docs.meya.ai/docs/flows#flow-component

Here is an example of a flow calling another flow:

triggers:
  - keyword: agent

steps:
  - say: I'll need to get your details first.
  - flow: flow.get_user_info
  - say: Great! Thank you for you info (@ user.name )
  - say: I'll now transfer you to a human agent.
  ...

Flow file stored in flow/get_user_info.yaml

steps:
  - (name)
  - ask: What is your name?
  - user_set: name

  - (email)
  - ask: What is your email address?
  - user_set: email

In the above example the first flow calls the flow reference path
flow.get_user_info on the second step. The first flow will then pause
and wait for the nested flow, flow.get_user_info, to complete before
continuing on to step three.

Flow reference path

A flow's reference path is simply the flow's file path where the
slashes / are replaced with dots ., and the file extension is dropped.

(If you're familiar with Python, a flow reference path is similar to a Python file's module path.)

Here are some example reference paths:

  • flow/faq/answers/component.yaml becomes: flow.faq.answers.component
  • flow/routing.yaml becomes: flow.routing

Flow call stack

The flow maintains a flow call stack to keep track all the parent flows,
and where to continue execution from.

Check the flow call stack section in the
Flows guide for more info.

Element details

type: meya.flow.component
class: FlowComponent
path: /meya/flow/component/component.py
signature: flow

Fields

fielddescription               requiredsignaturedefaulttype
specOverride the original spec for this element.nullSpec
contextSend context data with this component's event.{}
dict
sensitiveMark this component's event as sensitive. This will encrypt the event if the Sensitive Data integration has been enabled.falsebool
triggersActivate these dynamic triggers when the component runs. Check the component triggers guide for more info.[]list
flowThis is the reference path to the flow that needs to be called. A flow's reference path is simply the flow's file path where the slashes / are replaced with dots ., and the file extension is dropped. (If you're familiar with Python, a flow reference path is similar to a Python files module path)FlowRef
jumpThis property tells the flow component to jump to a specific label step in the nested flow. By default, a nested flow will always start execution from the first step.nullStepLabelRef
dataThis property allows you to pass any flow scope variables from the calling flow to the nested flow. (This is analogous to passing function parameters in a conventional programming language such as Python).nulldict
transferThe property tells the calling flow whether or not to continue with the flow once the nested flow is complete. If set to true, the bot's flow control will be transferred to the nested flow, and the calling flow will be stopped. The default is false.falsebool
asyncThis property tells the flow component to execute the nested flow in parallel and continue with the calling flow immediately. The default is false.falsebool
botThe is the reference path to the bot that you would like to run the nested flow for. In Meya you can configure multiple bots per app and then run flows as different bots. When running a flow as another bot, any bot events e.g. text.say, will be attributed to that bot with that bot's name and avatar. By default this property always assumes the primary/default bot if not specified.nullBotRef
thread_idThis property tells the flow component to execute the nested flow on another conversation thread. This generally used for advanced use cases where a bot needs to manage multiple conversation threads.nullstr

Usage reference

Basic

triggers:
  - keyword: meya.flow.component
steps:
  - flow: flow.name

Full

triggers:
  - keyword: meya.flow.component
steps:
  - spec:
      type: STRING
      data:
        STRING: ANY
      timeout: 123
      trigger_when: ANY
    context:
      STRING: ANY
    sensitive: false
    triggers:
      - type: STRING
        data:
          STRING: ANY
        timeout: 123
        trigger_when: ANY
    flow: flow.name
    jump: STEP
    data:
      foo: bar
    transfer: false
    async: false
    bot: element.name
    thread_id: STRING