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. 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
- FRIENDLY NAME - sipuriny.zadarma.com
- CIDR NETWORK ADDRESS - 185.45.155.33 /32
- FRIENDLY NAME - sipde.zadarma.com
- CIDR NETWORK ADDRESS - 185.45.152.174 /32
Upewnij się, że wszystkie trzy 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", "" }}
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 przycieskiem "+".
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.
2. Przekierowywanie połączeń w Twilio
W poprzednim kroku dodaliśmy domenę SIP do Twilio, która zawiera identyfikator SIP URI wymagany do routingu:
- Otwórz w panelu klienta Zadarma zakładkę 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 URI SIP:sip:15551111111@15551111111.sip.twilio.com
- gdzie 15551111111.sip.twilio.com – to Twój SIP URI z ustawień domeny SIP w Twilio.
- 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.