Hello,
From requirement side :- When user want to place an order, user will be shown two options to select as given below :-
Let’s say user selected Vegetarian as option, again from the veg menu options will be listed for user like below :-
Finally user selected something from menu and then using custom action we are displaying it back to user like below :-
If I look at from functionality point of view, my chatbot is working as expected, but on CMD I can see some error, can someone please help me to fix these errors and here is the screenshots of errors :-
I have mention my domain.yml, stories.yml, rules.yml, nlu.yml and custom action action_show_order_items
.
domain.yml
version: "2.0"
intents:
- place_order
- vegetarian_order
- non_vegetarian_order
- order_items
entities:
- food_choice
slots:
food_choice:
type: text
influence_conversation: true
actions:
- action_show_order_items
responses:
utter_place_order:
- text: "What would you prefer :"
buttons:
- title: "Vegetarian"
payload: /vegetarian_order
- title: "Non-Vegetarian"
payload: /non_vegetarian_order
utter_vegetarian_order:
- text: "What would you like to eat :"
buttons:
- title: "Mix veg"
payload: '/order_items{"food_choice": "Mix veg"}'
- title: "Paneer butter masala"
payload: 'order_items{"food_choice": "Paneer butter masala"}'
- title: "Mushroom masala"
payload: '/order_items{"food_choice": "Mushroom masala"}'
utter_non_vegetarian_order:
- text: "What would you like to eat :"
buttons:
- title: "Egg curry"
payload: '/order_items{"food_choice": "Egg curry"}'
- title: "Chicken butter masala"
payload: '/order_items{"food_choice": "Chicken butter masala"}'
- title: "Fish curry"
payload: '/order_items{"food_choice": "Fish curry"}'
utter_order_items:
- text: "Your {food_item} order has been confirmed."
session_config:
session_expiration_time: 60
carry_over_slots_to_new_session: true
stories.yml
version: "2.0"
stories:
- story: place an vegetarian order
steps:
- intent: place_order
- action: utter_place_order
- intent: vegetarian_order
- action: utter_vegetarian_order
- intent: order_items
- action: action_show_order_items
- story: place an non-vegetarian order
steps:
- intent: place_order
- action: utter_place_order
- intent: non_vegetarian_order
- action: utter_non_vegetarian_order
- intent: order_items
- action: action_show_order_items
rules.yml
version: "2.0"
rules:
- rule: Place order
steps:
- intent: place_order
- action: utter_place_order
nlu.yml
version: "2.0"
nlu:
- intent: place_order
examples: |
- want to order food
- order food
- food order
- order food for me
- food order for me
- can you please order food for me
- food for me
- can you please place an order for me
custom action action_show_order_items
class ActionShowOrderItems(Action):
def name(self) -> Text:
return "action_show_order_items"
def run(self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]
) -> List[Dict[Text, Any]]:
food_item = tracker.get_slot('food_choice')
print('User selected item : ', food_item)
dispatcher.utter_message(response="utter_order_items", food_item=food_item)
return[]
Thanks in Advanced