/// <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 message = ""; MessageRouterManager messageRouterManager; switch (messageRouterResult.Type) { case MessageRouterResultType.NoActionTaken: case MessageRouterResultType.OK: // No need to do anything break; case MessageRouterResultType.EngagementInitiated: case MessageRouterResultType.EngagementAlreadyInitiated: case MessageRouterResultType.EngagementRejected: case MessageRouterResultType.EngagementAdded: case MessageRouterResultType.EngagementRemoved: await HandleEngagementChangedResultAsync(messageRouterResult); break; case MessageRouterResultType.NoAggregationChannel: if (messageRouterResult.Activity != null) { messageRouterManager = MessageRouterManager.Instance; 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> /// 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"); } if (messageRouterResult.Type == MessageRouterResultType.NoActionTaken || messageRouterResult.Type == MessageRouterResultType.OK) { // No need to do anything } if (messageRouterResult.Type == MessageRouterResultType.EngagementInitiated || messageRouterResult.Type == MessageRouterResultType.EngagementAlreadyInitiated || messageRouterResult.Type == MessageRouterResultType.EngagementRejected || messageRouterResult.Type == MessageRouterResultType.EngagementAdded || messageRouterResult.Type == MessageRouterResultType.EngagementRemoved) { await HandleEngagementChangedResultAsync(messageRouterResult); } else if (messageRouterResult.Type == MessageRouterResultType.NoAggregationChannel) { if (messageRouterResult.Activity != null) { MessageRouterManager messageRouterManager = MessageRouterManager.Instance; string botName = messageRouterManager.RoutingDataManager.ResolveBotNameInConversation( MessagingUtils.CreateSenderParty(messageRouterResult.Activity)); string 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); } else { System.Diagnostics.Debug.WriteLine("The activity of the result is null"); } }