Bot de onboarding automático com Inteligência Artificial para a The100s, desenvolvido com Rasa (open-source) e integração com Microsoft Teams.
- Descrição do Projeto
- Arquitetura do Sistema
- Pré-requisitos
- Instalação
- Configuração do Azure Bot
- Correr Localmente com ngrok
- Testar no Microsoft Teams
- Estrutura do Projeto
- Como Contribuir
- Próximos Passos
O Bot de Onboarding da The100s é um assistente virtual inteligente que automatiza e melhora o processo de integração de novos colaboradores. O bot responde em Português de Portugal e guia os novos colaboradores através de todas as etapas do onboarding.
- 👋 Boas-vindas personalizadas — Saúda o novo colaborador pelo nome
- 🏢 Informações da empresa — Missão, visão, valores e cultura da The100s
- 🎁 Benefícios — Informações sobre seguro de saúde, férias, subsídios, etc.
- 📄 Documentos — Links para manual do colaborador, código de conduta, contratos
- 🎬 Vídeo de boas-vindas — Acesso ao vídeo institucional de boas-vindas
- 📝 Quiz de conhecimento — Teste de conhecimento sobre a empresa
- 📅 Agendamento de reuniões — Integração com Microsoft Calendar (via Graph API)
- 🖥️ Suporte TI — Informações e contactos de helpdesk
- 👥 Apresentação da equipa — Diretório e organigrama da empresa
- ❓ FAQ — Perguntas frequentes sobre o início de funções
- 💬 Feedback — Recolha de feedback sobre o processo de onboarding
- 👤 Escalamento humano — Direcionamento para equipa de RH
┌─────────────────────────────────────────────────────┐
│ Microsoft Teams │
│ (Canal de comunicação principal) │
└───────────────────────┬─────────────────────────────┘
│ Bot Framework Connector
▼
┌─────────────────────────────────────────────────────┐
│ Rasa Server (porta 5005) │
│ ┌─────────────────┐ ┌─────────────────────────┐ │
│ │ Rasa NLU │ │ Rasa Core │ │
│ │ (spaCy pt) │ │ (Dialogue Management) │ │
│ │ - DIETClassif. │ │ - MemoizationPolicy │ │
│ │ - EntityMapper │ │ - RulePolicy │ │
│ │ - FallbackCls. │ │ - TEDPolicy │ │
│ └─────────────────┘ └─────────────────────────┘ │
└───────────────────────┬─────────────────────────────┘
│
┌─────────┴──────────┐
▼ ▼
┌─────────────────────┐ ┌────────────────────────┐
│ Action Server │ │ PostgreSQL │
│ (porta 5055) │ │ (Tracker Store) │
│ - Custom Actions │ │ - Histórico de conv. │
│ - Graph API calls │ │ - Estado dos slots │
└─────────────────────┘ └────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ Microsoft 365 (via Graph API) │
│ Outlook Calendar | Outlook Email │
└─────────────────────────────────────────────────────┘
| Componente | Tecnologia |
|---|---|
| Bot Framework | Rasa 3.x (open-source) |
| Linguagem | Python 3.10 |
| Canal Principal | Microsoft Teams |
| NLU | spaCy (pt_core_news_md) + DIETClassifier |
| Email/Calendário | Microsoft Graph API |
| Base de Dados | PostgreSQL (tracker store) |
| Containerização | Docker + Docker Compose |
Antes de começar, certifique-se de que tem instalado:
- Python 3.10 — Download
- Docker e Docker Compose — Download Docker Desktop
- Git — Download
- ngrok (para testes locais com Teams) — Download
- Conta Azure com permissões para criar Bot Services — Portal Azure
git clone https://github.com/PedroGGomess/onboarding-bot.git
cd onboarding-botcp .env.example .envEdite o ficheiro .env com as suas credenciais:
MICROSOFT_APP_ID=<o-seu-app-id>
MICROSOFT_APP_PASSWORD=<a-sua-app-password>
DB_HOST=localhost
DB_PORT=5432
DB_NAME=onboarding_bot
DB_USER=postgres
DB_PASSWORD=postgres
AZURE_TENANT_ID=<o-seu-tenant-id>
AZURE_CLIENT_ID=<o-seu-client-id>
AZURE_CLIENT_SECRET=<o-seu-client-secret>python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windowspip install -r requirements.txt
python -m spacy download pt_core_news_mdrasa train# Terminal 1
rasa run actions --port 5055# Terminal 2
rasa run --enable-api --cors "*" --credentials credentials.yml --endpoints endpoints.yml# Construir e iniciar todos os serviços
docker-compose up --build
# Treinar o modelo (primeira vez)
docker-compose exec rasa-server rasa train
# Verificar logs
docker-compose logs -f# Interface de linha de comandos interativa
rasa shell
# Testar via API REST
curl -X POST http://localhost:5005/webhooks/rest/webhook \
-H "Content-Type: application/json" \
-d '{"sender": "teste", "message": "olá"}'- Aceda ao Portal Azure
- Clique em "Criar um recurso" → pesquise "Azure Bot"
- Preencha os campos:
- Nome do bot:
the100s-onboarding-bot - Subscrição: Selecione a sua subscrição
- Grupo de recursos: Crie ou selecione um existente
- Plano de preços: F0 (gratuito para desenvolvimento)
- Microsoft App ID: Selecione "Criar novo Microsoft App ID"
- Nome do bot:
- Clique em "Rever + criar" → "Criar"
Após a criação:
- Aceda ao bot criado → "Configuração"
- Copie o Microsoft App ID para o
.env - Clique em "Gerir" ao lado do App ID
- Aceda a "Certificados e segredos" → "Novo segredo do cliente"
- Copie o valor do segredo para
MICROSOFT_APP_PASSWORDno.env
- No Azure Bot → "Configuração"
- Em "Messaging endpoint", insira:
(use o URL do ngrok para testes locais)
https://<seu-domínio>/webhooks/botframework/webhook - Clique em "Guardar"
O ngrok cria um túnel seguro do internet para a sua máquina local, permitindo que o Microsoft Teams comunique com o bot.
# Após download, autenticar (obtenha o token em https://dashboard.ngrok.com)
ngrok authtoken <o-seu-token># Expõe a porta 5005 do Rasa Server
ngrok http 5005O ngrok fornecerá um URL similar a:
https://abc123.ngrok.io
No Azure Bot → Configuração, atualize o endpoint para:
https://abc123.ngrok.io/webhooks/botframework/webhook
# Terminal 1: Action Server
rasa run actions --port 5055
# Terminal 2: Rasa Server
rasa run --enable-api --cors "*" \
--credentials credentials.yml \
--endpoints endpoints.yml- No Azure Bot → "Canais"
- Clique em "Microsoft Teams"
- Aceite os termos e clique em "Guardar"
- Clique em "Testar no Microsoft Teams" no Azure Portal
- O Teams abrirá com uma conversa com o bot
- Envie uma mensagem para testar:
olá
Para disponibilizar o bot a toda a equipa:
- No Teams → "Aplicações" → "Gerir as suas aplicações"
- Selecione "Submeter uma aplicação"
- Siga as instruções para criar o manifesto da aplicação Teams
onboarding-bot/
├── 📄 config.yml # Pipeline NLU (spaCy + DIETClassifier)
├── 📄 domain.yml # Intents, slots, responses, actions
├── 📄 credentials.yml # Credenciais dos canais (Bot Framework)
├── 📄 endpoints.yml # Action server + tracker store
├── 📄 Dockerfile # Container do Rasa Server
├── 📄 docker-compose.yml # Orquestração de todos os serviços
├── 📄 requirements.txt # Dependências Python
├── 📄 .env.example # Exemplo de variáveis de ambiente
├── 📄 .gitignore # Ficheiros ignorados pelo Git
├── 📁 data/
│ ├── 📄 nlu.yml # Dados de treino NLU (português)
│ ├── 📄 stories.yml # Histórias de conversação
│ └── 📄 rules.yml # Regras determinísticas
├── 📁 actions/
│ ├── 📄 __init__.py # Init do módulo
│ ├── 📄 actions.py # Custom actions Python
│ ├── 📄 Dockerfile # Container do Action Server
│ └── 📄 requirements.txt # Dependências do action server
├── 📁 models/ # Modelos treinados (ignorado pelo Git)
└── 📁 tests/
└── 📄 test_actions.py # Testes unitários das actions
- Fork o repositório
- Crie uma branch para a sua funcionalidade:
git checkout -b feature/nova-funcionalidade
- Commit as suas alterações:
git commit -m "feat: adicionar nova funcionalidade de X" - Push para a branch:
git push origin feature/nova-funcionalidade
- Abra um Pull Request
Utilizamos Conventional Commits:
feat:— Nova funcionalidadefix:— Correção de bugdocs:— Documentaçãorefactor:— Refatorizaçãotest:— Testes
- 📧 Integração completa com Microsoft Graph API (envio de emails automáticos)
- 📅 Agendamento automático de reuniões via Outlook Calendar
- 👤 Sincronização com Azure AD para dados do colaborador
- 🧠 Adicionar mais dados de treino para melhorar a precisão
- 🔄 Pipeline de atualização contínua do modelo
- 📊 Dashboard de analytics de conversas
- 🔔 Notificações proativas (check-ins automáticos)
- 📋 Formulários dinâmicos para recolha de dados
- 🌐 Suporte multi-idioma (inglês)
- 📱 Integração com aplicação móvel
- 🔒 Implementação de autenticação SSO
- 📈 Monitorização e alertas com Azure Monitor
- 🚀 CI/CD pipeline com GitHub Actions
- ♻️ Infraestrutura como código (Terraform)
Este projeto é propriedade da The100s. Todos os direitos reservados.
Para questões sobre este projeto, contacte a equipa de IT da The100s:
- 📧 Email: it@the100s.com
- 💬 Teams: Equipa de IT