Долгосрочная история разговоров в чате (возобновить разговор) - PullRequest
0 голосов
/ 15 мая 2018

Я занимаюсь разработкой приложения чатбота на основе MS Bot Framework. И мне нужно реализовать функциональность долгосрочной истории для разговоров в чате .

Прочитав тонны руководств, я обнаружил два подхода, как я могу это сделать.

  1. Используйте подход, который был описан здесь . Этот подход использует API-конечную точку DirectLine https://directline.botframework.com/v3/directline/conversations/{convId}/activities.

  2. Реализация пользовательских функций, которые будут:

    • обрабатывать все разговорные действия
    • сохранить их в хранилище (MongoDB),
    • предоставляет возможность запрашивать действия для конкретного разговора
    • и т. Д. И т. П.

Вариант №1 выглядит хорошо, но у меня есть некоторые опасения по этому поводу. Я нигде не нашел подробностей о спецификации DirectLine кеш / буфер.

  • Как долго DirectLine хранит контент ( действий, которые были отправлены через него ) разговора ( dialogId )? Какое время истечения для conversationId
  • Могу ли я ожидать, что смогу получить информацию о конкретном разговоре в любое время?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Как долго DirectLine хранит контент (действия, которые были отправлены через него) разговора (chatId)?Сколько времени истекает для параметра ID разговора?

Сообщения удаляются через 24 часа

Могу ли я ожидать, что я смогу получить контент определенного разговора в любое время?

Нет, если вам нужна история разговора с пользователем, вам нужно сохранить ее и извлечь из нее по идентификатору пользователя.Некоторое время назад я написал пример хранения истории разговоров с целью отображения истории чата в элементе управления веб-чата.Если используется ветка репозитория , о которой вы можете поговорить здесь .Вы можете или не можете перекомпилировать фрагменты кода для своего использования в зависимости от того, что именно вы пытаетесь выполнить.

Что именно вы пытаетесь выполнить с помощью исторических действий / разговоров?У меня может быть другая информация для вас.

0 голосов
/ 16 мая 2018

в памяти - это временное значение, и оно всегда исчезнет при повторной публикации.Лучше всего использовать базу данных для состояния разговора и пользовательских сессий.а затем используйте водяной знак, чтобы вернуться и продолжить разговор.

Слова из MS:

Хранение данных в памяти предназначено только для тестирования.Это хранилище нестабильно и временно.Данные очищаются каждый раз при перезапуске бота.

В MS docs есть много информации об управлении данными о состоянии, это может истечь, конечно, в какой-то момент, но Управление состоянием бота incaseкоторый умирает один день Состояние бота Поиск

предоставляет ссылку для поиска с необходимыми результатами.

Не видела монго, но у них есть решение для хранения таблиц и dos cosmosРешение, оба nosql

Также в качестве примечания, даже если MS делает это на своем канале для вас, это все равно будет только временное хранилище, особенно с новыми правилами GDPR, а также то, что MS просто не нравитсясохранение данных разговора

...