Instrukcja konfiguracji

Vapi i polski numer +48

ACTIO jest operatorem: polska numeracja, SIP i SMS. Vapi zostaje silnikiem agenta (STT / LLM / TTS). Trunk jest standardowym BYO SIP z dokumentacji Vapi – ten sam wzorzec co u Zadarmy albo Telnyx, tylko gateway to sip.actio.pl.

Architektura: ACTIO +48 → SIP → Vapi → ElevenLabs / Deepgram / OpenAI. Jeśli potrzebujesz Twilio w środku: ACTIO +48 → BYOC → Twilio → Vapi (instrukcja Twilio).

Do połączeń potrzebujesz SIP Trunk albo wirtualnego numeru komórkowego. Pod voicebota jest pozycja SIP Trunk AI.

Dane SIP ACTIO, które wpisujesz w Vapi

Gateway / registrarsip.actio.pl
Port5060 UDP/TCP (zalecane na start), 5070 TLS
Username / Auth IDnumer użytkownika, np. 48XXXXXXXXX
Hasłohasło SIP z konta (inne niż hasło do panelu)
CLI / FromE.164 z +48, np. +48457XXXXXX
KodekiG.711u (PCMU), G.711a (PCMA); G.722 jeśli obie strony

Pod agenta AI bierz numer komórkowy +48, nie stacjonarny: na komórce masz od razu dwukierunkowy SMS. Stacjonarny tego nie da. Zakresy wirtualne ACTIO to +48 457 i +48 720.

1 Konto SIP i numer w ACTIO

Zakładasz konto SIP i numer, z którego bot ma dzwonić i na który ma odbierać. To ten numer widzi klient jako CLI.

  • Numer geograficzny (22, 12, 61…) albo wirtualny komórkowy +48 457/720 – ten drugi, jeśli potrzebujesz SMS na tym samym numerze.
  • Z panelu albo od BOK bierz: registrar, username 48XXXXXXXXX, hasło SIP.
  • Nie prezentuj na wyjściu numeru, którego nie masz na trunku. Polskie sieci odrzucają obcy CLIP (SIP 603).

2 Credential byo-sip-trunk w Vapi

Vapi opisuje to w dokumentacji SIP Trunking jako Custom BYO SIP Trunk: podajesz gateway i dane uwierzytelniające. Organizacja w UE – klucz i credential przez https://api.eu.vapi.ai, host SIP sip.eu.vapi.ai. US: api.vapi.ai / sip.vapi.ai. Nie mieszaj regionów.

Vapi odradza samą autoryzację po IP na współdzielonych bramkach. Z ACTIO używamy digest: username i hasło SIP.

export VAPI_API_BASE_URL="https://api.eu.vapi.ai"

curl -X POST "$VAPI_API_BASE_URL/credential" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_VAPI_PRIVATE_KEY" \
  -d '{
    "provider": "byo-sip-trunk",
    "name": "ACTIO Poland",
    "gateways": [{
      "ip": "sip.actio.pl",
      "port": 5060,
      "inboundEnabled": false,
      "outboundEnabled": true
    }],
    "outboundLeadingPlusEnabled": true,
    "outboundAuthenticationPlan": {
      "authUsername": "48XXXXXXXXX",
      "authPassword": "HASLO_SIP"
    }
  }'

Zapisz id z odpowiedzi – to credentialId. To samo da się kliknąć w panelu Vapi (SIP trunk / BYO), pola są te same: gateway, port, username, password, leading plus.

3 Numer byo-phone-number

Numer w Vapi to nie zakup u Vapi. To wskazanie DID-u, który już masz w ACTIO.

curl -X POST "$VAPI_API_BASE_URL/phone-number" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_VAPI_PRIVATE_KEY" \
  -d '{
    "provider": "byo-phone-number",
    "name": "ACTIO +48",
    "number": "+48457XXXXXX",
    "numberE164CheckEnabled": true,
    "credentialId": "YOUR_CREDENTIAL_ID"
  }'

