Criando uma Azure Function para verificar preços de ações (C#)
Azure Functions em C#: consulte ações e envie por e-mail com Resend (Parte 1)
Crie uma Function em .NET com Timer Trigger, consuma a API Alpha Vantage e mande a cotação por e-mail
Neste passo a passo você vai criar uma Azure Function em C# (.NET) com Timer Trigger para consultar a cotação de ações na API Alpha Vantage e enviar um e-mail com o último fechamento usando o serviço Resend. O vídeo cobre a instalação das ferramentas, criação do projeto com Azure Functions Core Tools, configuração de secrets no local.settings.json, debug local com Azurite, parsing do JSON (System.Text.Json), montagem de HTML e envio via HTTP (sem SDK). Ao final, é mostrado o e-mail recebido com a cotação.
O que você vai aprender:
- Instalar e validar Azure Functions Core Tools e Azurite
- Criar Function App (.NET) e Timer Trigger (cron com segundos)
- Obter e configurar API Keys (Alpha Vantage e Resend) em local.settings.json
- Consumir a API TIME_SERIES_DAILY do Alpha Vantage
- Parsear JSON com propriedades "peculiares" (Time Series com datas e "4. close")
- Gerar HTML de e-mail e enviar via Resend com HttpClient (Authorization Bearer)
- Debug local no VS Code com breakpoints
- Entender cuidados: limites da API (25 req/dia na camada free), bounce de e-mails temporários
Pré-requisitos:
- Node.js e npm
- NET SDK 8 instalado
- VS Code com extensões C#, Azure Functions e Azure Resources
- Conta Resend com domínio verificado (para envio)
- Chave gratuita da Alpha Vantage
Comandos-chave usados:
- npm i -g azure-functions-core-tools@4
- npm i -g azurite
- azurite --version
- func --version
- dotnet --list-sdks
- func init nome --worker-runtime dotnet --target-framework net8.0
- func new --name FunctionName --template "Timer trigger"
- F5 (debug no VS Code)
Observações:
- Não versionar local.settings.json (contém segredos; já está no .gitignore por padrão)
- A Alpha Vantage free impõe limites (25 requisições/dia); evite intervalos muito curtos em testes
- Alguns provedores bloqueiam e-mails temporários; prefira um e-mail real verificado no domínio do Resend
---
### Capítulos
00:00:00 API Alpha Vantage e recursos na descrição
00:02:31 Checando .NET e alvo em .NET 8
00:02:54 Organização de pastas do projeto
00:03:17 Instalando Azure Functions Core Tools (npm)
00:04:37 Instalando o Azurite (Storage local)
00:06:23 Preços e camada gratuita do Azure Functions
00:07:36 dotnet new vs func init; criando o projeto
00:09:38 Verificando SDKs do .NET
00:12:22 Criando a Function (func new) com Timer Trigger
00:16:22 Cron com 6 campos (inclui segundos)
00:18:31 Escolha de ativos (Petrobras, Apple, etc.)
00:19:40 Extensões VS Code recomendadas
00:21:07 Configurando Resend e gerando API Key
00:23:02 Adicionando Resend API Key no local.settings.json
00:26:17 Gerando API Key gratuita (limites da Alpha Vantage)
00:30:22 Documentação da Alpha Vantage e endpoints
00:31:30 TIME_SERIES_DAILY e base URL
00:35:37 Async/await e EnsureSuccessStatusCode
00:36:21 Subindo o Azurite e preparando o debug
00:37:01 Ajustando o timer para 2 minutos
00:42:00 Parse com JsonDocument e extração do último fechamento
00:45:03 Construindo o HTML do e-mail
00:47:03 Generalizando para "stock" (dinâmico)
00:47:31 Método de envio de e-mail via Resend
00:48:27 Payload JSON e header Authorization (Bearer)
00:51:34 Debug do envio; conferindo valores
00:57:12 Serialização e SendAsync
00:58:20 Verificando logs do Resend