Naar de inhoud springen

Handleidingen

Eigen agent

Wilt u in plaats van de ingebouwde agent van volai uw eigen spraakplatform op een volai-nummer aansluiten - ElevenLabs Conversational AI in uw eigen workspace, Vapi, Retell, of gewoon een eigen Asterisk/FreeSWITCH-IVR? Deze pagina beschrijft beide richtingen: inkomende en uitgaande gesprekken. Bij uitgaande gesprekken betaalt u bovendien geen toeslag voor de agent van 2,50 kr/min (≈ 0,10 EUR) - de agent draait (en betaalt) u zelf bij uw eigen platform.

Kort overzicht

Inkomende gesprekken stelt u in door het nummer te routeren naar het SIP-adres van uw platform - geen nieuwe mechanica. Uitgaande gesprekken lopen via een kortstondige relayverbinding, omdat het platform zelf een lijn niet permanent als SIP-client kan registreren.

U heeft nodig: een volai-nummer, een API-sleutel (vk_...) en een account bij uw platform (ElevenLabs, Vapi, een eigen telefooncentrale...).

1Wanneer een eigen agent, wanneer de ingebouwde

Beide wegen lopen via hetzelfde nummer en hetzelfde tegoed - ze verschillen alleen in WIE de gesprekslogica draait en wat dat extra kost:

CriteriumIngebouwde agentEigen agent
Wie het gesprek aanstuurtWij - één systemPrompt, onze stem en onze ElevenLabs-workspace.U - elk platform, uw eigen prompt, uw eigen stem, uw eigen tools.
InstellenEén POST /v1/agents aanroep.De SIP-gegevens van het nummer + de configuratie van uw platform (deze pagina).
Gesprekskosten0,92 kr/min (≈ 0,04 EUR) uitgaand, 0,50 kr/min (≈ 0,02 EUR) inkomendhetzelfde - 0,92 kr/min (≈ 0,04 EUR) uitgaand, 0,50 kr/min (≈ 0,02 EUR) inkomend
Toeslag voor de agent+ 2,50 kr/min (≈ 0,10 EUR)geen - u betaalt alleen de gespreksminuten
Transcript, samenvatting, detectie van voicemailJa, automatisch.Nee - dat regelt uw eigen platform (of niet).

U betaalt geen toeslag voor de agent, maar u krijgt van ons ook niets extra gratis - uw eigen platform (ElevenLabs, Vapi...) betaalt u zelf, tegen de eigen tarieven. Wij rekenen alleen gespreksminuten op de volai-lijn aan, net als bij een SIP-client of de ingebouwde agent. De tarieven zijn exclusief btw, net als de hele prijslijst.

2Inkomende gesprekken naar uw eigen agent

Geen nieuwe mechanica - gewoon de bestaande mode: "sip" -routering (hetzelfde als voor uw eigen softphone, zie SIP) ) met het sipUri van uw platform. Voor een ElevenLabs SIP-trunknummer dat in UW EIGEN workspace is geregistreerd is dat een adres met hetzelfde nummer als uw volai-lijn:

bash
curl -X PATCH "https://volai.cz/v1/numbers/+420601234567" \
  -H "Authorization: Bearer vk_UW_SLEUTEL" \
  -H "Content-Type: application/json" \
  -d '{"routing": {"mode": "sip", "sipUri": "sip:+420601234567@sip.rtc.elevenlabs.io"}}'

En in uw ElevenLabs-account (Settings → Phone Numbers → Import → SIP trunk) registreert u dit nummer met inbound_trunk_config:

json
{
  "provider": "sip_trunk",
  "phone_number": "+420601234567",
  "label": "Mijn eigen agent",
  "inbound_trunk_config": {
    "allowed_addresses": ["81.31.45.0/24"],
    "media_encryption": "allowed"
  }
}

allowed_addresses hierboven is ons signaleringsbereik (81.31.45.0/24) - veiliger dan het algemene 0.0.0.0/0, dat een INVITE van overal toelaat. Beide laten het gesprek door, maar bij een import zonder inloggegevens is de allowlist de ENIGE controle - gebruik dus het bereik, niet 0.0.0.0/0.

