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.
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
- 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 sélectionnées dans les paramètres du domaine SIP.
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.
Exemple de Flow (scénario) pour les appels entrants▾
Si vous avez choisi votre propre option dans A CALL COMES IN – ignorez cette section, voici un exemple de création d’un simple Flow pour les appels entrants dans l’éditeur visuel Twilio Studio.
1. Allez dans Twilio Console → Studio et cliquez sur Create new Flow. Entrez FLOW NAME par exemple Incoming calls.
2. Sélectionnez le modèle 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. Indiquez un message vocal (Text to Speech ou Audio URL).
5. Configurez le traitement des choix (1 – vers les ventes, 2 – vers le support, etc.).
Ensuite, vous devez créer deux Set Variables pour modifier le numéro de l’appelant depuis l’en-tête From.
Créez la première variable Set Variables avec Variable Name : step1_caller_id et Value :
{{contact.channel.address | replace: "sip:", "" }}
Créez la seconde Set Variables (après la première) Variable Name : clean_caller_id et Value :
{{flow.variables.step1_caller_id | replace: "@sip.zadarma.com", "" }}
{{flow.variables.step1_caller_id | replace: "@pbx.zadarma.com", "" }}
Ajoutez le transfert de l’appel entrant vers une extension à l’aide de Connect Call To.
CONNECT CALL TO – sélectionnez SIP Endpoint.
Dans SIP ENDPOINT, entrez son 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.
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.
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▾
Si vous avez déjà un SIP Endpoint – ignorez cette étape.
- FRIENDLY NAME - my twilio extension.
- USERNAME - login arbitraire, par exemple 11111.
- PASSWORD - mot de passe pour l’authentification, créez un mot de passe fort, minimum 12 caractères.
Le softphone se connectera à votre domaine, par exemple 15551111111.sip.twilio.com et utilisera le USERNAME et le PASSWORD pour s’authentifier.
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 :
- Allez dans Zadarma, section Paramètres → Numéros virtuels.
- En face de votre numéro, cliquez sur l’icône ⚙ (engrenage).
- Ouvrez l’onglet "Serveur externe".
- Activez l’option "Serveur externe (SIP URI)".
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.
- Cliquez sur "Enregistrer".
- Allez dans Zadarma, section Standard virtuel → Numéros internes.
- Dans les paramètres du numéro interne, en face du paramètre "Renvoi et messagerie vocale", cliquez sur "Activer".
- Sélectionnez la condition de renvoi, par exemple "Toujours".
- Dans le paramètre "Renvoi vers", choisissez "Serveur externe (SIP URI)".
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.
- 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.
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.