/// <summary> /// Send a message to cleverbot and get a response to it. Consider using <see cref="GetResponseAsync(string)"/> /// </summary> /// <param name="message">your message sent to cleverbot</param> /// <returns>response from the cleverbot.com api</returns> //[Obsolete("Use GetResponseAsync instead.")] //public CleverbotResponse GetResponse(string message) //{ // if(!Valid) // { // return null; // } // var result = CleverbotResponse.CreateAsync(message, "", ApiKey).GetAwaiter().GetResult(); // ConversationId = result?.ConversationId ?? ConversationId; // return result; //} /// <summary> /// Send a message to cleverbot asynchronously and get a response. /// </summary> /// <param name="message">your message sent to cleverbot</param> /// <returns>response from the cleverbot.com api</returns> public async Task <CleverbotResponse> GetResponseAsync(string message) { if (!Valid) { return(null); } var result = await CleverbotResponse.CreateAsync(message, ConversationId, ApiKey).ConfigureAwait(false); ConversationId = result?.ConversationId ?? ConversationId; return(result); }
internal static async Task <CleverbotResponse> CreateAsync(string message, string conversationId, string apiKey) { HttpClient c = new HttpClient(); string conversationLine = (string.IsNullOrWhiteSpace(conversationId) ? "" : $"&cs={conversationId}"); byte[] bytesReceived = await c.GetByteArrayAsync($"https://www.cleverbot.com/getreply?key={ apiKey }&wrapper=cleverbot.net&input={ message }{ conversationLine }").ConfigureAwait(false); if (bytesReceived == null) { return(null); } string result = Encoding.UTF8.GetString(bytesReceived, 0, bytesReceived.Length); CleverbotResponse response = JsonConvert.DeserializeObject <CleverbotResponse>(result); if (response == null) { return(null); } response.apiKey = apiKey; response.CreateInteractionsList(); return(response); }