public async Task <Message> RunAsync() { // Translate to bot message var botMessage = BotMessage.Populate <Message, BotMessage>(this.message); // First run through pipeline var pipelineTaskIndex = 0; for (; pipelineTaskIndex < this.pipeline.Count; pipelineTaskIndex++) { botMessage = await this.pipeline[pipelineTaskIndex].HandleMessage(botMessage); // Break the pipeline execution if message was handled if (botMessage.IsHandled) { break; } } // Reverse run through pipeline for (; pipelineTaskIndex >= 0; pipelineTaskIndex--) { botMessage = await this.pipeline[pipelineTaskIndex].ResultMessage(botMessage); } var responseMessage = botMessage.CreateReplyMessage(botMessage.Response, "en"); responseMessage.BotConversationData = botMessage.BotConversationData; responseMessage.BotPerUserInConversationData = botMessage.BotPerUserInConversationData; responseMessage.BotUserData = botMessage.BotUserData; return(responseMessage); }
/// <summary> /// Translates the message to bot message. /// </summary> /// <param name="message">The message to translate.</param> /// <returns>Returns new instance of <see cref="BotMessage"/> with properties populated from common serializable properties with specified message.</returns> public static BotMessage AsBotMessage(this Message message) { return(BotMessage.Populate <Message, BotMessage>(message)); }