Athul Suresh
Athul Suresh

Reputation: 39

can slot take entity values without a action function or forms in RASA?

is it possible to pass values in the entity to slots without form or writing an action function?

nlu.yml

nlu:
- intent: place_order
  examples: |
    - wanna [large](size) shoes for husky
    - need a [small](size) [green](color) boots for pupps
    - have [blue](color) socks
    - would like to place an order

- lookup: size
  examples: |
    - small
    -medium
    -large

- synonym: small
  examples: |
    - small
    - s
    - tiny
- synonym: large
  examples: |
    - large
    - l
    - big

- lookup: color
  examples: |
    - white
    - red
    - green

domain.yml

version: "2.0"

intents:
  - greet
  - goodbye
  - affirm
  - deny
  - mood_great
  - mood_unhappy
  - bot_challenge
  - place_order

entities:
  - size
  - color

slot:
  size:
    type: text
  color:
    type: text

responses:
  utter_greet:
  - text: "Hey! can I assist you ?"

  utter_order_list:
  - text : "your order is {size} [color} boots. right?"

stories.yml

version: "2.0"

stories:

- story: place_order
  steps:
  - intent: greet
  - action: utter_greet
  - intent: place_order
  - action: utter_order_list

debug output: it recognize entity , but the value is not passed to slot

Hey! can I assist you ? Your input -> I would like to place an order for large blue shoes for my puppy

 Received user message 'I would like to place an order for large blue shoes for my puppy' with intent '{'id': -2557752933293854887, 'name': 'place_order', 'confidence': 0.9996021389961243}' and entities '[{'entity': 'size', 'start': 35, 'end': 40, 'confidence_entity': 0.9921159148216248, 'value': 'large', 'extractor': 'DIETClassifier'}, {'entity': 'color', 'start': 41, 'end': 45, 'confidence_entity': 0.9969255328178406, 'value': 'blue', 'extractor': 'DIETClassifier'}]'

 Failed to replace placeholders in response 'your order is {size} [color} boots. right?'. Tried to replace 'size' but could not find a value for it. There is no slot with this name nor did you pass the value explicitly when calling the response. Return response without filling the response

Upvotes: 0

Views: 852

Answers (1)

jupyterjazz
jupyterjazz

Reputation: 31

"slot" is an unknown keyword. you should write "slots" instead of "slot" in the domain file and it will work.

Upvotes: 1

Related Questions