Интеграция 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 будете принимать входящие звонки. Даннные IP вы можете найти в разделе Настройки → Виртуальные номера либо просто скопировать из этой инструкции.
- 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
Убедитесь что все три добавленные 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:
{{contact.channel.address | replace: "sip:", "" }}
Создайте второй Set Variables (после первого) Variable Name: clean_caller_id и Value:
{{flow.variables.step1_caller_id | replace: "@sip.zadarma.com", "" }}
Добавьте переход входящего звонка на экстеншен, с помощью 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 домена завершена, нажмите кнопку Save.
2. Направление звонков в Twilio
В предыдущем пункте мы добавили SIP-домен в Twilio в котором есть необходимый для маршрутизации SIP URI:
- Откройте в Zadarma раздел Настройки → Виртуальные номера.
- Напротив вашего номера нажмите на значок ⚙ (шестеренка).
- Откройте вкладку "Внешний сервер".
- Включите опцию "Внешний сервер (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.
Создайте скрипт 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}' создана!")
Сохраните и запустите ваш скрипт call.py. Если всё настроено верно, звонки поступят в софтфон и на внешний номер от вашего SIP-логина Zadarma.