Dicas de .NET
Como criar e publicar uma Azure Function em C# para consultar o mercado de ações
30/11/2025
231 visualizações
Sobre o Vídeo
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
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
Notas Importantes
Links
Azurite (Storage local)
https://github.com/Azure/Azurite
Azure Functions Core Tools
https://learn.microsoft.com/azure/azure-functions/functions-run-local
Timer trigger (cron)
https://learn.microsoft.com/azure/azure-functions/functions-bindings-timer
Alpha Vantage
Portal Azure
Preços Azure Functions
https://azure.microsoft.com/pt-pt/pricing/details/functions/#pricing
Resend Github
https://github.com/resend/resend-dotnet/
Resend Nuget
https://www.nuget.org/packages/Resend
Portal Resend
Instalar o AZ CLI
https://learn.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest
Email temporário
Comandos usados
az login
# criar o resource group...
az group create --name alpha-quote-rg --location eastus
# criar o storage account
az storage account create --name alphaquotestorage --location eastus --resource-group alpha-quote-rg --sku Standard_LRS
# criar a function app
az functionapp create --name alphaquotefuncapp --resource-group alpha-quote-rg --storage-account alphaquotestorage --consumption-plan-location eastus --runtime dotnet --functions-version 4 --os-type Windows
# testar se foi criado
az functionapp list --resource-group alpha-quote-rg --output table
# publicar a functionapp...
func azure functionapp publish alphaquotefuncapp
# publicar app settings...
az functionapp config appsettings set --name alphaquotefuncapp --resource-group alpha-quote-rg --settings "RESEND_API_KEY=seu_valor_aqui" "ALPHA_VANTAGE_API_KEY=seu_valor_aqui"
# deletar tudo o que foi criado...
az group delete --name alpha-quote-rg
# listar e exibir recursos
az resource list --resource-group alpha-quote-rg --output table
az resource show --name <nome> --resource-group alpha-quote-rg
Tecnologias e Tags
.NET Core
C#
Azure
azure functions
c#
.net 8
timer trigger
azure functions core tools
azurite
vs code
resend
alpha vantage
mercado de ações
ações
b3
petr4
petrobras
aapl
msft
googl
amzn
api de ações
stock market api
system.text.json
httpclient
bearer token
local.settings.json
secrets
cron expression
serverless
function app
debug local
envio de e-mail
html e-mail
publicação no azure
deploy azure
consumo gratuito