Gå til indholdet

Vejledninger

SIP

Når stemmeagenten og simpel viderestilling ikke er nok, og nummeret skal forbindes til en egen softphone eller telefoncentral (PBX), er en SIP-trunk-udbyder nødvendig - volai er en sådan. Denne side er en trin-for-trin-vejledning.

1Indgående opkald til en egen SIP-server

Sæt nummerets routing til mode: "sip" og angiv den egen sipUri - herfra går opkaldet direkte til modtageren, ikke til vores agenttilbud eller viderestilling:

bash
curl -X PATCH "https://volai.eu/v1/numbers/+420601234567" \
  -H "Authorization: Bearer vk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"routing": {"mode": "sip", "sipUri": "sip:reception@your-server.com"}}'

Kun det indgående minut afregnes (0,50 kr/min (≈ 0,16 DKK)), ingen ekstra agent - den fulde form af forespørgslen og de øvrige routingtilstande findes i REST API-referencen.

Godkendelse på telefoncentralen

Opkaldet til den egen SIP-server sendes først som en ugodkendt INVITE til sipUri. En central, der svarer med en login-udfordring (401/407) og afviser opkaldet uden yderligere oplysninger, får det ikke i denne form - der er ingen, der kan besvare udfordringen. Udfyld derfor i routingen desuden sipUsername og sipPassword - når begge er udfyldt, logger vores netværk ind på målet (SIP digest) og ringer til det kaldte nummer. Kontrolleret med et live-opkald til Vapis native SIP-nummer, som accepterer oplysninger uanset indholdet. Om den egen central også forbinder opkaldet, afhænger af den - den skal faktisk besvare INVITE med en udfordring og godkende det angivne brugernavn og kodeord; det garanteres ikke for alle centraler (i testen mislykkedes det for eksempel mod Twilios SIP-domæne). Uden sipUsername og sipPassword forbliver routingen i den nuværende ugodkendte form. Login tilføjes til routingen sådan:

bash
curl -X PATCH "https://volai.eu/v1/numbers/+420601234567" \
  -H "Authorization: Bearer vk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"routing": {"mode": "sip", "sipUri": "sip:reception@your-server.com", "sipUsername": "reception", "sipPassword": "supersecret123"}}'

Det kaldte nummer sendes altid præcis i den form, det har i sipUri før snabel-a - der tilføjes eller fjernes hverken forvalg eller nul, så målcentralen skal kunne håndtere præcis det, der står dér.

Hverken sipUsername eller sipPassword må indeholde kolon, snabel-a, mellemrum, citationstegn eller omvendt skråstreg, og hver må højst være 64 tegn.

Det er ikke muligt at udfylde kun det ene af felterne - API'et returnerer fejlen "Please fill in both username and password, or leave both empty."

Et kolon i brugerdelen af sipUri (før snabel-a) og en port i hosten (efter kolon ved serveren, f.eks. :5060) understøttes endnu ikke sammen med udfyldt sipUsername og sipPassword - begge giver den samme hårde fejl. Uden login-oplysninger fungerer begge uændret.

Undtagelse: en BYO SIP-trunk hos Vapi (adresse <credentialId>.sip.vapi.ai, for en organisation i EU-regionen <credentialId>.sip.eu.vapi.ai) bruger ikke login-oplysninger. Vapi genkender vores opkald på IP-adressen i trunkens gateways, og med udfyldt sipUsername og sipPassword ville opkaldet ikke blive forbundet, så API'et afviser en sådan routing med koden validation. Vapis native SIP-nummer (sip:<navn>@sip.vapi.ai) er ikke berørt.

Hvem andre ser brugernavn og kodeord

Brugernavn og kodeord følger med opkaldet videre ind i vores netværk og forbliver i de tekniske optegnelser om routingen - der er andre end afsenderen, som kan se dem. Opret derfor en dedikeret konto kun til os på centralen, ikke det primære administratorkodeord.

Delvis opdatering: et udeladt felt forbliver, som det var

Hvis PATCH kun sender sipUri og udelader sipUsername og sipPassword , forbliver begge felter uændrede - de skal ikke angives igen ved hver ændring af sipUri. Et udeladt felt (helt fraværende i indholdet) bevares altid, som det er gemt; godkendelsen fjernes kun af en udtrykkelig tom streng i BEGGE felter samtidig. Den eneste undtagelse er ændring af serveren: hvis delen efter snabel-a i sipUri også ændres, skal kodeordet sendes igen - et gemt kodeord sendes ikke til en anden server end den, det blev angivet til. Den aktuelle tilstand kontrolleres med feltet hasSipPassword i svaret.

Blev opkaldet ikke forbundet? Tillad os via IP

