слоты заполнения раса из настраиваемого действия

Я пытаюсь построить бота с помощью 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


person ping pong    schedule 22.11.2020    source источник


Ответы (1)


Это помогает? дайте мне знать

from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher

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 = tracker.get_slot(example)
    dispatcher.utter_message(text = str(example))

    return []
person Rahul Dey    schedule 12.02.2021