Как работает formActions? - PullRequest
       11

Как работает formActions?

0 голосов
/ 06 апреля 2019

Я не понимаю, как сопоставление слотов определяет, какое «высказывание» отвечает пользователю, чтобы получить запрошенную «сущность».


пример класса моей формы:

class RestaurantForm(FormAction):
  """Example of a custom form action"""
  def name(self):
    # type: () -> Text
    """Unique identifier of the form"""
    return "formaejemplo"

  @staticmethod
  def required_slots(tracker):
    # type: () -> List[Text]
    """A list of required slots that the form has to fill"""
    return ["valor1","valor2","valor3"]

  def slot_mappings(self):
    return {"valor1": self.from_entity(entity="valor1",intent="getvalor1"),
                "valor2": self.from_entity(entity="valor2",intent="getvalor2"),
                "valor3": self.from_entity(entity="valor3",intent="getvalor3")}

  def submit(self, dispatcher, tracker, domain):
    dispatcher.utter_template('utter_listo', tracker)
    return []

domain.yml:

intents: 
- peticion_habitacion:
    use_entities: false
- getvalor1
- getvalor2
- getvalor3

entities:
- valor1
- valor2
- valor3

slots:
  valor1:
    type: unfeaturized
    auto_fill: false
  valor2:
    type: unfeaturized
    auto_fill: false
  valor3:
    type: unfeaturized
    auto_fill: false

actions:
- utter_prueba
- utter_completo

templates:
  utter_completo:
  - text: "listo:\nvalor 1 {valor1} \nvalor 2 {valor2} \nvalor 3 {valor3}"

  utter_prueba:
  - text: "iniciando prueba:\n"  

  utter_valor1:
  - text: "dame el valor 1 no enteros"

  utter_valor2:
  - text: "dame el valor 2 no enteros" 

  utter_valor3:
  - text: "dame el valor 3 no enteros"  

  utter_listo:
  - text: "prueba completa"  

forms:
 - formaejemplo

в разделе, где вы получаетезначение1, значение2 и т. д. ... в соответствии с документацией Rasa: "valor1": self.from_entity (entity = "valor1", intent = "getvalor1" "" valor 1 "будет получено из намерения getvalor1."

У меня вопрос, в какое время, в какой части или в каком файле форме действия сказано, что ей нужно будет отправить "высказывание", "utter_valor1" или "utter_valor2", потому что в нескольких примерах в Интернете плюсТе же примеры ботов расы, я вижу, что они отправляют высказывание и затем восстанавливают значение, но я не могу понять, как они отправляют высказывание, а затем получают значение

1 Ответ

0 голосов
/ 12 апреля 2019

Полагаю, вы имеете в виду, как действие sdk определяет, какой шаблон следует использовать для запроса запрошенного слота, верно?

Эта логика здесь на самом деле жестко запрограммирована: https://github.com/RasaHQ/rasa_core_sdk/blob/cfffaac0013606f7614ab0f213bc39623ee8b53c/rasa_core_sdk/forms.py#L374

То, что он делает, просто отправляет высказывание, которое utter_ask_{the name of slot which should be requested}.

Если пользователь затем отправляет свой ответ, действие формы запускается снова, и значение слота можно извлечь.

...