Gebruikt u een ander platform dan ElevenLabs? Hetzelfde principe - zoek bij dat platform het SIP-adres op waarnaar het gesprek voor uw nummer moet worden gestuurd en zet dat in sipUri. Bij Vapi komt hetzelfde bereik in de gateways van de BYO-trunk.

Bij Vapi is het routeringsadres sip:<E164>@<credentialId>.sip.vapi.ai - <credentialId> vindt u bij uw BYO SIP-trunk in Vapi; een organisatie in de EU-regio gebruikt in plaats van sip.vapi.ai het domein sip.eu.vapi.ai. Het kale sip.vapi.ai hoort bij native Vapi-nummers en werkt niet voor een nummer van ons. Laat de gebruikersnaam en het wachtwoord bij de BYO-trunk leeg, Vapi herkent onze gesprekken aan het IP-adres in de gateways.

Voer in de gateways het bereik apart in als IP 81.31.45.0 en netmask 24. Met het standaardmasker 32 zou Vapi maar één adres toelaten en onze gesprekken weigeren.

3Uitgaande gesprekken van uw eigen agent (relay)

Dit is de omgekeerde richting - uw platform belt zelf naar buiten. De meeste spraak-AI-platforms (ook ElevenLabs) kunnen een telefoonlijn echter niet permanent als SIP-client registreren - ze sturen alleen één geauthenticeerd gesprek met de inloggegevens van uw lijn. Het telefoonnetwerk laat zo'n gesprek niet rechtstreeks door naar het doelnummer, daarom leidt u het via een kortstondige relayverbinding:

Waarom relay en niet rechtstreeks bellen

Het doelnummer rechtstreeks via de trunk bellen werkt via geen van beide mogelijke wegen: naar een nummer buiten ons netwerk komt het gesprek helemaal niet tot stand (het platform meldt een mislukking en nergens blijft een spoor achter), en naar een ander volai-nummer in ons netwerk wordt het alleen INTERN als anoniem gesprek doorgeschakeld - het verlaat ons netwerk nooit echt, ook al lijkt het een tot stand gekomen gesprek. Relay is de enige manier om een gesprek echt naar buiten te laten gaan.

1. Stel uw platform in op uw lijn

Haal de SIP-gegevens van uw lijn op:

bash
curl "https://volai.cz/v1/numbers/+420601234567/sip" \
  -H "Authorization: Bearer vk_UW_SLEUTEL"
json
{
  "server": "sip.volai.cz",
  "username": "123456",
  "password": "a1b2c3d4e5f6",
  "outboundTrunkAddress": "sip.volai.cz",
  "port": 5060,
  "transport": "tcp",
  "inboundSignallingCidrs": ["81.31.45.0/24"]
}

Het antwoord bevat server (voor de REGISTER van een softphone, zie SIP) en outboundTrunkAddress APART - ze zijn niet uitwisselbaar.

En stel outboundTrunkAddress - NIET server - in als uitgaande trunk van uw platform. Bij ElevenLabs gaat het om het outbound_trunk_config van het betreffende telefoonnummer (Settings → Phone Numbers → uw nummer → Outbound calling), precies in deze vorm:

json
{
  "outbound_trunk_config": {
    "address": "sip.volai.cz",
    "transport": "tcp",
    "media_encryption": "allowed",
    "credentials": {
      "username": "123456",
      "password": "a1b2c3d4e5f6"
    }
  }
}

Voer precies outboundTrunkAddress in

Het adres van de uitgaande trunk moet precies de waarde van outboundTrunkAddress uit het antwoord zijn - ongeacht of die gelijk is aan server. Een ander adres betekent dat het gesprek in het netwerk niet wordt gerouteerd en het platform meldt dit als 1011 sip request timed out - in de gespreksgeschiedenis blijft er niets van over.

2. Maak een relayverbinding aan

Vlak voor het gesprek (de verbinding heeft een korte levensduur, zie de limieten hieronder) roept u aan:

bash
curl -X POST https://volai.cz/v1/relay \
  -H "Authorization: Bearer vk_UW_SLEUTEL" \
  -H "Content-Type: application/json" \
  -d '{"to": "+420777123456", "from": "+420601234567"}'
