Integrazione con Twilio

L'integrazione di Zadarma e Twilio consente di indirizzare le chiamate in entrata dai numeri virtuali di Zadarma al tuo Twilio e di elaborarle in base alle tue attuali impostazioni Twilio. Puoi anche effettuare chiamate in uscita da Twilio tramite il tuo account Zadarma con le tariffe convenienti di Zadarma.

1. Configurazione delle chiamate in entrata

Aggiunta di un dominio SIP in Twilio.

Nel tuo account Twilio, apri la sezione Twilio Console. → Voice → SIP Domains e clicca sul pulsante + per aggiungere un nuovo dominio.

Esempio di configurazione del dominio SIP:

  • FRIENDLY NAME - nome di dominio, ad esempio zadarma;
  • SIP URI - dominio, nome arbitrario, per comodità è possibile utilizzare un numero virtuale.

SIP Domain URL

Nella sezione Voice Authentication, aggiungi uno alla volta gli IP ACCESS CONTROL LISTS che conterranno gli indirizzi IP affidabili di Zadarma dai quali Twilio riceverà le chiamate in entrata.

  • 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 - pbxsg1.zadarma.com
  • CIDR NETWORK ADDRESS - 15.235.128.70 /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

Assicurati che tutti gli IP ACCESS CONTROL LISTS aggiunti siano selezionati nelle impostazioni del dominio SIP.

Più in basso, nella sezione Call Control Configuration nel parametro A CALL COMES IN , seleziona cosa gestirà le chiamate in arrivo. Se hai già configurato l'instradamento in Twilio, seleziona la tua opzione, ad esempio Studio e il tuo Flow (scenario) per le chiamate in arrivo, quindi premi Save per salvare le impostazioni del tuo dominio SIP.

Call Control Configuration

Esempio di Flow (scenario) per le chiamate in entrata


Successivamente, nelle impostazioni SIP Domain nella sezione SIP Registration è necessario abilitare la possibilità di registrarsi, spostando l'interruttore su Enabled.

SIP Registration

Di seguito, in CREDENTIAL LISTS, è necessario selezionare SIP Endpoint esistente che riceverà le chiamate in entrata tramite softphone. Se non disponi ancora di un SIP Endpoint, creane uno cliccando sul pulsante “+”.

Aggiunta di un SIP Endpoint


La configurazione del dominio SIP è stata completata, fare clic sul pulsante Salva.

Inoltro delle chiamate a Twilio

Nel punto precedente abbiamo aggiunto un dominio SIP a Twilio che contiene l'URI SIP necessario per l'instradamento:

  1. Vai alla sezione Zadarma Impostazioni → Numeri virtuali.
  2. Di fronte al tuo numero, clicca sull'icona ⚙ (ingranaggio).
  3. Aprire la scheda "Server esterno".
  4. Attiva l'opzione "Server esterno (SIP URI)".
  5. Nel campo visualizzato, inserisci 15551111111@15551111111.sip.twilio.com

    - dove 15551111111.sip.twilio.com è il tuo SIP URI dalle impostazioni del dominio SIP in Twilio.

  6. Clicca su "Salva".
  1. Vai su Zadarma alla sezione Il mio centralino → Numeri interni.
  2. Nelle impostazioni del numero interno, accanto al parametro "Inoltro e segreteria telefonica", clicca su "Attiva".
  3. Selezionare la condizione di inoltro, ad esempio "Sempre".
  4. Nel parametro "Inoltro a" seleziona "Server esterno (SIP URI)".
  5. Nella finestra pop-up, inserisci 15551111111@15551111111.sip.twilio.com

    - dove15551111111.sip.twilio.com è il tuo SIP URI dalle impostazioni del dominio SIP in Twilio.

  6. Clicca su "Salva".

Configurazione delle chiamate in entrata completata.

2. Configurazione delle chiamate in uscita da Twilio

Le chiamate in uscita da Twilio possono essere effettuate tramite diverse opzioni. Vediamo l'esempio di come avviare una chiamata tramite Twilio REST API (Calls API).

L'esempio seguente mostra la creazione di una conferenza tra un SIP Endpoint su cui è configurato il softphone e un numero esterno (chiamata tramite Zadarma).

Nell'esempio verrà utilizzato uno script in Python. Prima di iniziare, assicurati che Python e la libreria twilio siano installati sul tuo sistema (www.twilio.com/docs/libraries/reference/twilio-python).

