Інтеграція 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)".
У полі, що з'явилося, введіть SIP URI: sip: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.
Створіть скрипт з наступним вмістом:
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}' створено!")
Збережіть та запустіть ваш Python-скрипт. Якщо все налаштовано правильно, дзвінки надійдуть до софтфону та на зовнішній номер від вашого SIP-логіна Zadarma.