Задать вопрос
@KateSin

Как сохранять диалог react-chatbot-kit?

Привет
Для приложения на django/react делаю чат-бот с помощью react-chatbot-kit, и столкнулась с проблемой: совершенно не понятно, как сохранять диалог с ботом, чтоб при повторном его подключении он был виден.
https://fredrikoseberg.github.io/react-chatbot-kit... - вот что есть в документации, но это совершенно не работает. И сколько ни искала, примеров таких чат-ботов, у которых сохранялся бы диалог, не нашла.

Дополнение:
Заметила, что не срабатывает именно saveMessages. Если вызывать его принудительно, возникает уже ошибка при срабатывании loadMessages()

также в комментариях добавила код основных элементов
  • Вопрос задан
  • 100 просмотров
Подписаться 2 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@KateSin Автор вопроса
Ок, сама спросила, сама же ответила, вдруг кому понадобится.

В actionProvider.js необходимо добавить функцию saver, которая будет сохранять message при вызове в функциях, формирующих сообщения бота (при вызове передаем объект, сформированный вызовом createChatbotMessage):

const saver = (message) => {
        if (localStorage.getItem('chat_messages')){
            console.log('SAVE BOT')
            const chat_messages = JSON.parse(localStorage.getItem('chat_messages'));
            console.log(chat_messages.history)
            chat_messages.history.push({id: message.id, message: message.message, type: message.type, loading: message.loading, widget: message.widget})
            localStorage.setItem('chat_messages', JSON.stringify(chat_messages))
        } else {
            console.log('ELSE SAVE BOT')
            var obj = {}
            obj.history = [{id: message.id, message: message.message, type: message.type, loading: message.loading, widget: message.widget}]
            localStorage.setItem('chat_messages', JSON.stringify(obj))
        }
    }


Также прописываем в messageParser.js в функции parse сохранение сообщения пользователя:

if (localStorage.getItem('chat_messages')){
            const chat_messages = JSON.parse(localStorage.getItem('chat_messages'));
            console.log(chat_messages.history)
            chat_messages.history.push({message: message, type: 'user', loading: false})
            localStorage.setItem('chat_messages', JSON.stringify(chat_messages))
        } else {
            var obj = {}
            obj.history = [{message: message, type: 'user', loading: false}]
            localStorage.setItem('chat_messages', JSON.stringify(obj))
        }


в файле bot.js убираем функцию saveMessages (все равно она не срабатывает) и видоизменяем функцию loadMessages:
const loadMessages = () => {
        if (localStorage.getItem('chat_messages')) {
            const messages = JSON.parse(localStorage.getItem('chat_messages'))
            return messages.history
        }
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы