Я пытаюсь построить бота с помощью rasa. В самом начале разговора он должен заполнить некоторые слоты данными из базы данных.
У меня есть настраиваемое действие:
class ActionFillSlots(Action):
def name(self) -> Text:
return "action_fill_slots"
def run(self, dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
example = "example"
return [SlotSet("example", example)]
И в моем файле domain.yml я установил слот следующим образом:
slots:
example:
type: text
И такой ответ:
utter_greet:
- text: "Show { example }"
А в моем файле stories.yml есть такие истории:
- story: greet happy path
steps:
- intent: greet
- action: action_fill_slots
- action: utter_greet
Если я запускаю бота с rasa shell --debug
, а затем набираю что-то, что соответствует намерению приветствия, я получаю следующую ошибку:
Не удалось заполнить шаблон высказывания "Показать {пример}" Пытался заменить "пример", но не смог найти для него значение. Нет слота с таким именем, и вы не передавали значение явно при вызове шаблона. Вернуть шаблон без заполнения шаблона.
В моем окне отладки я вижу, что слот был установлен действием:
Текущие значения слотов: пример: пример
Я использую rasa 2.1.0