Per autenticare la richiesta è necessario utilizzare l'Account SID e l'Auth Token, che puoi trovare su Twilio nell'Account Dashboard nell'angolo in alto a sinistra della pagina.

Per autorizzare la chiamata in uscita verranno utilizzati il login Sip e la password dall'area personale di Zadarma.

Per autorizzare la chiamata in uscita verrà utilizzato il numero interno del centralino e la password dall'area personale di Zadarma.

Crea uno script call.py con il seguente contenuto:


from twilio.rest import Client

#  Dati dell'account Twilio
ACCOUNT_SID = "Account_SID_value"
AUTH_TOKEN = "Auth_Token_value"
TWILIO_NUMBER = "+15559999999"  # Numero confermato in Twilio per Caller ID
CONFERENCE_NAME = "MyConferenceRoom"

# Zadarma SIP dati dell'account
ZADARMA_SIP_URI = "sip:+525500000777@sip.zadarma.com"  # Dove chiamiamo tramite Zadarma
ZADARMA_SIP_USER = "12345"  # al posto di 12345 deve esserci il tuo login SIP di Zadarma
ZADARMA_SIP_PASSWORD = "my_sip_password"  # Password per il login SIP Zadarma

# SIP Endpoint (locale)
SIP_ENDPOINT = "sip:11111@15551111111.sip.twilio.com"  # Il tuo SIP Endpoint su cui è configurato il softphone per ricevere le chiamate

# Inizializzazione del client Twilio
client = Client(ACCOUNT_SID, AUTH_TOKEN)

# Funzione di aggiunta di un partecipante alla conferenza
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>"""
    }

    # Aggiungiamo l'autenticazione
    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"Chiamata a {to_number} avviata, SID: {call.sid}")

# Avvio delle chiamate
add_to_conference(ZADARMA_SIP_URI, from_number=TWILIO_NUMBER, sip_auth_user=ZADARMA_SIP_USER, sip_auth_password=ZADARMA_SIP_PASSWORD)  # Chiamata a un numero esterno tramite Zadarma
add_to_conference(SIP_ENDPOINT)  # Collegamento dell SIP Endpoint

print(f"La conferenza '{CONFERENCE_NAME}' è stata creata!")


from twilio.rest import Client

# Dati dell'account Twilio
ACCOUNT_SID = "Account_SID_value"
AUTH_TOKEN = "Auth_Token_value"
TWILIO_NUMBER = "+15559999999"  # Numero confermato in Twilio per Caller ID
CONFERENCE_NAME = "MyConferenceRoom"

# Zadarma SIP dati dell'account
ZADARMA_SIP_URI = "sip:+525500000777@pbx.zadarma.com"  # Dove chiamiamo tramite Zadarma
ZADARMA_SIP_USER = "1234-100"  # al posto di 1234-100 deve esserci il tuo numero interno del centralino Zadarma
ZADARMA_SIP_PASSWORD = "my_pbx_password"  # Password dal numero interno del centralino Zadarma

# SIP Endpoint (locale)
SIP_ENDPOINT = "sip:11111@15551111111.sip.twilio.com"  #  Il tuo SIP Endpoint su cui è configurato il softphone per ricevere le chiamate

# Inizializzazione del client Twilio 
client = Client(ACCOUNT_SID, AUTH_TOKEN)

# Funzione di aggiunta di un partecipante alla conferenza
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>"""
    }

    # Aggiungiamo l'autenticazione
    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"Chiamata a {to_number} avviata, SID: {call.sid}")

# Avvio delle chiamate
add_to_conference(ZADARMA_SIP_URI, from_number=TWILIO_NUMBER, sip_auth_user=ZADARMA_SIP_USER, sip_auth_password=ZADARMA_SIP_PASSWORD)  # Chiamata a un numero esterno tramite Zadarma
add_to_conference(SIP_ENDPOINT)  # Colleghiamo SIP Endpoint

print(f"La conferenza '{CONFERENCE_NAME}' è stata creata!")

Salva e avvia il tuo script call.py. Se tutto è configurato correttamente, le chiamate arriveranno al softphone e al numero esterno dal tuo login SIP Zadarma.

Salva e avvia il tuo script call.py. Se tutto è configurato correttamente, le chiamate arriveranno al softphone e al numero esterno dal tuo numero interno del centralino virtuale Zadarma.