/// <summary> /// Notifies the conversation client (customer) or the conversation owner (agent) that there /// was a problem forwarding their message /// </summary> /// <param name="messageRouterResult">The result to handle.</param> private static async Task <string> HandleFailedToForwardMessageAsync(MessageRouterResult messageRouterResult) { string message = $"{(string.IsNullOrEmpty(messageRouterResult.ErrorMessage) ? "Failed to forward the message" : messageRouterResult.ErrorMessage)}"; await MessagingUtils.ReplyToActivityAsync(messageRouterResult.Activity, message); return(message); }
/// <summary> /// Notifies the conversation client (customer) or the conversation owner (agent) that /// there was a problem forwarding their message. /// </summary> /// <param name="messageRouterResult">The result to handle.</param> protected virtual async Task HandleFailedToForwardMessageAsync(MessageRouterResult messageRouterResult) { string messageText = string.IsNullOrEmpty(messageRouterResult.ErrorMessage) ? ConversationText.FailedToForwardMessage : messageRouterResult.ErrorMessage; await MessagingUtils.ReplyToActivityAsync(messageRouterResult.Activity, messageText); }
/// <summary> /// From IMessageRouterResultHandler. /// </summary> /// <param name="messageRouterResult">The result to handle.</param> /// <returns></returns> public virtual async Task HandleResultAsync(MessageRouterResult messageRouterResult) { if (messageRouterResult == null) { throw new ArgumentNullException($"The given result ({nameof(messageRouterResult)}) is null"); } string messageRouterResultAsString = messageRouterResult.ToString(); if (messageRouterResult.Activity != null) { await MessagingUtils.ReplyToActivityAsync(messageRouterResult.Activity, messageRouterResultAsString); } else { MessageRouterManager messageRouterManager = MessageRouterManager.Instance; if (messageRouterResult.ConversationOwnerParty != null) { await messageRouterManager.SendMessageToPartyByBotAsync( messageRouterResult.ConversationOwnerParty, messageRouterResultAsString); } if (messageRouterResult.ConversationClientParty != null) { await messageRouterManager.SendMessageToPartyByBotAsync( messageRouterResult.ConversationClientParty, messageRouterResultAsString); } } }
/// <summary> /// Notifies the conversation client (customer) that no agents are available. /// </summary> /// <param name="messageRouterResult">The result to handle.</param> protected virtual async Task HandleNoAgentsAvailableResultAsync(MessageRouterResult messageRouterResult) { if (messageRouterResult.Activity != null) { await MessagingUtils.ReplyToActivityAsync(messageRouterResult.Activity, ConversationText.NoAgentsAvailable); } else { System.Diagnostics.Debug.WriteLine("The activity of the result is null"); } }
/// <summary> /// Notifies the user that there are no aggregation channels setup /// </summary> /// <param name="messageRouterResult">The result to handle.</param> private static async Task <string> HandleNoAggregationChannelResultAsync(MessageRouterResult messageRouterResult) { string message = string.Empty; if (messageRouterResult.Activity != null) { MessageRouterManager messageRouterManager = WebApiConfig.MessageRouterManager; string botName = messageRouterManager.RoutingDataManager.ResolveBotNameInConversation( MessagingUtils.CreateSenderParty(messageRouterResult.Activity)); message = $"{(string.IsNullOrEmpty(messageRouterResult.ErrorMessage) ? "" : $"{messageRouterResult.ErrorMessage}: ")}The message router manager is not initialized; type \""; message += string.IsNullOrEmpty(botName) ? $"{Commands.CommandKeyword} " : $"@{botName} "; message += $"{Commands.CommandAddAggregationChannel}\" to setup the aggregation channel"; await MessagingUtils.ReplyToActivityAsync(messageRouterResult.Activity, message); }
/// <summary> /// Notifies the user that there are no aggregation channels set up. /// </summary> /// <param name="messageRouterResult">The result to handle.</param> protected virtual async Task HandleNoAggregationChannelResultAsync(MessageRouterResult messageRouterResult) { if (messageRouterResult.Activity != null) { string messageText = string.IsNullOrEmpty(messageRouterResult.ErrorMessage) ? string.Format(ConversationText.NoAggregationChannel) : messageRouterResult.ErrorMessage; messageText += $" - "; messageText += string.Format( ConversationText.AddAggregationChannelCommandHint, $"{Command.ResolveFullCommand(messageRouterResult.Activity.Recipient?.Name, Commands.CommandAddAggregationChannel)}"); await MessagingUtils.ReplyToActivityAsync(messageRouterResult.Activity, messageText); } else { System.Diagnostics.Debug.WriteLine("The activity of the result is null"); } }