Інтеграція з Twilio

Інтеграція Zadarma та Twilio дозволяє направляти вхідні дзвінки з віртуальних номерів Zadarma в ваш Twilio та обробляти їх згідно з вашим поточними налаштуваннями Twilio. Ви також можете здійснювати вихідні дзвінки з Twilio через ваш акаунт в Zadarma за вигідними тарифами Zadarma.

1. Налаштування вхідних дзвінків входящих звонков

Додавання SIP-домену в Twilio.

У вашому акаунті Twilio відкрийте розділ Twilio Console → Voice → SIP Domains та натисніть на кнопку + для додавання нового домену.

Приклад налаштувань SIP-домена:

  • FRIENDLY NAME - ім'я домену, наприклад zadarma;
  • SIP URI - домен, довільна назва, для зручності можна використовувати віртуальний номер.

SIP Domain URL

В секції Voice Authentication додайте по черзі три IP ACCESS CONTROL LISTS, які будуть містити довірчі IP адреси Zadarma, з яких Twilio буде приймати вхідні дзвінки. Ці IP ви можете знайти в розділі Налаштування → Віртуальні номери або просто скопіювати з цієї інструкції.

  • FRIENDLY NAME - sipurifr.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.152.216 /32

IP ACCESS CONTROL LISTS

  • FRIENDLY NAME - sipuriny.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.155.33 /32

IP ACCESS CONTROL LISTS

  • FRIENDLY NAME - sipde.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.152.174 /32

IP ACCESS CONTROL LISTS

Переконайтеся, що всі три додані IP ACCESS CONTROL LISTS обрані в налаштуваннях SIP домену.

Voice Authentication

Нижче, в секції Call Control Configuration в параметрі A CALL COMES IN оберіть, що саме буде керувати вхідними дзвінками, якщо у вас вже налаштована маршрутизація вхідних дзвінків у Twilio - оберіть ваш варіант, наприклад Studio та ваш Flow (сценарій) для вхідних дзвінків, натисніть Save для збереження налаштувань вашого SIP-домену.

Call Control Configuration

Приклад Flow (сценарій) для вхідних дзвінків


Далі в налаштуваннях SIP Domain в секції SIP Registration необхідно увімкнути можливість реєструватись, перемкнувши тумблер в Enabled.

SIP Registration

Нижче необхідно в CREDENTIAL LISTS обрати існуючий SIP Endpoint, який буде приймати вхідні дзвінки, за допомогою софтфона. Якщо у вас ще немає SIP Endpoint - створіть його, натиснувши на кнопку "+".

Додавання SIP Endpoint


Налаштування SIP домену завершено, натисніть кнопку Save.

2. Направлення дзвінків в Twilio

В попередньому пункті ми додали SIP-домен в Twilio, в якому є необхідний для маршрутизації SIP URI:

  1. Відкрийте в Zadarma розділ Налаштування → Віртуальні номери.
  2. Навпроти вашого номеру натисніть на значок ⚙ (шестеренка).
  3. Відкрийте вкладку "Зовнішній сервер".
  4. Увімкніть опцію "Зовнішній сервер (SIP URI)".
  5. У полі, що з'явилося, введіть SIP URI: sip:15551111111@15551111111.sip.twilio.com

    - де 15551111111.sip.twilio.com – це ваш SIP URI з налаштувань SIP-домен в Twilio.

  6. Натисніть "Зберегти".

Налаштування вхідних дзвінків завершено.

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.