Slots deleting

i am trying to let the user to fill the form but it keep deleting the slots input

’ nlu file

version: "3.0"

nlu:

- regex: phone_number
  examples: |
    - \d{10,14}

- intent: greet
  examples: |
    - hey
    - hello
    - hi
    - hello there
    - good morning
    - good evening
    - moin
    - hey there
    - let's go
    - hey dude
    - goodmorning
    - goodevening
    - good afternoon

- intent: goodbye
  examples: |
    - good afternoon
    - cu
    - good by
    - cee you later
    - good night
    - bye
    - goodbye
    - have a nice day
    - see you around
    - bye bye
    - see you later

- intent: affirm
  examples: |
    - yes
    - y
    - indeed
    - of course
    - that sounds good
    - correct

- intent: deny
  examples: |
    - no
    - n
    - never
    - I don't think so
    - don't like that
    - no way
    - not really

- intent: mood_great
  examples: |
    - perfect
    - great
    - amazing
    - feeling like a king
    - wonderful
    - I am feeling very good
    - I am great
    - I am amazing
    - I am going to save the world
    - super stoked
    - extremely good
    - so so perfect
    - so good
    - so perfect


- intent: transfer_package
  examples: |
    - i would like to make transfer
    - i would like to make transctions
    - can i send something to another phone
    - want transfer package

- intent: inform
  examples: |
    - send [50](number) [mega byte](kind) to this number [01299334512](phone_number)
    - want transfer package
    - send [messages](kind) to another phone
    - package transform
    - want to give [10](number) [messages](kind) to another phone
    - give to this [01299334512](phone_number) [500](number) [cerdits](kind)
    - put [100](number) [messages](kind) to [01597845143](phone_number)
    - make [512](number) transction of [messages](kind)
    - [300](number) [megabyte](kind)
    - [01100099038](phone_number)
    - [message](kind)
    - [credits](kind)
    - [megabyte](kind)
    - [50](number)
    - [67](number)
    - [400](number)
    - [21](number)
    - [12](number)
    - [14](number)
    - [31](number)
    - [500](number)
    - [33](number)
    - [5](number)
    - [1](number)
    - [688](number)
    - [9999](number)
    - [213](number)



- intent: messages
  examples: |
    - messages

- intent: local
  examples: |
    - local

- intent: international
  examples: |
    - international

'Domain file

version: '3.0'
session_config:
  session_expiration_time: 60
  carry_over_slots_to_new_session: true
intents:
- greet
- goodbye
- affirm
- deny
- mood_great
- mood_unhappy
- bot_challenge
- local
- number
- messages
- transfer_package
- inform
- international


entities:
- number
- phone_number
- kind
slots:
  number:
    type: float
    influence_conversation: true
    mappings:
    - type: from_entity
      entity: number
    max_value: 10000000.0
    min_value: 1.0
  phone_number:
    type: float
    influence_conversation: true
    mappings:
    - type: from_entity
      entity: phone_number
  kind:
    type: text
    influence_conversation: true
    mappings:
    - type: from_entity
      entity: kind
forms:
  transfer_package_form:
    required_slots:
      - number
      - kind
      - phone_number

responses:
  utter_greet:
  - text: Hey! how i can help you?
  utter_goodbye:
  - text: Bye
  utter_iamabot:
  - text: I am a bot, powered by Rasa.
  utter_finish:
  - text: Okay we got all things.
  utter_kind_of_transfer_package:
  - text: what do you want to transfer messages,credits or mega byte?
  utter_international_or_local:
  - text: international_or_local?
  utter_value:
  - text: how much you want to send?

  utter_ask_kind:
  - text: what kind of things you want to send credits,messages or mega byte?
  utter_ask_number:
  - text: how much the value?
  utter_ask_phone_number:
  - text: what is the phone number you want to send to him?
  utter_package_transform_slot:
  - text: The phone number is {phone_number} and the value you want to send is {number} from kind {kind}.


actions:
 - validate_transfer_package_form

Rules

"version: "3.0"

rules:

- rule: Say goodbye anytime the user says goodbye
  steps:
  - intent: goodbye
  - action: utter_goodbye

- rule: Activate form
  steps:
    - intent: transfer_package
    - action: transfer_package_form
    - active_loop: transfer_package_form

- rule: submit form
  condition:
    - active_loop: transfer_package_form
  steps:
    - action: transfer_package_form
    - active_loop: null
    - slot_was_set:
      - requested_slot: null
    - action: utter_finish
    - action: utter_package_transform_slot

" Actions "

from typing import Any, Text, Dict, List
from rasa_sdk import FormValidationAction , Action, Tracker
from rasa_sdk.events import EventType
from rasa_sdk.types import DomainDict
from rasa_sdk.executor import CollectingDispatcher

class ValidatePackageTransferForm(FormValidationAction):

    def name(self) -> Text:
        return "validate_transfer_package_form"

    def validate_number(self,slot_value:any, dispatcher: CollectingDispatcher,tracker: Tracker, domain: DomainDict) -> List[Dict[Text, Any]]:

        if slot_value is None:
            dispatcher.utter_message(text="you need to put value")
            return {"number": None}
        else:
            dispatcher.utter_message(text=f"okay the value is {slot_value}")
            return {"number": slot_value}

    def validate_phone_number(self,slot_value:Any, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

        if slot_value is None:
            dispatcher.utter_message(text="you need to put phone_number")
            return {'phone_number': None}
        else:
            dispatcher.utter_message(text=f"okay the the phone_number is {slot_value}")
            return {'phone_number': slot_value}

    def validate_kind(self,slot_value:any, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

        if slot_value is None:
            dispatcher.utter_message(text="you need to put kind")
            return {'kind': None}
        else:
            dispatcher.utter_message(text=f"okay the kind is {slot_value}")
            return {'kind': slot_value}

        return []
"

thanks @Samer98 - can you please try talking to the bot with rasa shell --debug ? That should print out a lot of information that may help you find the error.

When you say ‘deleting the slot’, can you describe exactly what happens?

1 Like