Как вы отправляете множественный ответ пользователю от бота?

Я использую Microsoft Bot Framework и пытаюсь отправить пользователю несколько ответов, но не знаю, как это сделать из nodejs. Я могу сделать это с С#.

Пример кода С#

var connector = new ConnectorClient();
connector.Messages.SendMessage(incomingMessage.CreateReplyMessage("Yo, I heard you 1.", "en"));
connector.Messages.SendMessage(incomingMessage.CreateReplyMessage("Yo, I heard you 2.", "en"));
connector.Messages.SendMessage(incomingMessage.CreateReplyMessage("Yo, I heard you 3.", "en"));

Что это будет в nodejs?

пример кода nodejs, который я пытаюсь запустить:

var bot = new builder.TextBot();
bot.add('/', function (session) {
   session.send('Hello World');
   session.send('Hello World'); // won't work.
});

bot.listenStdin();

person Wahid Kadwaikar    schedule 15.04.2016    source источник
comment
Я пытаюсь session.send(текстовое сообщение), и это, кажется, завершает сеанс прямо здесь @Wjdavis5   -  person Wahid Kadwaikar    schedule 15.04.2016
comment
Пожалуйста, добавьте код nodejs к вопросу. Вы просите нас помочь решить проблему с вашим приложением Node, но предоставили фрагмент кода C#.   -  person Wjdavis5    schedule 15.04.2016
comment
@ Wjdavis5, спасибо за предложение, я внес изменения.   -  person Wahid Kadwaikar    schedule 15.04.2016
comment
Я должен что-то упустить здесь. Вы сказали, что пытаетесь отправить несколько ответов, но в вашем примере вы отправляете только один ответ.   -  person Wjdavis5    schedule 15.04.2016
comment
Надеюсь, теперь вы видите обновленный вопрос? Мне просто любопытно узнать, что было бы альтернативой коду С# в nodejs. Спасибо.   -  person Wahid Kadwaikar    schedule 15.04.2016
comment
Я создал версию библиотеки Node, поэтому позвольте мне спросить: вы пробовали это с помощью TextBot? Ваш код выше определенно должен работать. Если у вас действительно возникли проблемы с работой нескольких отправок с использованием BotConnectorBot и эмулятора, я знаю, в чем проблема (посмотрите внимательно на пример testBot), и я могу ответить на ваш вопрос.   -  person Steven Ickman    schedule 18.04.2016
comment
@StevenIckman, спасибо! только что получил ответ из репозитория GitHub. Это работает!   -  person Wahid Kadwaikar    schedule 18.04.2016


Ответы (1)


Проверьте этот ответ: отправить несколько ответов клиенту через nodejs

Вы можете смоделировать несколько ответов (решение 1), которые вам нужны, возвращая свойство массива с объектом ответа. В этом случае может быть полезно использовать эту библиотеку: https://github.com/caolan/async если вы используете несколько асинхронных функций.

var messages = [];
messages.push('message 1');
messages.push('message 2');
// etc

response.send({all: messages});

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

Широко используемой библиотекой для веб-сокетов является socketio: http://socket.io/get-started/chat/

Я бы не стал связываться с решением 2, если только его функциональность не слишком сложна и не требует подтверждения от клиента. В этом случае вы все равно можете использовать решение 3.

person Angelos Kyriakopoulos    schedule 15.04.2016