Как передать дополнительные параметры в объект Statement Chatterbot и получить эти параметры с помощью метода get_response () или get_response.serialize () - PullRequest
0 голосов
/ 19 июня 2020

Я использую логические адаптеры Chatterbot для генерации различных ответов, включая вызовы внешних API, таких как погода и новости. Моя проблема проста: я хотел бы передать объекту Statement дополнительный параметр, когда я возвращаю ответ от логического адаптера. Этот дополнительный параметр будет чем-то вроде message_type, объясняющим возвращаемые данные, как в message_type = 'weather_data'. Чтобы проиллюстрировать это, вот некоторый код:

то, что я делаю сейчас:

class WeatherAPIAdapter(LogicAdapter):

    def __init__(self, chatbot, **kwargs):
        super().__init__(chatbot, **kwargs)
        # varibales 
    def can_process(self, statement):
        """
        Return true if the input statement contains
        'what' and 'is' and 'temperature'.
        """
        # verification code here
        return True

    def process(self, input_statement, additional_response_selection_parameters):
        from chatterbot.conversation import Statement
        weather_data = call_to_api()
        response_statement = Statement(
            text=weather_data
            )
        response_statement.confidence = 1.0
        return response_statement

что мне нужно:

class WeatherAPIAdapter(LogicAdapter):

    def __init__(self, chatbot, **kwargs):
        super().__init__(chatbot, **kwargs)
        # varibales 
    def can_process(self, statement):
        """
        Return true if the input statement contains
        'what' and 'is' and 'temperature'.
        """
        # verification code here
        return True

    def process(self, input_statement, additional_response_selection_parameters):
        from chatterbot.conversation import Statement
        weather_data = call_to_api()
        message_type = "weather_data"
        response_statement = Statement(
            text=weather_data,
            message_type=message_type
            )
        response_statement.confidence = 1.0
        return response_statement

, а затем я могу получить message_type, используя следующее:

message_type = bot.get_response(input_data).message_type
response = bot.get_response(input_data).text

или с помощью метода serialize ():

 data = bot.get_response(input_data).serialize()

Большое спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...