Sipa-login fungerer kun mod et mål, der udfordrer INVITE og accepterer oplysningerne (kontrolleret med Vapis native SIP-nummer) - ellers kommer opkaldet ikke igennem, uanset om login-oplysninger udfyldes eller ej. Vores signalering kommer fra området 81.31.45.0/24, i praksis oftest fra 81.31.45.51 og 81.31.45.56. Tillad hele dette område på centralen - så genkendes opkaldet på kildeadressen, ikke på brugernavn og kodeord, og login-oplysninger er slet ikke nødvendige.

2SIP-oplysninger for nummeret

Linjens login-oplysninger hentes med ét kald:

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

Opsætning i en softphone (Zoiper, Linphone)

Begge apps beder i princippet om det samme, blot med andre navne - led efter "Tilføj konto" / "SIP-konto":

FeltVærdi
Server / Domænesip.volai.cz
Brugernavnfra svaret ovenfor (username)
Kodeordfra svaret ovenfor (password)
TransportTCP
Port5060 (standard SIP - hvis feltet tilbyder et tomt valg, lad det stå tomt)

Vil klienten have et realm udfyldt?

Lad feltet stå tomt - de fleste klienter henter realm fra serverens udfordring. I klientens log kan der dukke et teknisk domæne op, som tilhører vores netværk, det er i orden. Hvis klienten kræver realm som obligatorisk, skriv til support.

Efter gemning bør softphonen registrere sig (statusikon "online"/"registreret"), og opkald til nummeret begynder at ringe direkte i den.

3Udgående opkald via en SIP-klient

Så snart softphonen er registreret, kan den selv ringe ud via denne linje - der skal ikke kaldes noget af vores API til det, der ringes direkte fra klienten som fra en almindelig telefonlinje.

Minutterne trækkes fra volai-saldoen

Udgående opkald via en SIP-klient afregnes til samme sats som et udgående opkald via API (0,92 kr/min (≈ 0,29 DKK)) og trækkes fra saldoen - ikke fra en adskilt SIP-konto. Satserne er ekskl. moms, ligesom hele prislisten.

Forbindelsen går direkte mellem klienten og serveren sip.volai.cz, ikke via vores API, så minutter kan ikke blokeres præcis i det øjeblik, der ringes op. Et opkald foretaget direkte fra en SIP-klient afregnes bagudrettet ud fra netværkets optegnelser - tidligst 10 minutter efter afslutningen, som regel inden for en halv time - og vises ikke på saldoen i det øjeblik, der ringes op. Den daglige opkaldsgrænse og saldokontrollen ved opkald gælder ikke for disse opkald, fordi de kun overvåger opkald via API - saldoen kan derfor falde under nul. Når saldoen falder til nul, begynder nye betalte handlinger via API/MCP at blive afvist (et opkald kræver en saldo på mindst 5 CZK). Når saldoen kommer under nul, lukkes linjens SIP-adgang inden for få minutter, viderestillingen afbrydes, og du får en e-mail; når du har fyldt op til mindst 5 CZK, genoptages alt af sig selv, og adgangskoden er uændret. Hvis gælden ikke er udlignet inden for en uge, frigives nummeret tilbage til beholdningen (hvilket endegyldigt afslutter SIP-adgangen). Hold derfor øje med saldoen i god tid, ikke først når den er nul.

Er det en AI-stemmeagent og ikke en softphone?

Dette trin forudsætter en klient, der kan registrere sig på linjen (SIP REGISTER) - en softphone, en PBX. En platform, der blot sender opkaldet én gang godkendt uden varig registrering (typisk AI-stemmeagenter som ElevenLabs), kræver en anden fremgangsmåde - se Egen agent.

Platformens udgående trunk-adresse tages fra feltet outboundTrunkAddress, ikke fra server ovenfor - detaljer på den side.

4Begrænsninger

  • Én registrering pr. linje - ét sæt login-oplysninger understøtter én registreret enhed ad gangen. Hvis der logges ind med en anden klient, mister den første sandsynligvis sin registrering - stol ikke på flere enheder samtidig på én linje.
  • Udgående fra en egen agent ja, fuld trunk-peering nej - linjens login-oplysninger tjener til, at EN KLIENT registrerer sig hos OS som telefon. Udgående opkald fra en egen stemmeagent (ElevenLabs eller en anden platform) KAN dog i dag lade sig gøre - via relay, se Egen agent. Det er stadig ikke muligt at forbinde en central som ligeværdig operatør med egen routing af INDGÅENDE opkald udefra - brug til det routingen forward til centralens nummer.
  • Kun tale - ingen video eller andre SIP-udvidelser.