Elevenlabs with Health AI by Magda Machulska AI

 Oto **szczegółowy, aktualny (stan styczeń 2026)** przykład integracji **ElevenLabs Conversational AI Voice Agent** z **Twilio** – skupiamy się na dwóch najpopularniejszych scenariuszach w projektach health AI:

1. **Najprostszy i najszybszy sposób** → natywna integracja ElevenLabs + Twilio (bez własnego serwera WebSocket)
2. **Bardziej elastyczny/custom** → własny serwer z outbound call + przekazywanie parametrów personalizowanych (np. imię pacjenta, ostatnia anomalia)

### 1. Najłatwiejsza droga – Natywna integracja w panelu ElevenLabs (rekomendowana na start)

ElevenLabs od połowy 2025 mocno uprościł integrację z Twilio – teraz robisz to prawie bez kodu.

**Kroki (czas: ~15–30 min):**

1. Wejdź w ElevenLabs → **Agents** → wybierz lub stwórz swojego Voice Agenta  
   (najlepiej model Flash v2.5 lub Turbo v2.5 dla najniższego opóźnienia ~150–300 ms)

2. Przejdź do zakładki **Phone Numbers** → **Add Phone Number** → **Twilio**

3. Podaj dane z konta Twilio:
   - **Account SID**
   - **Auth Token**
   - Numer telefonu Twilio (który ma włączone voice capabilities)

4. ElevenLabs sam skonfiguruje webhooki w Twoim Twilio (Voice → Configure → A call comes in → Webhook)

5. Przypisz agenta do numeru (dropdown)

6. Test outbound (najważniejsze dla monitoringu!):
   - Kliknij **Outbound call** (prawy górny róg)
   - Wybierz agenta
   - Wpisz numer pacjenta
   - (opcjonalnie) dodaj **custom parameters** → np.:
     ```
     patient_name: "Anna Kowalska"
     last_reading: "ciśnienie 158/96"
     anomaly_type: "wysokie ciśnienie"
     ```
   - Kliknij **Send Test Call**

**Co się dzieje pod spodem?**  
ElevenLabs wywołuje Twilio API → robi outbound call → łączy się z Twoim agentem → przekazuje custom parameters do promptu/system promptu agenta.

**Przykład promptu systemowego w agencie (bardzo ważne dla health!):**
```text
Jesteś empatycznym asystentem medycznym o imieniu Maja.
Zawsze mów spokojnie, ciepło i powoli.
Używaj imienia pacjenta: {{patient_name}}
Odwołuj się do ostatniego pomiaru: {{last_reading}}
Nigdy nie diagnozuj, tylko pytaj o samopoczucie i sugeruj kontakt z lekarzem przy anomalii.
Jeśli pacjent potwierdzi problem → powiedz: "Zaraz przekieruję Cię do zespołu medycznego" i zakończ rozmowę.
```

To najszybszy sposób na prototyp w health AI – zero własnego serwera.

### 2. Zaawansowany wariant – Programowy outbound call z własnym backendem

Kiedy chcesz pełną kontrolę (np. masowe wywołania z bazy pacjentów po wykryciu anomalii).

**Architektura (najpopularniejsza w 2026):**

```
Twoja aplikacja (Node.js / Python / Go)  
   ↓ (POST do ElevenLabs API)
ElevenLabs /v1/convai/twilio/outbound-call  
   ↓
Twilio → dzwoni do pacjenta  
   ↔ (WebSocket bidirectional audio)
ElevenLabs Agent (rozmowa w czasie rzeczywistym)
```

**Przykład – Node.js (Express) – outbound call z parametrami**

```javascript
const express = require('express');
const axios = require('axios');
require('dotenv').config();

const app = express();
app.use(express.json());

const ELEVENLABS_API_KEY = process.env.ELEVENLABS_API_KEY;
const AGENT_ID = 'twoj_agent_id_z_elevenlabs'; // np. p9X... 

// Endpoint do wywołania outbound do pacjenta po wykryciu anomalii
app.post('/api/health-alert-call', async (req, res) => {
  const { patientPhone, patientName, anomaly, lastValue } = req.body;

  if (!patientPhone) {
    return res.status(400).json({ error: 'Brak numeru telefonu' });
  }

  try {
    const response = await axios.post(
      'https://api.elevenlabs.io/v1/convai/twilio/outbound-call',
      {
        agent_id: AGENT_ID,
        phone_number: patientPhone,           // +48500123456
        // Opcjonalne – custom variables dostępne w agencie jako {{variable}}
        variables: {
          patient_name: patientName || 'Pacjencie',
          anomaly_type: anomaly || 'nieznana anomalia',
          last_measurement: lastValue || '-',
          current_time: new Date().toLocaleString('pl-PL')
        },
        // Można nadpisać pierwszy komunikat (opcjonalne)
        // first_message: `Cześć ${patientName}, widzę że...`
      },
      {
        headers: {
          'xi-api-key': ELEVENLABS_API_KEY,
          'Content-Type': 'application/json'
        }
      }
    );

    res.json({
      success: true,
      call_id: response.data.call_id,
      message: 'Rozmowa zainicjowana'
    });
  } catch (error) {
    console.error(error?.response?.data);
    res.status(500).json({ error: 'Błąd podczas inicjowania połączenia' });
  }
});

app.listen(3000, () => console.log('Serwer Health AI → Twilio → ElevenLabs działa na 3000'));
```

**Jak wywołać z Twojego systemu monitoringu?**

```bash
curl -X POST http://localhost:3000/api/health-alert-call \
  -H "Content-Type: application/json" \
  -d '{
    "patientPhone": "+48500123456",
    "patientName": "Anna Kowalska",
    "anomaly": "wysokie ciśnienie",
    "lastValue": "158/96 o 14:32"
  }'
```

### Porównanie – co wybrać w Health AI?

| Sposób                        | Czas wdrożenia | Elastyczność | Koszt serwera | Personalizacja parametrów | Polecam dla...                     |
|-------------------------------|----------------|--------------|---------------|----------------------------|-------------------------------------|
| Natywna w panelu ElevenLabs   | 15–30 min      | ★★☆          | Nie potrzeba  | Dobra                      | Prototyp, małe serie pacjentów      |
| Własny backend + API outbound | 1–4 dni        | ★★★★★        | Tak           | Bardzo wysoka              | Produkcja, masowe alerty, RAG       |

**Najważniejsze uwagi bezpieczeństwa (healthcare!):**
- Używaj tylko numerów z **HIPAA/BAA** zgodnym planem Twilio (dostępny)
- Logi rozmów → włącz tylko jeśli masz zgodę i anonimizację
- Nagrywanie – domyślnie wyłączone w ElevenLabs, ale sprawdź
- Rate limits → outbound calls mają limity → planuj kolejkowanie

Powodzenia z wdrożeniem!  
Jeśli chcesz wersję w Pythonie, Go lub konkretny flow z wykryciem anomalii → daj znać 🚀

Comments

Popular posts from this blog

Health AI Mobile Hospital Nest

Health AI by Magda Machulska

Health AI by PZC Consulting AI