Format numeru musi być spójny z tym, co ACTIO wysyła w INVITE (E.164 z +48). Zapisz id numeru do testu wychodzącego.

4 Test połączenia wychodzącego

Z panelu Vapi albo API wywołujesz agenta na swój telefon testowy. CLI, które zobaczysz na słuchawce, to numer ACTIO.

curl -X POST "$VAPI_API_BASE_URL/call/phone" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_VAPI_PRIVATE_KEY" \
  -d '{
    "assistantId": "YOUR_ASSISTANT_ID",
    "customer": { "number": "+48600XXXXXX" },
    "phoneNumberId": "YOUR_PHONE_NUMBER_ID"
  }'
  • Brak dźwięku: kodek G.711, UDP RTP. ACTIO nie kompresuje HD pod G.729, jeśli obie strony mają G.711.
  • 401/403 na wyjściu: złe hasło SIP albo username bez prefiksu 48.
  • 603 Decline: prezentujesz CLIP, którego nie masz na trunku.

5 Połączenia przychodzące na agenta

Vapi nie rejestruje się jako telefon na sip.actio.pl. To ACTIO ma wysłać INVITE na URI Vapi. W dokumentacji Vapi ten adres to:

UE: {numer}@{credential_id}.sip.eu.vapi.ai
US: {numer}@{credential_id}.sip.vapi.ai

  • Przekazujesz BOK-owi credential_id i region (UE albo US). Ustawiamy kierowanie DID-u na ten URI.
  • Inbound w Vapi wymaga numerycznych IPv4 sygnalizacji ACTIO (hostname nie wystarczy do matchowania źródła). Adresy podajemy przy wdrożeniu – bez tego bywa 401 na przychodzących.
  • IP sygnalizacji Vapi UE: 63.182.83.170/32. US: 44.229.228.186/32, 44.238.177.138/32. RTP UDP 40000–60000. Źródło: dokumentacja sieciowa Vapi.

6 SMS na tym samym numerze

Vapi obsługuje głos. SMS idzie osobno, przez ACTIO, na wirtualnym numerze komórkowym. Agent po rozmowie może dostać webhook z treścią SMS albo wysłać SMS z REST API (platforma Sendly). Numer stacjonarny tego nie ma.

Szerzej: głos i SMS dla agentów AI oraz SMS API.

Transfer (SIP REFER)

Jeśli agent ma oddać rozmowę człowiekowi, Vapi wysyła SIP REFER. URI transferu ma iść na domenę ACTIO, np. sip:[email protected]. CLIP na transferze – numer ACTIO, nie numer oryginalnego dzwoniącego, jeśli tego numeru nie masz na trunku.

Najczęstsze pytania

Jaki SIP trunk do VAPI, żeby dzwonić na +48 i mieć polski CLI?

SIP Trunk ACTIO, pod voicebota SIP Trunk AI (150 / 129 / 100 zł netto/mc). W Vapi: byo-sip-trunk + byo-phone-number, gateway sip.actio.pl, CLI +48. Inwentarz Twilio w PL to 73/79 i 800 – nie da 22/12/61.

Czy Vapi potrzebuje polskiego operatora, czy wystarczy Twilio?

Twilio wystarczy przy ich inwentarzu. Polski CLI, zwykła komórka +48 albo SMS bez nadpisania Sender ID wymaga polskiego SIP. ACTIO jest tą warstwą; agent zostaje w Vapi.

Czy na numerze Vapi + ACTIO działa SMS?

Tak, jeśli numer jest komórkowy ACTIO. SMS nie idzie przez Vapi, tylko przez API ACTIO / Sendly na tym samym DID.

Potrzebujesz pomocy?

Przy pierwszym trunku Vapi ustawiamy przychodzące URI i IP sygnalizacji. Napisz, z jakiego numeru +48 ma dzwonić agent.