using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
namespace Invice.BCFunctions
{
public static class BusinessCentralIntegration
{
[FunctionName("ProcessBusinessCentralData")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
// Process the data from Business Central
// This is where you would implement your custom logic
string responseMessage = $"Processed data successfully at {DateTime.Now}";
return new OkObjectResult(responseMessage);
}
}
}
procedure CallAzureFunction(payload: JsonObject): JsonObject
var
client: HttpClient;
request: HttpRequestMessage;
response: HttpResponseMessage;
content: HttpContent;
contentHeaders: HttpHeaders;
result: JsonObject;
payloadText: Text;
resultText: Text;
begin
// Convert payload to text
payload.WriteTo(payloadText);
// Prepare the request
request.Method := 'POST';
request.SetRequestUri('https://your-function-app.azurewebsites.net/api/ProcessBusinessCentralData?code=your-function-key');
// Set up the content
content.WriteFrom(payloadText);
content.GetHeaders(contentHeaders);
contentHeaders.Remove('Content-Type');
contentHeaders.Add('Content-Type', 'application/json');
request.Content := content;
// Send the request
client.Send(request, response);
// Process the response
response.Content.ReadAs(resultText);
result.ReadFrom(resultText);
exit(result);
end;