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. Dane IP można znaleźć w zakładce panelu klienta Ustawienia → Numery wirtualne lub po prostu skopiować z tej instrukcji.

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

IP ACCESS CONTROL LISTS

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

IP ACCESS CONTROL LISTS

  • FRIENDLY NAME - sipde.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.152.174 /32

IP ACCESS CONTROL LISTS

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

Voice Authentication

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 przycieskiem "+".

Dodawanie SIP Endpoint


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

2. Przekierowywanie połączeń w Twilio

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

  1. Otwórz w panelu klienta Zadarma zakładkę 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 URI SIP:sip:15551111111@15551111111.sip.twilio.com

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

  6. Następnie "Zapisz" ustawienia.

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.

Aby autoryzować połączenie wychodzące, należy podać login i hasło SIP z panelu klienta Zadarma.

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


from twilio.rest import Client

# Twilio dane uwierzytelniające
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 łączy się przez Zadarma
ZADARMA_SIP_USER = "12345"  # zamiast 12345 powinien być twój login SIP z Zadarma
ZADARMA_SIP_PASSWORD = "my_sip_password"  # Hasło 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 z {to_number} rozpoczęto, SID: {call.sid}")

# Rozpoczynanie 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ą przyjmowane na skonfigurowanym softphone i na numer zewnętrzny z Twojego loginu SIP Zadarma.