Получение текущей истории чата после обновления страницы
Я создал чат-бота, который может быть добавлен на любой сайт и бот будет добавлен на все страницы сайта. Бот работает нормально, проблема в том, что после обновления страницы или перехода на другую страницу сайта, текущая история чата теряется. Как я могу показать текущий чат после обновления страницы.
Я использую django channels для живого чата и сохранения сообщений в базе данных. При запуске чата я создаю экземпляр истории в модели Histoy, а затем сохраняю каждое сообщение в модели Conversation
Это модель для сохранения чата. Это приложение типа чата для обслуживания клиентов, поэтому сообщения сохраняются в форме вопрос/ответ.
class ChatHistory(models.Model):
TYPE = (
('bot_chat', 'bot_chat'),
('user_chat', 'user_chat')
)
company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='company_chat')
customer = models.ForeignKey(Customer, on_delete=models.DO_NOTHING, related_name='customer_chat')
date_time = models.DateTimeField(auto_now_add=True)
chat_type = models.CharField(max_length=10, choices=TYPE)
talker = models.ForeignKey(User, on_delete=models.SET_NULL, related_name='user_chat', null=True)
saved_status = models.BooleanField(default=False)
trained_status = models.BooleanField(default=True)
class Meta:
ordering = ['-pk']
class Conversation(models.Model):
history = models.ForeignKey(ChatHistory, on_delete=models.CASCADE, related_name='chat_history')
question = models.TextField(null=True)
answer = models.TextField(null=True)
time = models.TimeField(auto_now_add=True)
Вам нужна функция "история".
Предполагая, что вы можете однозначно идентифицировать чаты между людьми, вы можете опубликовать последние N сообщений в истории для пользователей при подключении, обеспечивая бесшовный опыт, контролируемый со стороны сервера. Это может быть сложным, но если ваш фронтенд может изменять порядок сообщений, то это работает отлично.
Если это не удается, создайте API-маршрут для этого, где пользователь может запросить свой ID чата и получить последние N сообщений или сообщения с временными метками между запрошенными периодами.
Все это проще, если у вас есть какая-то база данных временных рядов для хранения чата, так как они все о быстрой вставке и инструментах запросов, ориентированных на время. QuestDB отлично подходит для этого.
Именно так мы реализовали Rewind и History в Ably, и это используется во многих крупномасштабных приложениях для чатов.
Попробуйте использовать cookies и установить срок их действия на очень долгое время.
Это будет лучшим решением для вас. Попробуйте использовать cookies и установите срок их действия на очень долгое время.