Intégration avec Twilio

L’intégration de Zadarma et Twilio permet de diriger les appels entrants des numéros virtuels Zadarma vers votre compte Twilio et de les traiter selon vos paramètres actuels de Twilio. Vous pouvez également passer des appels sortants depuis Twilio via votre compte Zadarma à des tarifs avantageux de Zadarma.

1. Configuration des appels entrants

Ajout d’un domaine SIP dans Twilio.

Dans votre compte Twilio, ouvrez la section Twilio Console → Voice → SIP Domains et cliquez sur le bouton + pour ajouter un nouveau domaine.

Exemple de configuration du domaine SIP :

  • FRIENDLY NAME - nom du domaine, par exemple zadarma ;
  • SIP URI - domaine, nom arbitraire, pour plus de commodité, vous pouvez utiliser un numéro virtuel.

SIP Domain URL

Dans la section Voice Authentication, ajoutez successivement trois IP ACCESS CONTROL LISTS contenant les adresses IP de confiance de Zadarma depuis lesquelles Twilio acceptera les appels entrants. Vous pouvez trouver ces IP dans la section Paramètres → Numéros virtuels ou simplement les copier depuis cette instruction.

  • 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

Assurez-vous que les trois IP ACCESS CONTROL LISTS ajoutées sont sélectionnées dans les paramètres du domaine SIP.

Voice Authentication

Plus bas, dans la section Call Control Configuration, dans le paramètre A CALL COMES IN, sélectionnez ce qui va gérer les appels entrants. Si vous avez déjà configuré le routage des appels entrants dans Twilio – choisissez votre option, par exemple Studio et votre Flow (scénario) pour les appels entrants, puis cliquez sur Save pour enregistrer les paramètres de votre domaine SIP.

Call Control Configuration

Exemple de Flow (scénario) pour les appels entrants


Ensuite, dans les paramètres du SIP Domain, dans la section SIP Registration, il est nécessaire d’activer l’option d’enregistrement en basculant le commutateur sur Enabled.

SIP Registration

Plus bas, dans CREDENTIAL LISTS, vous devez sélectionner un SIP Endpoint existant qui recevra les appels entrants à l’aide d’un softphone. Si vous n’avez pas encore de SIP Endpoint – créez-en un en cliquant sur le bouton "+".

Ajout d’un SIP Endpoint


La configuration du domaine SIP est terminée, cliquez sur le bouton Save.

Routage des appels vers Twilio

Dans l’étape précédente, nous avons ajouté un domaine SIP dans Twilio contenant le SIP URI nécessaire au routage :

  1. Allez dans Zadarma, section Paramètres → Numéros virtuels.
  2. En face de votre numéro, cliquez sur l’icône ⚙ (engrenage).
  3. Ouvrez l’onglet "Serveur externe".
  4. Activez l’option "Serveur externe (SIP URI)".
  5. Dans le champ qui s’affiche, saisissez 15551111111@15551111111.sip.twilio.com

    - où 15551111111.sip.twilio.com est votre SIP URI depuis les paramètres du domaine SIP dans Twilio.

  6. Cliquez sur "Enregistrer".
  1. Allez dans Zadarma, section Standard virtuel → Numéros internes.
  2. Dans les paramètres du numéro interne, en face du paramètre "Renvoi et messagerie vocale", cliquez sur "Activer".
  3. Sélectionnez la condition de renvoi, par exemple "Toujours".
  4. Dans le paramètre "Renvoi vers", choisissez "Serveur externe (SIP URI)".
  5. Dans le champ qui s’affiche, saisissez 15551111111@15551111111.sip.twilio.com

    - où 15551111111.sip.twilio.com est votre SIP URI depuis les paramètres du domaine SIP dans Twilio.

  6. Cliquez sur "Enregistrer".

La configuration des appels entrants est terminée.

2. Configuration des appels sortants depuis Twilio

Les appels sortants depuis Twilio peuvent être effectués de plusieurs façons, voyons un exemple d’initiation d’appel via Twilio REST API (Calls API).

Dans l’exemple suivant, nous allons créer une conférence entre un SIP Endpoint sur lequel un softphone est configuré et un numéro externe (appel via Zadarma).

Dans cet exemple, nous utiliserons un script Python. Avant de commencer, assurez-vous que Python et la bibliothèque Twilio sont installés sur votre système (www.twilio.com/docs/libraries/reference/twilio-python).


from twilio.rest import Client

account_sid = 'YOUR_TWILIO_ACCOUNT_SID'
auth_token = 'YOUR_TWILIO_AUTH_TOKEN'
client = Client(account_sid, auth_token)

call = client.calls.create(
    twiml='<Response><Dial>sip:EXTERNAL_PHONE@zadarma.com</Dial></Response>',
    to='sip:11111@15551111111.sip.twilio.com',
    from_='YOUR_TWILIO_PHONE_NUMBER'
)

print(call.sid)

