diff --git a/src/WhatsApp/AzureFunctionsConsole.cs b/src/WhatsApp/AzureFunctionsConsole.cs index 0d1f7b3..7824ee6 100644 --- a/src/WhatsApp/AzureFunctionsConsole.cs +++ b/src/WhatsApp/AzureFunctionsConsole.cs @@ -1,5 +1,6 @@ using System.Text; using System.Text.Json; +using System.Xml; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.Functions.Worker; @@ -18,6 +19,12 @@ class AzureFunctionsConsole( ILogger logger, IHostEnvironment environment) { + static readonly JsonSerializerOptions options = new(JsonSerializerDefaults.Web) + { + Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping, + WriteIndented = true + }; + [Function("whatsapp_console")] public async Task MessageConsole([HttpTrigger(AuthorizationLevel.Anonymous, ["post", "get"], Route = "whatsappcli")] HttpRequest req) { @@ -47,7 +54,9 @@ public async Task MessageConsole([HttpTrigger(AuthorizationLevel. using var reader = new StreamReader(req.Body, Encoding.UTF8); var json = await reader.ReadToEndAsync(); - logger.LogDebug("Received WhatsApp message: {Message}.", json); + logger.LogDebug("Received WhatsApp message: {Message}.", + environment.IsProduction() ? json : + JsonSerializer.Serialize(JsonSerializer.Deserialize(json), options)); // Try to deserialize the message sent by the console if (JsonSerializer.Deserialize(json, JsonContext.Default.Message) is Message message) diff --git a/src/WhatsApp/AzureFunctionsWebhook.cs b/src/WhatsApp/AzureFunctionsWebhook.cs index d52bd7b..d1cf03b 100644 --- a/src/WhatsApp/AzureFunctionsWebhook.cs +++ b/src/WhatsApp/AzureFunctionsWebhook.cs @@ -1,4 +1,5 @@ -using System.Diagnostics; +using System; +using System.Diagnostics; using System.Text; using System.Text.Json; using System.Text.Json.Nodes; @@ -10,6 +11,7 @@ using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using static Microsoft.IO.RecyclableMemoryStreamManager; namespace Devlooped.WhatsApp; @@ -32,6 +34,12 @@ class AzureFunctionsWebhook( IHostEnvironment hosting, ILogger logger) { + static readonly JsonSerializerOptions options = new(JsonSerializerDefaults.Web) + { + Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping, + WriteIndented = true + }; + readonly WhatsAppOptions functionOptions = functionOptions.Value; [Function("whatsapp_message")] @@ -39,7 +47,10 @@ public async Task Message([HttpTrigger(AuthorizationLevel.Anonymo { using var reader = new StreamReader(req.Body, Encoding.UTF8); var json = await reader.ReadToEndAsync(); - logger.LogDebug("Received WhatsApp message: {Message}.", json); + + logger.LogDebug("Received WhatsApp message: {Message}.", + hosting.IsProduction() ? json : + JsonSerializer.Serialize(JsonSerializer.Deserialize(json), options)); // Detect encrypted flow request setup for flows endpoints if (JsonSerializer.Deserialize(json) is { Data.Length: > 0, IV.Length: > 0, Key.Length: > 0 } encrypted)