Azure Function no Power Apps: passo a passo para uma integração personalizada

Em muitos projetos com Power Apps, chega um momento em que o conector pronto não resolve tudo. Às vezes você precisa validar um dado, consultar uma API externa ou simplesmente devolver uma resposta mais simples para o app.
Uma forma prática de resolver isso é usando Azure Function.
Neste exemplo, vamos mostrar um caso básico: o usuário informa um código no Power Apps, a Azure Function recebe esse valor e devolve uma resposta simples com status e mensagem.
A ideia aqui não é criar uma arquitetura complexa, mas sim mostrar o conceito funcionando de forma clara.
O cenário do exemplo
Vamos imaginar um aplicativo em Power Apps com um campo onde o usuário digita um código de cliente.
Ao clicar em um botão, o app chama uma Azure Function. Essa função verifica se o código foi informado e devolve uma resposta como:
- código válido;
- mensagem de sucesso;
- nome fictício do cliente.
Esse é um exemplo simples, mas suficiente para demonstrar como o Power Apps pode consumir uma lógica externa.
Estrutura da solução
O fluxo será este:
Power Apps → Azure Function → resposta em JSON → Power Apps
Passo 1: criar a Azure Function
No portal do Azure, crie uma Function App e depois uma função do tipo HTTP Trigger.
Para este exemplo, a função pode receber um parâmetro chamado code e retornar uma resposta simples.
Exemplo em C#:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using System.Text.Json;
namespace PowerAppsDemo;
public class ValidateCustomerCode
{
private readonly ILogger<ValidateCustomerCode> _logger;
public ValidateCustomerCode(ILogger<ValidateCustomerCode> logger)
{
_logger = logger;
}
[Function("ValidateCustomerCode")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req)
{
_logger.LogInformation("ValidateCustomerCode function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
var data = JsonSerializer.Deserialize<CustomerRequest>(requestBody);
if (string.IsNullOrWhiteSpace(data?.code))
{
return new BadRequestObjectResult(new
{
isValid = false,
message = "Código não informado"
});
}
return new OkObjectResult(new
{
isValid = true,
customerName = "Cliente Exemplo",
message = "Código validado com sucesso"
});
}
}
public class CustomerRequest
{
public string? code { get; set; }
}O que essa função faz?
Ela recebe um JSON com o campo code.
Se o valor não for enviado, retorna erro.
Se o valor existir, devolve uma resposta simples de sucesso.


Passo 2: testar a Function
Depois de publicar a função, copie a URL gerada pelo Azure e faça um teste.
Você pode testar com Postman ou pela própria área de teste do Azure.
Exemplo de body:
{
"code": "CLI-1001"
}Resposta esperada:
{
"isValid": true,
"customerName": "Cliente Exemplo",
"message": "Código validado com sucesso"
}Esse é um ótimo ponto para print no artigo:
- tela da Function no Azure;
- teste da requisição;
- retorno JSON.


Passo 3: criar o Custom Connector
No Power Apps, acesse Custom Connectors e crie um novo conector.
Você pode configurar manualmente ou importar uma definição OpenAPI, mas para um exemplo básico, o caminho manual já resolve bem.
Preencha:
Informações básicas
- Nome do conector
- Host da Azure Function
- Base URL
Segurança
Se estiver usando a Function Key, configure a autenticação conforme a necessidade do ambiente.
Definição
Crie uma ação do tipo POST apontando para a sua Function.
Por exemplo:
- Summary: Validar código do cliente
- Operation ID: ValidateCustomerCode
Request
Adicione um body com o campo:
- code → tipo string
Response
Mapeie os campos retornados:
- isValid
- customerName
- message
Esse momento também rende bons prints:
- tela inicial do Custom Connector;
- configuração da action;
- definição do request;
- exemplo da response.



Passo 4: usar o conector no Power Apps
Com o conector publicado, abra seu aplicativo no Power Apps e adicione:
- um Text Input para o código;
- um Botão para validar;
- uma Label para mostrar a resposta.
Supondo:
- campo de texto: txtCustomerCode
- conector: CustomerValidationConnector
No botão, use algo assim:
Set(
varValidation,
CustomerValidationConnector.ValidateCustomerCode(
{
code: txtCustomerCode.Text
}
)
)Depois, em uma label, você pode exibir:
varValidation.message
E em outra:
varValidation.customerName
Se quiser, pode até mudar a cor de um ícone com base no retorno:
If(varValidation.isValid, Color.Green, Color.Red)
Aqui você já consegue vários prints interessantes:
- tela do app com campo e botão;
- fórmula do botão;
- resultado sendo exibido na label.

Conclusão
Usar Azure Function no Power Apps é uma forma simples e eficiente de criar integrações personalizadas. Mesmo em um cenário básico, já fica claro como essa abordagem ajuda a deixar o app mais limpo e a lógica mais organizada.
Para quem quer mostrar um exemplo prático em artigo, apresentação ou demonstração, esse fluxo é ideal: fácil de montar, fácil de entender e visualmente bom para capturas de tela.
Luiz Antonio Sgargeta é sócio fundador e CEO da Trinapse, consultoria brasileira de Microsoft 365 com quase duas décadas de operação, acumula mais de 20 anos em desenvolvimento de software e em ambientes corporativos de alta complexidade.
Ver maisVer menos
Trabalha com SharePoint desde o SharePoint Portal Server 2003 e com .NET desde a versão 1.0. Acompanhou a plataforma em todas as suas reinvenções, do portal de documentos on-premises ao SharePoint Online dentro do Microsoft 365, o que dá a ele uma leitura rara sobre o que muda de verdade e o que é apenas nome novo para o mesmo problema.
No início da carreira atuou em uma das maiores operações de e-commerce do país, em sistemas que não toleram degradação de performance nem indisponibilidade, essa origem definiu o critério que ele aplica até hoje: solução boa é a que sustenta volume real, integra com o legado que já existe e não quebra no pico.
Depois disso, passou por praticamente todo tipo de projeto corporativo, de portais e intranets de milhares de usuários a integrações críticas e automação de processos de ponta a ponta, sempre em grandes empresas e em desafios de alta exigência.
A marca do trabalho dele é a tradução entre tecnologia e negócio, levanta a necessidade real por trás do pedido do cliente, questiona o processo antes de automatizá-lo e desenha a solução pelo resultado esperado, não pela ferramenta disponível, é o que permite conversar com a diretoria sobre retorno e com o time técnico sobre arquitetura na mesma reunião.
Hoje lidera a frente comercial e estratégica da Trinapse e conduz a empresa no novo ciclo da inteligência artificial, com foco em agentes de IA e operação de processos assistida por IA para cooperativas de crédito, agronegócio e indústria. Escreve no blog da Trinapse desde 2019, com mais de 450 artigos sobre IA, SharePoint, Power Platform, Modern Workplace e transformação de processos, sempre a partir de projeto entregue e não de teoria.



