Второе событие ConversationUpdate будет следовать за первым пользовательским вводом? - PullRequest
0 голосов
/ 16 мая 2018

Я тестирую своего бота на портале Azure (регистрация каналов бота / управление ботами / тестирование в веб-чате).Второе событие ConversationUpdate будет следовать за первым пользовательским вводом, как показано ниже,

click StartOver ant Azure Portal WebChat The second ConversationUpdate event will follow at the back of user first input? Шаг веб-чата Azure, как показано ниже,

  1. click Startover
  2. бот получить первый ConversationUpdate, memberAdd bot
  3. текст пользовательского ввода
  4. бот получить текст пользовательского ввода
  5. бот получить второйConversationUpdate, memberAdd user

Но эмулятор работает нормально, 2 события ConversationUpdate и ожидают ввода пользователя.botframework-emulator Шаг, как показано ниже,

  1. нажмите кнопку Начать новый диалог
  2. бот получить первый ConversationUpdate, memberAdd бот
  3. бот получить второй ConversationUpdate, memberAdd user
  4. пользовательский текст ввода
  5. бот получить пользовательский текст ввода

Я хочу отправить приветственное сообщение (включая имя пользователя, например, привет, rainmaker welcome ...) пользователю, когда второй ConversationUpdate былприходит.Приветственное сообщение будет отправлено после ввода пользователя в Azure Webchat.Как я могу решить эту проблему?

Спасибо.

1 Ответ

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

Это распространенный вопрос, размещенный здесь;да, событие conversationUpdate не генерируется одинаково между эмулятором и веб-чатом, это довольно тревожно.

Отправить приветствие вашему пользователю в чате

Я хочу отправить приветственное сообщение(укажите имя пользователя, например hi, rainmaker welcome ...) для пользователя, когда придет второй ConversationUpdate.Приветственное сообщение будет отправлено после ввода пользователя в Azure Webchat.Как я могу решить эту проблему?

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

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

Sidenote: если вам не нужна информация о пользователе, вы все равно можете использовать 1-й conversationUpdate, который вы получаете.

Пример

Пример кода: я сделал демо об этом, вы можете получить его там: https://github.com/nrobert/Bot-Language-Demo

Основные моменты:

1,Сообщение обратного канала, отправленное с фронта здесь

В примере я передаю locale информацию:

botConnectionSettings.postActivity({
    type: 'event',
    from: { id: 'userid' },
    locale: chatLocale,
    name: 'localeSelectionEvent',
    value: chatLocale
}).subscribe(function (id) { console.log('event language "' + chatLocale + '" selection sent'); });

2.Сообщение, полученное на уровне бота , здесь

else if (activity.Type == ActivityTypes.Event && activity.ChannelId == "webchat")
{
    var receivedEvent = activity.AsEventActivity();

    if ("localeSelectionEvent".Equals(receivedEvent.Name, StringComparison.InvariantCultureIgnoreCase))
    {
        // Send your welcome message here, using the special information you would have put in the event message...

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...