json
{
  "id": "rl_4f2a91cd",
  "sipName": "volai_relay_2",
  "sipUri": "sip:volai_relay_2@sip.volai.cz",
  "expiresAt": 1756111760000,
  "callId": "c_9d4e2b7f"
}

Het nummer dat u wilt bellen geeft u aan ONS door in to - het platform ziet het nooit, het krijgt alleen de kale sipName uit het antwoord.

3. Laat uw platform de sipName bellen

De kale naam, niet de volledige SIP-URI

ElevenLabs to_number weigert een volledige SIP-URI met de melding “SipCallTo should be a phone number or SIP user, not a full SIP URI” - daarom geeft het antwoord hierboven sipName (de kale volai_relay_2) en sipUri (de volledige sip:volai_relay_2@sip.volai.cz) APART terug. Alleen de eerste hoort in to_number - nooit de volledige URI.

Bij ElevenLabs betekent dit bellen via /v1/convai/sip-trunk/outbound-call met to_number rechtstreeks ingesteld op de sipName:

json
{
  "agent_id": "agent_...",
  "agent_phone_number_id": "phnum_...",
  "to_number": "volai_relay_2"
}

agent_id vindt u bij uw agent in ElevenLabs, agent_phone_number_id is de phone_number_id van het geïmporteerde nummer - die staat in het antwoord van de import of in de lijst Phone numbers.

Gebruikt u een eigen SIP-client of PBX in plaats van ElevenLabs? Bel dan rechtstreeks de volledige sipUri als een gewoon SIP-gesprek - die beperking geldt alleen voor platforms die een kale naam willen zonder het voorvoegsel sip: .

4. Wat er daarna gebeurt

Het telefoonnetwerk neemt het gesprek aan onder de naam volai_relay_2, schakelt het door naar uw to en stelt het zichtbare nummer van de beller in op uw from - de gebelde ziet op het display uw volai-lijn en niet de interne naam van de relayslot (als het nummer eigen relaynamen heeft - zie Facturering hieronder, anders ziet de gebelde het demonummer van volai). Na afloop van het gesprek komt de lease vrij en worden de minuten aangerekend zoals bij een gewoon uitgaand gesprek - 0,92 kr/min (≈ 0,04 EUR), geen toeslag voor de agent.

Het antwoord op het belverzoek komt pas na de volledige beltijd (gerust tientallen seconden) - dat is geen fout, ook al zou een korte timeout aan uw kant op dat moment als een mislukking overkomen terwijl het gesprek loopt.

4Problemen oplossen

De meest voorkomende meldingen bij een eigen agent en wat u eraan kunt doen:

MeldingOorzaakOplossing
1011 sip request timed outHet adres van de uitgaande trunk is niet outboundTrunkAddress.Stel in ElevenLabs outbound_trunk_config.address in op outboundTrunkAddress uit het antwoord met de SIP-gegevens, niet op server.
SipCallTo should be a phone number or SIP user, not a full SIP URIto_number bevat de volledige sipUri in plaats van de kale naam.In to_number hoort alleen sipName uit het antwoord van POST /v1/relay.
Het gesprek eindigt op het platform meteen (bij ElevenLabs failed), bij ons nietsU heeft het telefoonnummer rechtstreeks gebeld, niet via relay.Maak een relayverbinding aan (POST /v1/relay) en bel de teruggegeven sipName.
max auth retry attempts reached for SIP inviteHet platform kwam niet door de aanmelding: ofwel kloppen de gebruikersnaam of het wachtwoord van de uitgaande trunk niet, ofwel kwam het gesprek binnen als telefoonnummer in plaats van als sipName - het netwerk vraagt dan om een nieuwe aanmelding die het platform niet kan doorstaan.Neem de gebruikersnaam en het wachtwoord exact over uit de SIP-gegevens van het nummer (username, password). Zet in to_number alleen sipName uit POST /v1/relay en start het gesprek via de API (POST /v1/convai/sip-trunk/outbound-call) of de MCP-tool make_outbound_call van ElevenLabs, niet via een formulier dat alleen telefoonnummers accepteert. Een lease wacht op het gesprek slechts ttlSecs (standaard 120 s).
404 from_number_not_ownedfrom in POST /v1/relay is niet uw eigen volai-nummer.Vul bij from precies het volai-nummer in waarmee u belt.
400 relay_lease_limitOp dit nummer (1) of account (2) loopt al een actieve lease.Wacht tot de lease vrijkomt, of annuleer een ongebruikte (DELETE /v1/relay/{id}).
503 capacity_busyDe gedeelde pool met relayslots is op dit moment vol.Er wordt niets in rekening gebracht - probeer het zo meteen opnieuw.
Inkomend gesprek gaat niet overHet nummer is niet geïmporteerd in ElevenLabs, allowed_addresses laat ons bereik niet toe, of de routering is in volai niet opgeslagen.Controleer alle drie de stappen hierboven; als de telefooncentrale om 401 vraagt, vul dan de gebruikersnaam en het wachtwoord bij de routering in.
De gebelde ziet het nummer van volai in plaats van het uweHet nummer heeft nog geen eigen relaynamen. Die worden direct na de aankoop aangemaakt, deze keer is dat niet gelukt.Het volgende gesprek herhaalt de aanmaak vanzelf. Ziet de gebelde na een uur nog steeds het nummer van volai, schrijf dan naar de support.
Een herhaald gesprek wordt direct geweigerd (SIP 603)Het platform heeft dezelfde sipName opnieuw gebeld, meestal na een onbeantwoord gesprek. Een lease verbindt maar één gesprek.Maak vóór elke poging, ook bij een herhaling na een onbeantwoord gesprek, een nieuwe lease aan (POST /v1/relay) en zet het automatisch opnieuw bellen in uw platform uit.