Dans cet exemple, une conférence sera créée entre un terminal SIP et un numéro externe via Zadarma.

Vous pouvez ainsi passer des appels sortants via votre compte Zadarma en utilisant l’API Twilio ou d’autres outils disponibles de Twilio.

Exemple d’appel sortant

La configuration des appels sortants est terminée.

Conclusion

L’intégration entre Zadarma et Twilio offre de nombreuses possibilités pour la gestion des appels entrants et sortants. Vous pouvez configurer un routage flexible, utiliser des scénarios vocaux, et profiter des tarifs avantageux de Zadarma pour communiquer avec vos clients dans le monde entier.

Suivez les instructions étape par étape pour configurer les numéros virtuels Zadarma dans votre infrastructure Twilio.

Pour authentifier la requête, vous devez utiliser l'Account SID et l'Auth Token — vous pouvez les trouver dans le tableau de bord de votre compte Twilio en haut à gauche de la page.

Pour l’autorisation de l’appel sortant, le login SIP et le mot de passe seront utilisés depuis l’espace client Zadarma.

Pour l’autorisation de l’appel sortant, le numéro interne du standard virtuel et le mot de passe seront utilisés depuis l’espace client Zadarma.

Créez un script call.py avec le contenu suivant :


from twilio.rest import Client

# Identifiants Twilio
ACCOUNT_SID = "Account_SID_value"
AUTH_TOKEN = "Auth_Token_value"
TWILIO_NUMBER = "+15559999999"  # Numéro validé dans Twilio pour l’identification de l’appelant
CONFERENCE_NAME = "MyConferenceRoom"

# Identifiants SIP Zadarma
ZADARMA_SIP_URI = "sip:+525500000777@sip.zadarma.com"  # Numéro à appeler via Zadarma
ZADARMA_SIP_USER = "12345"  # Remplacez 12345 par votre login SIP Zadarma
ZADARMA_SIP_PASSWORD = "my_sip_password"  # Mot de passe de votre login SIP Zadarma

# Point de terminaison SIP (local)
SIP_ENDPOINT = "sip:11111@15551111111.sip.twilio.com"  # Votre endpoint SIP où le softphone est configuré pour recevoir les appels

# Initialisation du client Twilio
client = Client(ACCOUNT_SID, AUTH_TOKEN)

# Fonction d’ajout d’un participant à la conférence
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>"""
    }

    # Ajout de l’authentification
    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"Appel vers {to_number} lancé, SID : {call.sid}")

# Lancement des appels
add_to_conference(ZADARMA_SIP_URI, from_number=TWILIO_NUMBER, sip_auth_user=ZADARMA_SIP_USER, sip_auth_password=ZADARMA_SIP_PASSWORD)  # Appel vers le numéro externe via Zadarma
add_to_conference(SIP_ENDPOINT)  # Connexion du point de terminaison SIP

print(f"La conférence '{CONFERENCE_NAME}' a été créée !")


from twilio.rest import Client

# Identifiants Twilio
ACCOUNT_SID = "Account_SID_value"
AUTH_TOKEN = "Auth_Token_value"
TWILIO_NUMBER = "+15559999999"  # Numéro validé dans Twilio pour l’identification de l’appelant
CONFERENCE_NAME = "MyConferenceRoom"

# Identifiants SIP Zadarma
ZADARMA_SIP_URI = "sip:+525500000777@pbx.zadarma.com"  # Numéro à appeler via Zadarma
ZADARMA_SIP_USER = "1234-100"  # Remplacez 1234-100 par votre numéro interne du standard virtuel de Zadarma
ZADARMA_SIP_PASSWORD = "my_pbx_password"  # Mot de passe de votre numéro interne du standard virtuel de Zadarma

# Point de terminaison SIP (local)
SIP_ENDPOINT = "sip:11111@15551111111.sip.twilio.com"  # Votre endpoint SIP où le softphone est configuré pour recevoir les appels

# Initialisation du client Twilio
client = Client(ACCOUNT_SID, AUTH_TOKEN)

# Fonction d’ajout d’un participant à la conférence
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>"""
    }

    # Ajout de l’authentification
    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"Appel vers {to_number} lancé, SID : {call.sid}")

# Lancement des appels
add_to_conference(ZADARMA_SIP_URI, from_number=TWILIO_NUMBER, sip_auth_user=ZADARMA_SIP_USER, sip_auth_password=ZADARMA_SIP_PASSWORD)  # Appel vers le numéro externe via Zadarma
add_to_conference(SIP_ENDPOINT)  # Connexion du point de terminaison SIP

print(f"La conférence '{CONFERENCE_NAME}' a été créée !")

Enregistrez et lancez votre script call.py. Si tout est correctement configuré, les appels arriveront sur le softphone et sur le numéro externe depuis votre login SIP Zadarma.

Enregistrez et lancez votre script call.py. Si tout est correctement configuré, les appels arriveront sur le softphone et sur le numéro externe depuis votre numéro interne du standard virtuel de Zadarma.