Spaces:
Runtime error
Runtime error
| # import asyncio | |
| # import socketio | |
| # import logging | |
| # # Configure logging | |
| # logging.basicConfig(level=logging.DEBUG) | |
| # logger = logging.getLogger(__name__) | |
| # class RasaSocketIOClient: | |
| # def __init__(self, uri): | |
| # self.sio = socketio.AsyncClient(logger=True, engineio_logger=True) # Enable internal logging | |
| # self.uri = uri | |
| # self.response = None | |
| # @self.sio.on('bot_uttered') # Adjust the event name as per your Rasa setup | |
| # async def on_message(data): | |
| # logger.info("Received response: %s", data) | |
| # self.response = data # Store the latest response | |
| # async def connect(self): | |
| # try: | |
| # await self.sio.connect(self.uri) | |
| # logger.info("Successfully connected to the server.") | |
| # except Exception as e: | |
| # logger.error("Failed to connect to the server: %s", e) | |
| # async def send_message(self, message): | |
| # self.response = None # Reset previous response | |
| # try: | |
| # await self.sio.emit('user_uttered', message) # Adjust the event name as per your Rasa setup | |
| # logger.debug("Message sent: %s", message) | |
| # await asyncio.sleep(1) # Wait for the response to be received | |
| # except Exception as e: | |
| # logger.error("Failed to send message: %s", e) | |
| # return self.response | |
| # async def disconnect(self): | |
| # try: | |
| # await self.sio.disconnect() | |
| # logger.info("Disconnected from the server.") | |
| # except Exception as e: | |
| # logger.error("Failed to disconnect: %s", e) | |
| # import asyncio | |
| # import socketio | |
| # import logging | |
| # from custom_logging import IMPORTANT_LEVEL_NUM | |
| # logger = logging.getLogger(__name__) | |
| # class RasaSocketIOClient: | |
| # def __init__(self, uri): | |
| # self.sio = socketio.AsyncClient(logger=False, engineio_logger=False) | |
| # self.response_event = asyncio.Event() | |
| # self.uri = uri | |
| # self.response = None | |
| # @self.sio.on('bot_uttered') # Adjust the event name as per your Rasa setup | |
| # async def on_message(data): | |
| # # Use the new logging level | |
| # logger.important("Socket ID: %s Received response: %s", self.sio.sid, data) | |
| # self.response = data # Store the latest response | |
| # async def connect(self): | |
| # try: | |
| # await self.sio.connect(self.uri) | |
| # # Use the new logging level | |
| # logger.important("Successfully connected to the server.") | |
| # except Exception as e: | |
| # # Use the new logging level for errors too, for consistency | |
| # logger.important("Failed to connect to the server: %s", e) | |
| # return "Failed to connect to the server." | |
| # async def send_message(self, message): | |
| # self.response = None # Reset previous response | |
| # try: | |
| # await self.sio.emit('user_uttered', message) # Adjust the event name as per your Rasa setup | |
| # # Since this is more of a debug level, consider if you want to keep it under IMPORTANT or not | |
| # logger.important("Message sent: %s", message) | |
| # await asyncio.sleep(1) # Wait for the response to be received | |
| # except Exception as e: | |
| # logger.important("Failed to send message: %s", e) | |
| # return self.response | |
| # async def disconnect(self): | |
| # try: | |
| # await self.sio.disconnect() | |
| # logger.important("Disconnected from the server.") | |
| # except Exception as e: | |
| # logger.important("Failed to disconnect: %s", e) | |
| import asyncio | |
| import socketio | |
| from custom_logging import get_logger | |
| logger = get_logger(__name__) | |
| class RasaSocketIOClient: | |
| def __init__(self, uri, update_chat_history_callback=None): | |
| self.sio = socketio.AsyncClient(logger=True, engineio_logger=True) | |
| self.uri = uri | |
| self.message_queue = asyncio.Queue() | |
| self.register_event_handlers() | |
| def register_event_handlers(self): | |
| async def connect(): | |
| logger.important("Connected to the server.") | |
| async def disconnect(): | |
| logger.important("Disconnected from the server.") | |
| async def on_message(data): | |
| logger.debug(f"Socket ID: {self.sio.sid} Received response: {data}") | |
| await self.message_queue.put(data) # Put received message into the queue | |
| async def connect(self): | |
| try: | |
| await self.sio.connect(self.uri) | |
| logger.important("Successfully connected to the server.") | |
| except Exception as e: | |
| logger.error(f"Failed to connect to the server: {e}") | |
| async def send_message(self, user_message): | |
| try: | |
| await self.sio.emit('user_uttered', {'message': user_message}) | |
| logger.important(f"Message sent: {user_message}") | |
| timeout = 4.0 # Timeout in seconds after the last message is received | |
| while True: | |
| try: | |
| data = await asyncio.wait_for(self.message_queue.get(), timeout) | |
| yield data | |
| except asyncio.TimeoutError: | |
| break | |
| except Exception as e: | |
| logger.error(f"Failed to send message: {e}") | |
| async def disconnect(self): | |
| try: | |
| await self.sio.disconnect() | |
| logger.important("Disconnected from the server.") | |
| except Exception as e: | |
| logger.error(f"Failed to disconnect: {e}") | |