dariowho/intents

Custom Entities not handled in DialogflowEsConnector.predict()

Closed this issue · 0 comments

Steps to reproduce

df.predict("I want a Margherita")

Expected result

restaurant.order_pizza(pizza_type: PizzaType="Margherita", ...)

Actual result

{}

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-10-6859044985a4> in <module>
----> 1 df.predict("I want a Margherita")

~/lavoro/dialogflow-agents/intents/connectors/dialogflow_es/connector.py in predict(self, message, session, language)
    154 
    155         return self._df_response_to_prediction(df_response)
--> 156 
    157     def trigger(self, intent: Intent, session: str=None, language: str=None) -> Intent:
    158         if not session:

~/lavoro/dialogflow-agents/intents/connectors/dialogflow_es/connector.py in _df_response_to_prediction(self, df_response)
    194         return DialogflowPrediction(
    195             intent=self._df_response_to_intent(df_response),
--> 196             confidence=df_response.protobuf_response.query_result.intent_detection_confidence,
    197             fulfillment_message_dict=intent_responses(df_response.protobuf_response),
    198             fulfillment_text=df_response.protobuf_response.query_result.fulfillment_text,

~/lavoro/dialogflow-agents/intents/connectors/dialogflow_es/connector.py in _df_response_to_intent(self, df_response, build_related_cls, visited_intents)
    247         visited_intents.add(intent_cls)
    248         parameter_dict = deserialize_intent_parameters(df_parameters, intent_cls, self.entity_mappings)
--> 249         related_intents_dict = {}
    250         for related in related_intents(intent_cls).follow:
    251             if related.intent_cls in visited_intents:

~/lavoro/dialogflow-agents/intents/service_connector.py in deserialize_intent_parameters(service_parameters, intent_cls, mappings)
    208             raise ValueError(f"Found parameter {param_name} in Service Prediction, but Intent class does not define it.")
    209         param_metadata = schema[param_name]
--> 210         mapping = mappings[param_metadata.entity_cls]
    211         try:
    212             if param_metadata.is_list:

KeyError: <class 'example_agent.restaurant.PizzaType'>