Bot per gruppo WhatsApp scolastico che traduce automaticamente i messaggi dei contatti autorizzati in Italiano, Arabo Standard Moderno e Urdu.
- Ruby 3.x
- Docker e Docker Compose (solo per WAHA)
- API key per il provider LLM scelto (Claude o Gemini)
Il bot supporta due provider, configurabili in config.yml:
| Provider | Pro | Contro |
|---|---|---|
WAHA (waha) |
Gratuito, nessun account business | Non ufficiale, rischio ban |
Meta Cloud API (meta_cloud) |
Ufficiale, zero rischio ban, gratis fino a 1000 conv/mese | Richiede account Meta Business |
| Provider | Pro | Contro |
|---|---|---|
Gemini (gemini) |
Gratuito (15 req/min, 1M token/giorno), multimodale | Richiede account Google |
Claude (claude) |
Qualità eccellente, multimodale | A pagamento ($5 credito iniziale) |
bundle install- Vai su https://aistudio.google.com/apikey
- Fai login con il tuo account Google
- Clicca Create API Key
- Copia la chiave e configurala:
export GEMINI_API_KEY="..."- Vai su https://console.anthropic.com e crea un account
- Vai su API Keys nella sidebar
- Clicca Create Key, dagli un nome (es. "school-bot")
- Copia la chiave (mostrata solo una volta) e configurala:
export ANTHROPIC_API_KEY="sk-ant-..."Per continuare a usare Claude dopo il credito iniziale, aggiungi una carta in Settings > Billing.
- Scegli il provider WhatsApp:
provider: "waha"oprovider: "meta_cloud" - Scegli il provider LLM:
llm_provider: "gemini"ollm_provider: "claude" - Inserisci l'ID del gruppo WhatsApp in
group_id - Aggiungi i numeri autorizzati in
authorized_contacts(formato:39XXXXXXXXXX, senza@c.us)
Per trovare l'ID del gruppo, avvia il bot con
LOG_LEVEL=DEBUGe invia un messaggio nel gruppo: l'ID apparirà nei log.
docker-compose up -dApri http://localhost:3000/dashboard e scansiona il QR code con WhatsApp sul telefono.
ruby app.rb- Vai su https://developers.facebook.com/apps/ e crea una nuova app
- Aggiungi il prodotto "WhatsApp"
- Nella sezione WhatsApp > API Setup, trovi il Phone Number ID e puoi generare un Access Token
export WHATSAPP_ACCESS_TOKEN="your-permanent-token"provider: "meta_cloud"
meta_cloud:
phone_number_id: "IL_TUO_PHONE_NUMBER_ID"
verify_token: "una-stringa-segreta-a-tua-scelta"
api_version: "v21.0"- Esponi il bot su internet (es. con ngrok:
ngrok http 4567) - In Meta Developer Dashboard > WhatsApp > Configuration > Webhook
- URL:
https://tuo-url.ngrok.io/webhook - Verify token: lo stesso valore di
verify_tokeninconfig.yml - Sottoscrivi il campo "messages"
ruby app.rb- Un contatto autorizzato (es. una maestra) invia un messaggio nel gruppo
- Il provider (WAHA o Meta) inoltra il messaggio al bot via webhook
- Il bot verifica che il mittente sia nella lista autorizzati
- Il messaggio viene inviato all'LLM (Gemini o Claude) per la traduzione
- Le traduzioni vengono inviate nel gruppo
📚 *Traduzione / Translation*
🇮🇹 *Italiano:*
Domani non c'è scuola per lo sciopero dei trasporti.
🇸🇦 *العربية:*
غداً لا توجد مدرسة بسبب إضراب وسائل النقل.
🇵🇰 *اردو:*
کل ٹرانسپورٹ کی ہڑتال کی وجہ سے سکول نہیں ہوگا۔
- Il bot traduce solo i messaggi dei contatti nella lista
authorized_contacts - Supporta testo, immagini e PDF
- Per documenti e immagini, il bot fa prima un riassunto e poi lo traduce
- WAHA usa WhatsApp Web: il telefono deve rimanere connesso a internet
- Meta Cloud API: il telefono non deve restare connesso