Интеграция Zadarma и Twilio позволяет направлять входящие звонки с виртуальных номеров Zadarma в ваш Twilio и обрабатывать их согласно вашим текущим настройкам Twilio. Вы также можете совершать исходящие звонки из Twilio через ваш аккаунт в Zadarma по выгодным тарифам Zadarma.
1. Настройка входящих звонков
Добавление SIP-домена в Twilio.
В вашем аккаунте Twilio откройте раздел Twilio Console → Voice → SIP Domains и нажмите на кнопку + для добавления нового домена.
Пример настроек SIP-домена:
FRIENDLY NAME - имя домена, например zadarma;
SIP URI - домен, произвольное название, для удобства можно использовать виртуальный номер.
В секции Voice Authentication добавьте по очереди IP ACCESS CONTROL LISTS которые будут содержать доверительные IP адреса Zadarma с которых Twilio будете принимать входящие звонки.
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
Убедитесь что все добавленные IP ACCESS CONTROL LISTS выбраны в настройках SIP домена.
Ниже в секции Call Control Configuration в параметре A CALL COMES IN выберите что именно будет управлять входящими звонками, если у вас уже настроена маршрутизация входящих звонков в Twilio - выберите ваш вариант, например Studio и ваш Flow (сценарий) для входящих звонков, нажмите Save для сохранения настроек вашего SIP-домена.
Пример Flow (сценарий) для входящих звонков▾
Если вы выбрали свой вариант в A CALL COMES IN - пропустите этот пункт, тут показан пример создания простого Flow для входящих звонков в визуальном редакторе Twilio Studio.
1. Перейдите в Twilio Console → Studio и нажмите кнопку Create new Flow. Введите FLOW NAME например Incoming calls.
2. Выберите шаблон Start from scratch и нажмите Next.
3. Перетащите блок Gather Input on Call (для меню IVR) и соедините с Trigger (Incoming Call).
4. Укажите голосовое сообщение (Text to Speech или Audio URL).
5. Настройте обработку выбора (1 – в отдел продаж, 2 – в поддержку и т. д.).
Далее необходимо создать два Set Variables для модификации номера звонящего из заголовка From.
Создайте первый Set Variables с Variable Name: step1_caller_id и Value:
Добавьте переход входящего звонка на экстеншен, с помощью Connect Call To.
CONNECT CALL TO – выберите SIP Endpoint.
В SIP ENDPOINT введите его URL, например sip:11111@15551111111.sip.twilio.com
В CALLER ID
{{flow.variables.clean_caller_id}}
Сохраните настройки виджетов и опубликуйте Flow нажав Publish.
Далее в настройках SIP Domain в секции SIP Registration необходимо включить возможность регистрироваться, переключив тумблер в Enabled.
Ниже необходимо в CREDENTIAL LISTS выбрать существующий SIP Endpoint который будет принимать входящие звонки с помощью софтфона. Если у вас еще нет SIP Endpoint - создайте его нажав на кнопку "+".
Добавление SIP Endpoint▾
Если у вас уже есть SIP Endpoint - пропустите этот этап.
FRIENDLY NAME - my twilio extension.
USERNAME - произвольный логин, например 11111.
PASSWORD - пароль для авторизации, придумайте сложный пароль, минимум 12 символов.
Софтфон будет подключаться к вашему домену, например 15551111111.sip.twilio.com и использовать USERNAME и PASSWORD для авторизации .
В настройках внутреннего номера, напротив параметра "Переадресация и голосовая почта" нажмите "Включить".
Выберите условие переадресации, например "Всегда".
В параметре "Переадресация на" выберите "Внешний сервер (SIP URI)".
В появившемся поле введите 15551111111@15551111111.sip.twilio.com
- где 15551111111.sip.twilio.com – это ваш SIP URI из настроек SIP-домен в Twilio.
Нажмите "Сохранить".
Настройка входящих звонков завершена.
2. Настройка исходящих звонков из Twilio
Исходящие звонки из Twilio можно совершать нескольким способами, рассмотрим пример инициации звонка через Twilio REST API (Calls API).
В следующем примере будет показано создание конференции между SIP Endpoint на котором настроен софтфон и внешнего номера (звонок через Zadarma).
В примере будет использоваться python-скрипт, перед началаом убедитесь что в вашей системе установлен python и библиотека twilio (www.twilio.com/docs/libraries/reference/twilio-python).
Для аутентификации запроса необходимо использовать Account SID и Auth Token вы можете их найти в Twilio в Account Dashboard в левом верхнем углу страницы.
Для авторизации исходящего звонка будет использоваться Sip-логин и пароль из личного кабинета Zadarma.
Для авторизации исходящего звонка будет использоваться внутренний номер АТС и пароль из личного кабинета Zadarma.
Создайте скрипт call.py с следующим содержимым:
from twilio.rest import Client
# Twilio учетные данные
ACCOUNT_SID = "Account_SID_value"
AUTH_TOKEN = "Auth_Token_value"
TWILIO_NUMBER = "+15559999999" # Подтвержденный номер в Twilio для Caller ID
CONFERENCE_NAME = "MyConferenceRoom"
# Zadarma SIP учетные данные
ZADARMA_SIP_URI = "sip:+525500000777@sip.zadarma.com" # Куда звоним через Zadarma
ZADARMA_SIP_USER = "12345" # вместо 12345 должен быть ваш sip-логин из Zadarma
ZADARMA_SIP_PASSWORD = "my_sip_password" # Пароль от sip-логина Zadarma
# SIP Endpoint (локальный)
SIP_ENDPOINT = "sip:11111@15551111111.sip.twilio.com" # Ваш SIP Endpoint на котором настроен софтфон для приема звонков
# Инициализация Twilio клиента
client = Client(ACCOUNT_SID, AUTH_TOKEN)
# Функция добавления участника в конференцию
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>"""
}
# Добавляем аутентификацию
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"Вызов на {to_number} начат, SID: {call.sid}")
# Запуск звонков
add_to_conference(ZADARMA_SIP_URI, from_number=TWILIO_NUMBER, sip_auth_user=ZADARMA_SIP_USER, sip_auth_password=ZADARMA_SIP_PASSWORD) # Звонок на внешний номер через Zadarma
add_to_conference(SIP_ENDPOINT) # Подключаем SIP Endpoint
print(f"Конференция '{CONFERENCE_NAME}' создана!")
from twilio.rest import Client
# Twilio учетные данные
ACCOUNT_SID = "Account_SID_value"
AUTH_TOKEN = "Auth_Token_value"
TWILIO_NUMBER = "+15559999999" # Подтвержденный номер в Twilio для Caller ID
CONFERENCE_NAME = "MyConferenceRoom"
# Zadarma SIP учетные данные
ZADARMA_SIP_URI = "sip:+525500000777@pbx.zadarma.com" # Куда звоним через Zadarma
ZADARMA_SIP_USER = "1234-100" # вместо 1234-100 должен быть ваш внутренний номер АТС Zadarma
ZADARMA_SIP_PASSWORD = "my_pbx_password" # Пароль от внутреннего номера АТС Zadarma
# SIP Endpoint (локальный)
SIP_ENDPOINT = "sip:11111@15551111111.sip.twilio.com" # Ваш SIP Endpoint на котором настроен софтфон для приема звонков
# Инициализация Twilio клиента
client = Client(ACCOUNT_SID, AUTH_TOKEN)
# Функция добавления участника в конференцию
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>"""
}
# Добавляем аутентификацию
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"Вызов на {to_number} начат, SID: {call.sid}")
# Запуск звонков
add_to_conference(ZADARMA_SIP_URI, from_number=TWILIO_NUMBER, sip_auth_user=ZADARMA_SIP_USER, sip_auth_password=ZADARMA_SIP_PASSWORD) # Звонок на внешний номер через Zadarma
add_to_conference(SIP_ENDPOINT) # Подключаем SIP Endpoint
print(f"Конференция '{CONFERENCE_NAME}' создана!")
Сохраните и запустите ваш скрипт call.py. Если всё настроено верно, звонки поступят в софтфон и на внешний номер от вашего SIP-логина Zadarma.
Сохраните и запустите ваш скрипт call.py. Если всё настроено верно, звонки поступят в софтфон и на внешний номер от вашего внутренего номера виртуальной АТС Zadarma.
Продолжая использовать наш сайт, Вы даете согласие на обработку файлов Cookies и пользовательских данных, подробнее в нашей Политике Cookie. Если Вы не хотите, чтобы Ваши данные обрабатывались, пожалуйста, покиньте сайт.
Этот сайт нуждается в определенных файлах Cookies, которые технически необходимы для работы сайта. Мы также хотели бы установить дополнительные файлы Cookies, чтобы улучшить наш сервис. Мы не будем устанавливать дополнительные файлы Cookies, если вы их не включите. Вы можете изменить свой выбор в любое время на странице нашей Политики Cookie.