Как я могу отправить сообщение боту Microsoft изнутри бота, чтобы сообщение прошло go через диалог с соответствующим ответом? - PullRequest
0 голосов
/ 17 января 2020

На самом деле это должно звучать так: «Как я могу заставить бота изящно реагировать, когда что-то стирает контекст, или происходит перезапуск сервера, когда кто-то использует бота. A. Это сбивает с толку и B. Мне нужно спланировать это в деталях, так логично, что это будет первая часть.

  1. Без использования прямой линии, и, возможно, я должен быть предпочтительно без, как ИТ-отдел может передать сообщение, которое для бота от пользователя точно так же как я бы говорил с ботом на клиенте. Например, когда я говорю «привет» на клиенте, бот затем обрабатывает эту информацию и отвечает через мои диалоги.

Я хочу «предварительно» отправьте сообщение боту, чтобы он заблаговременно вызывал ответ. Теперь это не проактивный обмен сообщениями, потому что это другой пользователь, который входит в бот и говорит с клиентом, а это не то, что я хочу.

Итак, еще раз, как я могу отправить сообщение боту изнутри бота.

Я хочу сделать это по этой причине: если сервер отключается или человек по какой-то причине теряет свой контекст, и он уже находится внутри бота, он должен повторно войти в бот. В частности, это как если бы «перезапускали» разговор. Но, как и в эмуляторе, когда вы перезапускаете разговор, вы снова входите в бот и повторно подключаете / перезапускаете пользователя. В этом случае вы не делаете ни того, ни другого. Вы просто там ... и в следующий раз, когда вы введете путь, он уже должен существовать.

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

Влияние на пользовательский опыт заключается в следующем: они вводят текст, а бот игнорирует его, и он, по сути, перезапускается, а затем им придется вводить текст снова.

1 Ответ

0 голосов
/ 22 января 2020

Какой государственный магазин вы используете? Если вы используете память, то ожидаемое поведение ожидается. Память является энергозависимой и временной. Вам нужно использовать постоянное и более надежное хранилище состояний (Cosmos, Azure Blob). Таким образом, «место», в котором находится пользователь (например, в разговоре. В диалоге водопада), сохраняется. Обычно по ConversationState.

См. Здесь для получения дополнительной информации: https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-concept-state?view=azure-bot-service-4.0

Нет способа сделать именно то, что вы просите. Проактивные сообщения самые близкие. Но проактивные сообщения не совсем соответствуют ситуации, когда другой пользователь входит в бот. Они обычно используются в ситуации, когда что-то внешнее может вызвать сообщение для пользователя (например, отчет о погоде или запас, достигающий порогового значения). С проактивными сообщениями вам определенно понадобится какое-то постоянное хранилище состояний.

...