public ChatbaseRequest GetChatbaseBodyRequest(CBBoxContent bodyContentModel, ChatbaseRequest cbRequest = null, string type = "", string message = "", bool notHandled = false, string intent = "") { if (cbRequest == null) { cbRequest = new ChatbaseRequest(); } var bodyContent = new CBBoxContent() { ApiKey = bodyContentModel.ApiKey, Platform = bodyContentModel.Platform, TimeStamp = bodyContentModel.TimeStamp, UserId = bodyContentModel.UserId, Version = bodyContentModel.Version, }; bodyContent.Type = (type == "") ? "agent" : type; bodyContent.Message = (message == "") ? "{{input.content}}" : message; bodyContent.Intent = (intent == "") ? "{{input.intent.name}}" : intent; bodyContent.NotHandled = (notHandled) ? notHandled : false; cbRequest.Messages.Add(bodyContent); return(cbRequest); }
public CBBoxContent EditChatbaseProperties() { var cbBoxContent = new CBBoxContent() { ApiKey = "{{config.chatbaseApiKey}}", UserId = "{{contact.identity}}", TimeStamp = "{{calendar.unixTimeMilliseconds}}", Platform = "{{config.chatbasePlatform}}", Version = "{{config.chatbaseVersion}}" }; Console.WriteLine("\nSelect which of the properties below you want to edit with (Y/N)\n"); #region Iteration through each propertie Console.ForegroundColor = ConsoleColor.DarkRed; Console.Write($"\t\tapi_key: {cbBoxContent.ApiKey} "); Console.ResetColor(); if (Console.ReadLine().ToString().ToUpper().Equals("Y")) { ClearCurrentLine(); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.Write("\t\tapi_key: "); cbBoxContent.ApiKey = Console.ReadLine(); } else { ClearCurrentLine(); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine($"\t\tapi_key: {cbBoxContent.ApiKey} "); } Console.ForegroundColor = ConsoleColor.DarkRed; Console.Write($"\t\tuser_id: {cbBoxContent.UserId} "); Console.ResetColor(); if (Console.ReadLine().ToUpper().Equals("Y")) { ClearCurrentLine(); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine("\t\tuser_id: "); cbBoxContent.UserId = Console.ReadLine(); } else { ClearCurrentLine(); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine($"\t\tuser_id: {cbBoxContent.UserId} "); } Console.ForegroundColor = ConsoleColor.DarkRed; Console.Write($"\t\ttime_stamp: {cbBoxContent.TimeStamp} "); Console.ResetColor(); if (Console.ReadLine().ToUpper().Equals("Y")) { ClearCurrentLine(); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.Write("\t\ttime_stamp: "); cbBoxContent.TimeStamp = Console.ReadLine(); } else { ClearCurrentLine(); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine($"\t\ttime_stamp: {cbBoxContent.TimeStamp} "); } Console.ForegroundColor = ConsoleColor.DarkRed; Console.Write($"\t\tplatform: {cbBoxContent.Platform} "); Console.ResetColor(); if (Console.ReadLine().ToUpper().Equals("Y")) { ClearCurrentLine(); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.Write("\t\tplatform: "); cbBoxContent.Platform = Console.ReadLine(); } else { ClearCurrentLine(); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine($"\t\tplatform: {cbBoxContent.Platform} "); } Console.ForegroundColor = ConsoleColor.DarkRed; Console.Write($"\t\tversion: {cbBoxContent.Version} "); Console.ResetColor(); if (Console.ReadLine().ToUpper().Equals("Y")) { ClearCurrentLine(); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.Write("\t\tversion: "); cbBoxContent.Version = Console.ReadLine(); } else { ClearCurrentLine(); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine($"\t\tversion: {cbBoxContent.Version} "); } Console.WriteLine(); Console.ResetColor(); #endregion return(cbBoxContent); }
public void InsertChatbaseRequests() { Console.WriteLine("What is the FULL PATH of the exported .json file?"); var path = Console.ReadLine(); while (!Path.GetExtension(path).Equals(".json")) { Console.Beep(); Console.Write("File is not a JSON. Retry? (Y/N): "); var answer = Console.ReadLine(); if (answer.ToUpper().Equals("Y")) { path = Console.ReadLine(); } else { break; } } if (Path.GetExtension(path).Equals(".json")) { try { var builderFlowJson = GetBuilderFlow(path); var flow = _flowFactory.Build(builderFlowJson); var cbRequestModel = new CBBoxContent(); Console.WriteLine("These are the properties from Chatbase requests body:\n"); Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine("\t\tapi_key: {{config.chatbaseApiKey}}"); Console.WriteLine("\t\tuser_id: {{contact.identity}}"); Console.WriteLine("\t\ttime_stamp: {{calendar.unixTimeMilliseconds}}"); Console.WriteLine("\t\tplatform: {{config.chatbasePlatform}}"); Console.WriteLine("\t\tversion: {{config.chatbaseVersion}}"); Console.ResetColor(); Console.Write("\nDo you want to configure it? (Y/N): "); var choice = Console.ReadLine(); if (choice.ToUpper().Equals("Y")) { cbRequestModel = _chatbaseExtension.EditChatbaseProperties(); } var agentMessages = new ChatbaseRequest(); var agentTag = new Tag() { Background = "#ffc700", CanChangeBackground = false, Id = "blip-tag-" + Guid.NewGuid().ToString(), Label = "Chatbase (Bot)", }; var userTag = new Tag() { Background = "#a88300", CanChangeBackground = false, Id = "blip-tag-" + Guid.NewGuid().ToString(), Label = "Chatbase (Usuario)", }; foreach (var box in flow.Boxes) { foreach (var item in box.Content) { agentMessages.Messages.Clear(); foreach (var customAction in item.Value.ContentActions) { if (customAction.Action != null) { if (customAction.Action.Settings.Type != ChatState.MIME_TYPE) { var agentMessage = ""; if (customAction.Action.Type != "SendMessage") { agentMessage = customAction.Action.Settings.RawContent; } else { switch (customAction.Action.Settings.Type) { case Select.MIME_TYPE: agentMessage = _limeAdapterExtension.QuickReplyToString(customAction.Action.Settings.Content); break; case MediaLink.MIME_TYPE: agentMessage = _limeAdapterExtension.MediaLinkToString(customAction.Action.Settings.Content); break; case Lime.Messaging.Contents.Input.MIME_TYPE: agentMessage = _limeAdapterExtension.LocationInputToString(customAction.Action.Settings.Content); break; case WebLink.MIME_TYPE: agentMessage = _limeAdapterExtension.WebLinkToString(customAction.Action.Settings.Content); break; case "application/vnd.lime.collection+json": agentMessage = _limeAdapterExtension.DocumentCollectionToString(customAction.Action.Settings.Content); break; default: agentMessage = customAction.Action.CardContent.Document.Content.ToString(); break; } } agentMessages = _chatbaseExtension.GetAgentBodyRequest(cbRequestModel, agentMessages, message: agentMessage); } } else if (customAction.Input != null) { if (customAction.Input.Bypass == false) { var cbRequestBody = _chatbaseExtension.GetChatbaseBodyRequest(cbRequestModel, type: "user", message: "{{input.content}}"); item.Value.LeavingCustomActions.Add(_chatbaseExtension.GetUserChatbaseCustomAction(cbRequestBody)); if (item.Value.Tags == null) { item.Value.Tags = new List <Tag>(); } item.Value.Tags.Add(userTag); } } } if (agentMessages.Messages.Count > 0) { item.Value.EnteringCustomActions.Add(_chatbaseExtension.GetAgentChatbaseCustomAction(agentMessages)); if (item.Value.Tags == null) { item.Value.Tags = new List <Tag>(); } if (!item.Value.Tags.Contains(agentTag)) { item.Value.Tags.Add(agentTag); } } } } flow.ParseProxyIntoFlow(); var serialized = string.Empty; foreach (var box in flow.Boxes) { var piece = JsonConvert.SerializeObject(box.Content); serialized = serialized + piece.Substring(1, piece.Length - 2) + ","; } serialized = "{" + serialized.Substring(0, serialized.Length - 1) + "}"; var exitName = path.Replace(".json", "_chatbase.json"); File.WriteAllText(exitName, serialized); Console.WriteLine($"File saved with Path {exitName}"); } catch (Exception e) { Console.WriteLine(e); } } }