/// <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);
        }
예제 #2
0
 /// <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);
 }
예제 #3
0
        /// <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);
                }
            }
        }
예제 #4
0
 /// <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);
            }
예제 #6
0
        /// <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");
            }
        }