RASA FORMS - объект 'NoneType' не повторяется

Я создаю бота, чтобы помочь пользователю искать файл на основе предоставленного имени, и я использую слот для хранения памяти имени файла под названием SEARCHCONTENT, и я использую сущность SEARCH, чтобы помочь боту идентифицировать различные синонимы для поисковое слово. Вот мои данные nlu для поиска файла:

## intent:searchSynonyms
 - [search](SEARCH)
 - [look for](SEARCH)
 - [find](SEARCH)
 - [where is](SEARCH)

## intent:file
- file
- file [bills](SEARCHCONTENT)
- [search](SEARCH) file
- [search](SEARCH) file [mouse](SEARCHCONTENT)
- [search](SEARCH) for a file
- [search](SEARCH) for a file [laptops](SEARCHCONTENT)
- [searching](SEARCH) file
- [searching](SEARCH) file [accounting](SEARCHCONTENT)
- [where is](SEARCH) the file
- [where is](SEARCH) the file [order summary](SEARCHCONTENT) located
- [look for](SEARCH) the file
- [look for](SEARCH) the file [degree planner](SEARCHCONTENT)
- [find](SEARCH) file
- [find](SEARCH) file [design report](SEARCHCONTENT)

В файле домена я указал имя слота, которое принимает на вход «текст»:

slots:
  SEARCHCONTENT:
    type: text
    auto_fill: false

Затем я приступаю к созданию своей формы:

from typing import Any, Text, Dict, List

from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
from rasa_sdk.events import SlotSet
from rasa_sdk.forms import FormAction
class FormActionFileSearch(FormAction):
    """Custom form action to find file"""

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

    @staticmethod
    def required_slots(tracker: "Tracker") -> List[Text]:
        return ["SEARCHCONTENT"]

    def slot_mappings(self) -> Dict[Text, Any]:
        return {"SEARCHCONTENT": self.from_entity(entity="SEARCHCONTENT", intent=["file"])}

    def submit(
        self,
        dispatcher: "CollectingDispatcher",
        tracker: "Tracker",
        domain: Dict[Text, Any],
    ) -> List[Dict]:
        search_content = tracker.get_slot("SEARCHCONTENT")
        dispatcher.utter_message("Searching file " + search_content)

На данный момент все, что я пытаюсь сделать, это распечатать имя файла, чтобы проверить, правильно ли он извлекает значение из слота или нет.
Затем я перехожу к файлу domain.yml, чтобы добавить имя действия формы:

forms:
  - form_action_file_search

Затем я добавляю политику формы в свой файл config.yml:

policies:
 - name: FormPolicy

Затем я приступаю к созданию истории для поиска по имени файла:

## file path affirm
* file{"SEARCHCONTENT":"car budget"}
- form_action_file_search
- form{"name": "form_action_file_search"}
- form{"name": null}
- utter_assistance
* affirm
- utter_askAssistance

Затем я добавляю все намерения и действия в файл domain.yml, и это выглядит так:

intents:
- file
- affirm
entities:
- SEARCH
- SEARCHCONTENT
slots:
  SEARCHCONTENT:
    type: text
    auto_fill: false
forms:
  - form_action_file_search
responses:
  utter_assistance:
  - text: Is there anything else you need?
  utter_askAssistance:
  - text: How can I help you?
actions:
- utter_assistance
- utter_askAssistance

Когда я запускаю бота и набираю сводку учетной записи входного файла поиска, он выдает следующую ошибку:
 введите описание изображения здесь


person Programming Rage    schedule 27.09.2020    source источник


Ответы (1)


Можете ли вы попробовать изменить тип слота на «Неисправный».

slots:
  SEARCHCONTENT:
    type: unfeaturized
    auto_fill: false
person Gaming God    schedule 27.09.2020
comment
Это дает мне новую ошибку: не удалось извлечь слот SEARCHCONTENT с помощью действия form_action_file_search - person Programming Rage; 27.09.2020