5Facturering

Een uitgaand gesprek via relay wordt tegen hetzelfde tarief aangerekend als een gewoon uitgaand gesprek - 0,92 kr/min (≈ 0,04 EUR) - zonder enige toeslag voor de agent. De tarieven zijn exclusief btw, net als de hele prijslijst.

Het aantal gelijktijdige gesprekken is beperkt (zie de limieten hieronder): maximaal 1 actief gesprek per nummer van u en maximaal 2 per account tegelijk.

De gebelde ziet uw volai-lijn ALLEEN als het nummer eigen relaynamen (relayNames) heeft - het nummer krijgt ze direct na de aankoop. Zolang het ze niet heeft, valt de lease terug op de gedeelde pool en ziet de gebelde het demonummer van volai. Duurt dat langer dan een uur, schrijf dan naar de support.

6Limieten, quota en beveiliging

Het maximum is 1 actieve lease per nummer van u en maximaal 2 per account - een bewuste beveiliging die voorkomt dat één klant de hele gedeelde pool met relayslots bezet:

WatWaarde
Lease wacht op het eerste gesprek (pending)standaard 120 s, ttlSecs 15 tot 300 s
Gesprek loopt (active)15 minuten
Actieve lease per nummer van umaximaal 1
Actieve leases per accountmaximaal 2
Gebruik van een leaseeenmalig - een tweede gesprek op dezelfde lease wordt geweigerd, ook een herhaling na een onbeantwoord gesprek heeft een nieuwe lease nodig
  • from moet uw eigen volai-nummer zijn - anders from_number_not_owned. Zonder deze controle zou men zich kunnen voordoen als de lijn van een ander (caller ID spoofing).
  • Dezelfde poorten als bij een gewoon gesprek - bel-me-niet-lijst (geldt alleen voor gesprekken, niet voor sms), automatische blokkade van 30 dagen na 3 mislukte pogingen naar hetzelfde nummer binnen 24 uur, premium-nummers, bescherming tegen lussen tussen volai-nummers, vergrendeling van het gebelde nummer en de algemene limiet op het aantal gesprekken. Niets hiervan is via relay te omzeilen.
  • Volle pool -> 503 capacity_busy - relayslots vormen een gedeeld plafond voor gelijktijdigheid van het HELE platform, niet alleen van uw account. Bij capacity_busy wordt er niets in rekening gebracht, probeer het zo meteen opnieuw.
  • De volledige REST-referentie (foutcodes, GET/DELETE bij leases) vindt u in de REST API.

Elke API-fout bevat cause (wie het oplost) en action (wat u moet doen) - zie Foutformaat in de REST API-referentie.