A directed acyclic graph (DAG) is a graph whose edges point in one direction and that contains no loops. Imagine one-way downtown roads with no route returning to an earlier point. section 12.3.2
Conversation systems reveal an important distinction: a decision tree is a DAG, but a dialog graph may deliberately include loops so users can revisit earlier states. A looping conversation graph is therefore not acyclic. section 12.3.2
A counting dialogue
A chatbot can move from welcome to q1, then route a correct answer to one state and a wrong answer to another. These directed transitions resemble a graph; adding a route back to an earlier state makes it cyclic rather than a DAG. section 12.3.2
Listing 12.1 Elementary counting lesson
- name: start
convo_name: count by one
convo_description: Teach counting to elementary school students
nlp: keyword
version: 3.1
triggers:
- {user_text: "__next__", target: welcome}
- name: welcome
actions:
- send_message: bot_text: Let's start by counting up by 1s.
- send_message: bot_text: I will give you 3 numbers.
- send_message: bot_text: Your answer is the next number in the list.
- send_message:
bot_text: For example, if I say "4, 5, 6" you should answer "7".
- send_message: Now you try
triggers:
- {user_text: "OK", button_text: "OK", target: q1}
- name: q1
actions:
- send_message: bot_text: 11, 12, 13
triggers:
- {user_text: 14, target: correct-answer-q1}
- {user_text: fourteen, target: correct-answer-q1}
- {user_text: "__default__", target: wrong-answer-q1}
- name: wrong-answer-q1
actions:
- send_message: bot_text: Oops!
triggers:
- {user_text: "__next__", target: q1}
- name: correct-answer-q1
actions:
- send_message: bot_text: Exactly right!
triggers:
- {user_text: "__next__", target: q2}
- name: q2
actions:
- send_message: bot_text: 16, 17, 18
triggers:
- {user_text: 19, target: stop}
- {user_text: nineteen, target: stop}
- {user_text: "__default__", target: wrong-answer-q2}
Inspect the YAML conversation flow to see named states, directed triggers, and separate targets for correct and incorrect responses. section 12.3.2














