/// <summary> /// Serialize a ConversationalResponseItems object into a string for SQL. /// </summary> /// <param name="cri">The ConversationalResponseItems object to serialize.</param> /// <returns>A string representing a ConversationalResponseItems object.</returns> public static string Serialize(ConversationalResponseItems cri) { StringBuilder serializePayload = new StringBuilder(); serializePayload.Append("{"); foreach (ConversationalResponseItem responseItem in cri.ResponseItems) { serializePayload.Append(responseItem.To.ToString()); serializePayload.Append(":"); serializePayload.Append("\""); serializePayload.Append(responseItem.Response); serializePayload.Append("\""); serializePayload.Append(":"); serializePayload.Append(responseItem.AltResponse); serializePayload.Append(":"); serializePayload.Append(responseItem.EngineCommand); serializePayload.Append(":"); serializePayload.Append(responseItem.VisibilityOptions); serializePayload.Append("||||"); } serializePayload.Append("}"); return(serializePayload.ToString()); }
/// <summary> /// Create a new ConversationalItem /// </summary> /// <param name="botname">The botname for the brains</param> /// <param name="conversationID">The Conversation_ID for this conversation</param> /// <param name="say">What the bot says to the user</param> /// <param name="cri">The responses alloted to the user to respond</param> public ConversationalItem(string botname, int conversationID, string say, ConversationalResponseItems cri) { this._botname = botname; this._conversationID = conversationID; this._say = say; this._cri = cri; }
/// <summary> /// DeSerialize a string into a ConversationalResponseItems object. /// </summary> /// <param name="payload">The string to de-serialize.</param> /// <returns>A parsed ConversationalResponseItems object from the string.</returns> public static ConversationalResponseItems DeSerialize(string payload) { string rawData = payload.Substring(1, payload.Length - 2); string[] seperator = new string[1] { "||||" }; string[] splitdata = rawData.Split(seperator, StringSplitOptions.RemoveEmptyEntries); ConversationalResponseItems returnCRI = new ConversationalResponseItems(); foreach (string data in splitdata) { string[] responseItemData = data.Split(':'); string[] args = { "", "", "" }; for (int i = 0; i < 3; i++) { if (responseItemData.Length > i + 2) { args[i] = responseItemData[i + 2]; } } returnCRI.AddResponse(int.Parse(responseItemData[0]), responseItemData[1].Substring(1, responseItemData[1].Length - 2), args[0], args[1], args[2]); } return(returnCRI); }
public void UpdateConversation(string bot_name, int id, string say, ConversationalResponseItems cri) { SQLiteCommand command = _SQL.CreateCommand(); command.CommandText = "UPDATE " + bot_name + " SET conversation_say = $say, conversation_responseitems = $cri WHERE conversation_id = " + id.ToString(); command.Parameters.AddWithValue("$say", say); command.Parameters.AddWithValue("$cri", ConversationalResponseItems.Serialize(cri)); command.ExecuteNonQuery(); }
public void AddNewConversation(string bot_name, string say, ConversationalResponseItems items) { SQLiteCommand addNewResponseCommand = _SQL.CreateCommand(); addNewResponseCommand.CommandText = "INSERT INTO " + bot_name + " (conversation_say, conversation_responseitems) VALUES($say, $items)"; addNewResponseCommand.Parameters.AddWithValue("$say", say); addNewResponseCommand.Parameters.AddWithValue("$items", ConversationalResponseItems.Serialize(items)); addNewResponseCommand.ExecuteNonQuery(); }
public ConversationalResponseItems GetBotCRI(string bot_name, int conversationID) { SQLiteCommand command = _SQL.CreateCommand(); command.CommandText = "SELECT conversation_responseitems FROM " + bot_name + " WHERE conversation_id = " + conversationID.ToString(); SQLiteDataReader reader = command.ExecuteReader(); reader.Read(); return(ConversationalResponseItems.DeSerialize(reader.GetString(0))); }
/// <summary> /// Get a ConversationalItem from a certain point in the conversation by specifing an ID /// </summary> /// <param name="bot_name">The bot to retrieve the specific ConversationalItem from</param> /// <param name="id">The ID of the conversational item needed</param> /// <returns>The ConversationalItme or null</returns> public ConversationalItem GetBotConversationByID(string bot_name, int id) { SQLiteCommand command = _SQL.CreateCommand(); command.CommandText = "SELECT * FROM " + bot_name + " WHERE conversation_id = " + id.ToString(); SQLiteDataReader reader = command.ExecuteReader(); if (reader.HasRows) { reader.Read(); return(new ConversationalItem(bot_name, reader.GetInt32(0), reader.GetString(1), ConversationalResponseItems.DeSerialize(reader.GetString(2)))); } else { return(null); } }