private TreeNode AddNewNode(NeuralActionModel node) { var name = $"{node.Name} ({(int)(node.Resources?.Count)})"; var treeNode = treeViewNeuralActions.Nodes.Add(node._id, name); treeNode.Tag = node; treeNode.ImageKey = node.Type.GetEnumValueName(); return(treeNode); }
/// <summary> /// Handles resuest flow for action resource nodes. /// </summary> /// <param name="resource"></param> /// <param name="turnContext"></param> /// <param name="requestState"></param> /// <returns></returns> public static Activity BuildActionRespose(this NeuralActionModel actionModel, ITurnContext turnContext) { Activity activity = turnContext.Activity.CreateReply(actionModel.ApplyFormat(actionModel.Title)); List <NeuralResourceModel> resources = actionModel.Resources.Select(async resId => await DbResourceCollection.FindOneById(resId)).Select(task => task.Result).ToList(); activity.Attachments = resources.Select(res => { return(res.GetResourceAttachment()); }).ToList(); return(activity); }
/// <summary> /// Handles resuest flow for action resource nodes. /// </summary> /// <param name="resource"></param> /// <param name="turnContext"></param> /// <param name="requestState"></param> /// <returns></returns> public static Activity BuildActionRespose(this NeuralActionModel actionModel, ITurnContext turnContext) { Activity activity = turnContext.Activity.CreateReply(actionModel.ApplyFormat(actionModel.Title)); List <NeuralResourceModel> resources = actionModel.Resources.Select(async resId => await DbResourceCollection.FindOneById(resId)).Select(task => task.Result).ToList(); activity.Attachments = resources.Select(res => { Attachment attachment = null; string curDir = Environment.CurrentDirectory; if (res.IsLocal) { res.Location = System.IO.Path.Combine(curDir, "resources", res.Location); } switch (res.Type) { case ResourceType.ImagePNG: case ResourceType.ImageJPG: case ResourceType.ImageGIF: { attachment = new HeroCard { Title = res.Title, Images = new List <CardImage> { new CardImage { Url = res.Location } } }.ToAttachment(); } break; case ResourceType.Audio: { var audioCard = new AudioCard(media: new[] { new MediaUrl(res.Location) }); audioCard.Title = res.Title; attachment = audioCard.ToAttachment(); } break; case ResourceType.Script: case ResourceType.DocumentPDF: case ResourceType.Text: case ResourceType.WebsiteUrl: case ResourceType.Json: { attachment = new HeroCard { Title = res.Title, Buttons = new List <CardAction> { new CardAction(ActionTypes.OpenUrl, title: $"Open {Enum.GetName(res.Type.GetType(), res.Type)}", value: res.Location) } }.ToAttachment(); } break; case ResourceType.Video: { var videoCard = new VideoCard(media: new[] { new MediaUrl(res.Location) }); videoCard.Title = res.Title; attachment = videoCard.ToAttachment(); } break; default: break; } return(attachment); }).ToList(); return(activity); }