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.
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.
Przykład Flow (scenariusz) do połączeń przychodzących▾
Jeśli wybrałeś swoją opcję w A CALL COMES IN - pomiń ten krok. Poniżej znajduje się przykład tworzenia prostego Flow dla połączeń przychodzących w edytorze Twilio Studio.
1. Przejdź do konsoli Twilio Console → Studio i kliknij przycisk Create new Flow. Wprowadź FLOW NAME, np. Incoming calls.
2. Wybierz szablon Start from scratch i kliknij Next.
3. Przeciągnij blok Gather Input on Call (dla menu IVR) i połącz go z Trigger (Incoming Call).
4. Wprowadź wiadomość głosową (Text to Speech lub Audio URL).
5. Skonfiguruj przetwarzanie przycisków (1 – dział sprzedaży, 2 – wsparcie itd.).
Następnie należy utworzyć dwa Set Variables, aby zmodyfikować numer dzwoniącego z nagłówka From.
Utwórz pierwszy Set Variables z Variable Name: step1_caller_id i Value:
{{contact.channel.address | replace: "sip:", "" }}
Utwórz drugi Set Variables (po pierwszym) Variable Name: clean_caller_id i Value:
{{flow.variables.step1_caller_id | replace: "@sip.zadarma.com", "" }}
{{flow.variables.step1_caller_id | replace: "@pbx.zadarma.com", "" }}
Dodaj przejście połączenia przychodzącego do numeru wewnętrznego, używając Connect Call To.
CONNECT CALL TO – wybierz SIP Endpoint.
W SIP ENDPOINT wprowadź jego URL, np. sip:11111@15551111111.sip.twilio.com
W CALLER ID
{{flow.variables.clean_caller_id}}
Zapisz ustawienia i opublikuj Flow, klikając Publish.
Następnie w ustawieniach SIP Domain w zakładce SIP Registration należy włączyć możliwość rejestracji, przełączając przełącznik Enabled.
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▾
Jeśli masz już SIP Endpoint - pomiń ten krok.
- FRIENDLY NAME - my twilio extension.
- USERNAME - dowolny login, np. 11111.
- PASSWORD - hasło do autoryzacji, należy wygenerować mocne hasło, co najmniej 12 znaków.
Softphone połączy się z Twoją domeną np. 15551111111.sip.twilio.com i będzie korzystać z USERNAME i PASSWORD do autoryzacji.
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:
- Przejdź w Zadarma do zakładki Ustawienia → Numery wirtualne.
- Kliknij ikonę naprzeciwko swojego numeru wirtualnego ⚙ (koło zębate).
- Otwórz zakładkę „Zewnętrzny serwer”.
- Włącz opcję „Zewnętrzny serwer (URI SIP)”.
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.
- Następnie "Zapisz" ustawienia.
- Przejdź w Zadarma do zakładki Moja centrala → Numery wewnętrzne.
- W ustawieniach numeru wirtualnego, obok "Przekierowywanie oraz poczta głosowa" kliknij "Włączyć".
- Wybierz kiedy będzie działać przekierowanie, na przykład "Zawsze".
- W punkcie "Przekierowywanie na" wybierz "Zewnętrzny serwer (SIP URI)".
- 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.
- 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.