Я использую логические адаптеры 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()
Большое спасибо за вашу помощь.