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.
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
- 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
Assurez-vous que les trois IP ACCESS CONTROL LISTS ajoutées sont bien sélectionnées dans les paramètres du domaine SIP.
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.
Exemple de Flow (scénario) pour les appels entrants▾
Si vous avez choisi votre propre option dans A CALL COMES IN, passez cette étape. Cet exemple illustre la création d’un Flow simple pour les appels entrants à l’aide de l’éditeur visuel Twilio Studio.
1. Allez dans Twilio Console → Studio et cliquez sur Create new Flow. Saisissez FLOW NAME, par exemple Incoming calls.
2. Sélectionnez Start from scratch et cliquez sur Next.
3. Faites glisser le bloc Gather Input on Call (pour un menu IVR) et connectez-le à Trigger (Incoming Call).
4. Définissez un message vocal (Text to Speech ou Audio URL).
5. Configurez le traitement des choix (1 – service commercial, 2 – support technique, etc.).
Ensuite, créez deux Set Variables pour modifier le numéro de l’appelant extrait de l’en-tête From.
Créez le premier Set Variables avec :
- Variable Name : step1_caller_id
- Value :
{{contact.channel.address | replace: "sip:", "" }}
Créez ensuite le deuxième Set Variables (après le premier) :
- Variable Name : clean_caller_id
- Value :
{{flow.variables.step1_caller_id | replace: "@sip.zadarma.com", "" }}
Ajoutez un transfert d’appel vers une extension via Connect Call To.
CONNECT CALL TO – sélectionnez SIP Endpoint.
Dans SIP ENDPOINT, entrez l’URL, par exemple :
sip:11111@15551111111.sip.twilio.com
Dans CALLER ID :
{{flow.variables.clean_caller_id}}
Enregistrez les paramètres des widgets et publiez le Flow en cliquant sur Publish.
Dans les paramètres du domaine SIP, sous SIP Registration, activez l’option d’enregistrement en basculant le commutateur sur Enabled.
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▾
Si vous avez déjà un SIP Endpoint, passez cette étape.
- FRIENDLY NAME - my twilio extension.
- USERNAME - identifiant arbitraire, par exemple 11111.
- PASSWORD - mot de passe sécurisé, minimum 12 caractères.
Le softphone se connectera à votre domaine, par exemple 15551111111.sip.twilio.com, en utilisant USERNAME et PASSWORD pour l’authentification.
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 :
- Ouvrez la section Paramètres → Numéros virtuels dans Zadarma.
- Cliquez sur l’icône ⚙ à côté de votre numéro.
- Ouvrez l’onglet "Serveur externe".
- Activez l’option "Serveur externe (SIP URI)".
- Dans le champ qui apparaît, entrez le SIP URI :
sip:15551111111@15551111111.sip.twilio.com
- 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.