Integracja z Twilio

Integracja Zadarma i Twilio umożliwia kierowanie połączeń przychodzących z wirtualnych numerów Zadarma na Twilio i obsługę ich zgodnie z bieżącymi ustawieniami Twilio. Połączenia wychodzące z Twilio można wykonywać także za pośrednictwem swojego konta Zadarma, korzystając z atrakcyjnych cenników Zadarma na połączenia.

1. Konfiguracja połączeń przychodzących

Dodawanie domeny SIP do Twilio.

Na swoim koncie Twilio otwórz zakładkę Twilio Console → Voice → SIP Domains i kliknij przycisk +, aby dodać nową domenę.

Przykład ustawień domeny SIP:

  • FRIENDLY NAME - nazwa domeny, np. zadarma;
  • SIP URI - domena, dowolna nazwa, dla wygody można wpisać numer wirtualny.

SIP Domain URL

W zakładce Voice Authentication należy dodać wg kolejności trzy IP ACCESS CONTROL LISTS który będzie zawierał zaufane adresy IP Zadarma, z których Twilio będzie odbierać połączenia przychodzące.

  • FRIENDLY NAME - sipurifr.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.152.216 /32

  • FRIENDLY NAME - sipuriny.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.155.33 /32
  • FRIENDLY NAME - pbxfr1.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.152.164 /32

  • FRIENDLY NAME - pbxfr2.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.152.177 /32

  • FRIENDLY NAME - pbxfr3.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.152.200 /32

  • FRIENDLY NAME - pbxny1.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.155.14 /32

  • FRIENDLY NAME - pbxny2.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.155.16 /32

  • FRIENDLY NAME - pbxlv1.zadarma.com
  • CIDR NETWORK ADDRESS - 195.122.19.20 /32

  • FRIENDLY NAME - pbxlv2.zadarma.com
  • CIDR NETWORK ADDRESS - 195.122.19.29 /32

  • FRIENDLY NAME - pbxhk1.zadarma.com
  • CIDR NETWORK ADDRESS - 103.109.103.67 /32

  • FRIENDLY NAME - pbxal1.zadarma.com
  • CIDR NETWORK ADDRESS - 31.31.222.201 /32

  • FRIENDLY NAME - pbxma1.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.154.15 /32

Upewnij się, że wszystkie dodane IP ACCESS CONTROL LISTS wybrano w ustawieniach domeny SIP.

Niżej w bloku Call Control Configuration dla parametru A CALL COMES IN należy wybrać, co dokładnie będzie zarządzać połączeniami przychodzącymi, jeśli masz już skonfigurowane kierowanie połączeń przychodzących w Twilio - wybierz swoją opcję, na przykład Studio i Flow (scenariusz) dla połączeń przychodzących, następnie kliknij Zapisz, aby zapisać ustawienia domeny SIP.

Call Control Configuration

Przykład Flow (scenariusz) do połączeń przychodzących


Następnie w ustawieniach SIP Domain w zakładce SIP Registration należy włączyć możliwość rejestracji, przełączając przełącznik Enabled.

SIP Registration

Niżej w CREDENTIAL LISTS należy wybrać istniejący SIP Endpoint, który będzie odbierał połączenia przychodzące za pomocą softphone. Jeśli jeszcze nie masz SIP Endpoint - utwórz go przyciskiem "+".

Dodawanie SIP Endpoint


Konfiguracja domeny SIP została ukończona, kliknij przycisk Save.

Przekierowywanie połączeń w Twilio

W poprzednim kroku dodaliśmy domenę SIP do Twilio, która zawiera identyfikator SIP URI wymagany do routingu:

  1. Przejdź w Zadarma do zakładki Ustawienia → Numery wirtualne.
  2. Kliknij ikonę naprzeciwko swojego numeru wirtualnego ⚙ (koło zębate).
  3. Otwórz zakładkę „Zewnętrzny serwer”.
  4. Włącz opcję „Zewnętrzny serwer (URI SIP)”.
  5. W wyświetlonym polu wprowadź adres 15551111111@15551111111.sip.twilio.com

    - gdzie 15551111111.sip.twilio.com – Twój SIP URI z ustawień domeny SIP w Twilio.

  6. Następnie "Zapisz" ustawienia.
  1. Przejdź w Zadarma do zakładki Moja centrala → Numery wewnętrzne.
  2. W ustawieniach numeru wirtualnego, obok "Przekierowywanie oraz poczta głosowa" kliknij "Włączyć".
  3. Wybierz kiedy będzie działać przekierowanie, na przykład "Zawsze".
  4. W punkcie "Przekierowywanie na" wybierz "Zewnętrzny serwer (SIP URI)".
  5. W wyświetlonym oknie wprowadź adres: 15551111111@15551111111.sip.twilio.com, gdzie 15551111111.sip.twilio.com – Twój SIP URI z ustawień domeny SIP w Twilio.
  6. Naciśnij "Zapisz".

Konfiguracja połączeń przychodzących została ukończona.

2. Konfiguracja połączeń wychodzących z Twilio

Połączenia wychodzące z Twilio można wykonywać na kilka sposobów, przyjrzyjmy się przykładowi inicjowania połączenia za pośrednictwem Twilio REST API (Calls API).

Poniższy przykład pokaże jak utworzyć konferencję pomiędzy SIP Endpoint, na którym skonfigurowano softphone, a numerem zewnętrznym (połączenie przez Zadarma).

W tym przykładzie zostanie użyty skrypt Python. Przed rozpoczęciem upewnij się, że w systemie zainstalowano język Python i bibliotekę twilio (www.twilio.com/docs/libraries/reference/twilio-python).

