Intégration avec Twilio

L'intégration de Zadarma et Twilio permet de rediriger les appels entrants des numéros virtuels Zadarma vers votre compte Twilio et de les traiter selon vos paramètres actuels Twilio. Vous pouvez également passer des appels sortants depuis Twilio via votre compte Zadarma en profitant 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 d'un domaine SIP :

  • FRIENDLY NAME - nom du domaine, par exemple zadarma;
  • SIP URI - domaine, nom arbitraire ; pour plus de simplicité, 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, à partir desquelles Twilio acceptera les appels entrants. Ces adresses IP sont disponibles dans la section Paramètres → Numéros virtuels ou peuvent être copiées 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 bien sélectionnées dans les paramètres du domaine SIP.

Voice Authentication

Dans la section Call Control Configuration, sous A CALL COMES IN, sélectionnez l'option qui gérera 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. Cliquez sur Save pour enregistrer les paramètres du domaine SIP.

Call Control Configuration

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


Dans les paramètres du domaine SIP, sous SIP Registration, activez l’option d’enregistrement en basculant le commutateur sur Enabled.

SIP Registration

Ensuite, dans CREDENTIAL LISTS, sélectionnez le SIP Endpoint existant qui recevra les appels via un softphone. Si vous n’avez pas encore de SIP Endpoint, créez-en un en cliquant sur "+".

Ajout d’un SIP Endpoint


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

2. Routage des appels vers Twilio

Dans la section précédente, nous avons ajouté un domaine SIP à Twilio, comprenant le SIP URI nécessaire au routage :

  1. Ouvrez la section Paramètres → Numéros virtuels dans Zadarma.
  2. Cliquez sur l’icône ⚙ à côté de votre numéro.
  3. Ouvrez l’onglet "Serveur externe".
  4. Activez l’option "Serveur externe (SIP URI)".
  5. Dans le champ qui apparaît, entrez le SIP URI :
    sip:15551111111@15551111111.sip.twilio.com
  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 manières. Examinons un exemple d'initiation d'appel via l'API REST de Twilio (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).

Le script utilisé sera en 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).

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

Pour l'autorisation de l'appel sortant, le login et le mot de passe SIP de votre espace personnel Zadarma seront utilisés.

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'ID de l'appelant
CONFERENCE_NAME = "MyConferenceRoom"

# Identifiants SIP Zadarma
ZADARMA_SIP_URI = "sip:+525500000777@sip.zadarma.com"  # Numéro appelé 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

# SIP Endpoint (local)
SIP_ENDPOINT = "sip:11111@15551111111.sip.twilio.com"  # Votre SIP Endpoint 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 SIP
    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} initié, 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 SIP Endpoint

print(f"Conférence '{CONFERENCE_NAME}' créée !")

Enregistrez et exécutez votre script call.py. Si tout est correctement configuré, les appels seront reçus par le softphone et le numéro externe associé à votre login SIP Zadarma.