Aby uwierzytelnić żądanie, należy użyć Account SID и Auth Token znajdziesz je w Twilio w Account Dashboard w lewym górnym rogu strony.

Dla autoryzacji połączenia wychodzącego będzie wykorzystany login Sip oraz hasło z panelu klienta Zadarma.

Dla autoryzacji połączenia wychodzącego będzie wykorzystany numer wewnętrzny wirtualnej centrali oraz hasło z panelu klienta Zadarma.

Utwórz skrypt call.py z następnymi parametrami:


from twilio.rest import Client

# Twilio dane użytkownika
ACCOUNT_SID = "Account_SID_value"
AUTH_TOKEN = "Auth_Token_value"
TWILIO_NUMBER = "+15559999999"  # Zweryfikowany numer w Twilio dla Caller ID
CONFERENCE_NAME = "MyConferenceRoom"

# Zadarma SIP dane do autoryzacji
ZADARMA_SIP_URI = "sip:+525500000777@sip.zadarma.com"  # Gdzie kierujemy połączenie przez Zadarma
ZADARMA_SIP_USER = "12345"  # zamiast 12345 powinien być twój login SIP z Zadarma
ZADARMA_SIP_PASSWORD = "my_sip_password"  # Hasło od loginu SIP z Zadarma

# SIP Endpoint (lokalny)
SIP_ENDPOINT = "sip:11111@15551111111.sip.twilio.com"  # Twój SIP Endpoint na którym skonfigurowano softphone do odbierania połączeń

# Inicjalizacja klienta Twilio
client = Client(ACCOUNT_SID, AUTH_TOKEN)

# Funkcja dodawania uczestnika do konferencji
def add_to_conference(to_number, from_number=None, sip_auth_user=None, sip_auth_password=None):
    call_params = {
        "to": to_number,
        "from_": from_number if from_number else TWILIO_NUMBER,
        "twiml": f"""<Response>
                        <Dial>
                            <Conference>{CONFERENCE_NAME}</Conference>
                        </Dial>
                     </Response>"""
    }

    # Dodajemy uwierzytelnienie
    if sip_auth_user and sip_auth_password:
        call_params["sip_auth_username"] = sip_auth_user
        call_params["sip_auth_password"] = sip_auth_password

    call = client.calls.create(**call_params)
    print(f"Połączenie na {to_number} rozpoczęto, SID: {call.sid}")

# Rozpoczęcie połączeń
add_to_conference(ZADARMA_SIP_URI, from_number=TWILIO_NUMBER, sip_auth_user=ZADARMA_SIP_USER, sip_auth_password=ZADARMA_SIP_PASSWORD)  # Połączenie na numer zewnętrzny przez Zadarma
add_to_conference(SIP_ENDPOINT)  # Podłączenie SIP Endpoint

print(f"Konferencja '{CONFERENCE_NAME}' utworzona!")


from twilio.rest import Client

# Twilio dane użytkownika
ACCOUNT_SID = "Account_SID_value"
AUTH_TOKEN = "Auth_Token_value"
TWILIO_NUMBER = "+15559999999"  # Zweryfikowany numer w Twilio dla Caller ID
CONFERENCE_NAME = "MyConferenceRoom"

# Zadarma SIP dane do autoryzacji
ZADARMA_SIP_URI = "sip:+525500000777@pbx.zadarma.com"  # Gdzie kierujemy połączenie przez Zadarma
ZADARMA_SIP_USER = "1234-100"  # zamiast 1234-100 powinien być twój numer wewnętrzny centrali Zadarma
ZADARMA_SIP_PASSWORD = "my_pbx_password"  # Hasło od numeru wewnętrznego centrali Zadarma 

# SIP Endpoint (lokalny)
SIP_ENDPOINT = "sip:11111@15551111111.sip.twilio.com"  # Twój SIP Endpoint na którym skonfigurowano softphone do odbierania połączeń

#  Inicjalizacja klienta Twilio
client = Client(ACCOUNT_SID, AUTH_TOKEN)

# Funkcja dodawania uczestnika do konferencji
def add_to_conference(to_number, from_number=None, sip_auth_user=None, sip_auth_password=None):
    call_params = {
        "to": to_number,
        "from_": from_number if from_number else TWILIO_NUMBER,
        "twiml": f"""<Response>
                        <Dial>
                            <Conference>{CONFERENCE_NAME}</Conference>
                        </Dial>
                     </Response>"""
    }

    # Dodajemy uwierzytelnienie
    if sip_auth_user and sip_auth_password:
        call_params["sip_auth_username"] = sip_auth_user
        call_params["sip_auth_password"] = sip_auth_password

    call = client.calls.create(**call_params)
    print(f"Połączenie na {to_number} rozpoczęto, SID: {call.sid}")

# Rozpoczęcie połączeń
add_to_conference(ZADARMA_SIP_URI, from_number=TWILIO_NUMBER, sip_auth_user=ZADARMA_SIP_USER, sip_auth_password=ZADARMA_SIP_PASSWORD)  # Połączenie na numer zewnętrzny przez Zadarma
add_to_conference(SIP_ENDPOINT)  # Podłączenie SIP Endpoint

print(f"Konferencja '{CONFERENCE_NAME}' utworzona!")

Zapisz i uruchom skrypt call.py. Jeśli wszystko zostało skonfigurowane poprawnie, połączenia będą skierowane na skonfigurowany softphone i na numer zewnętrzny ustawiony na Twoim loginie SIP Zadarma.

Zapisz i uruchom skrypt call.py. Jeśli wszystko zostało skonfigurowane poprawnie, połączenia będą skierowane na skonfigurowany softphone i na numer zewnętrzny ustawiony na Twoim numerze wewnętrznym centrali Zadarma.