В данном приложении описано использование HTTP(S) API шлюза SMG для реализации сценария Click-to-Call – инициирования вызова между абонентами через внешний сервис.

Предварительная настройка

Перед началом работы необходимо выполнить следующие шаги:

1. Настроить API-сервер шлюза

API → Сервер

2. Получение токена авторизации

API ключ

API → Ключи

API аккаунт

Аккаунт должен иметь доступ к событиям вызовов.

API → Аккаунты

Авторизация происходит по имени пользователя и паролю

curl -X POST http://<IP>:<call_port>/api/v1/login \
  -H "Content-Type: application/json" \
  -d '{"login":"<login>","password":"<password>"}'

Ответ:

{"status":"ok","version":"v1","payload":{"token":"Y3CupaVwSpDcmK83kxzSlymZhEIeib"}}

SIP абонент

Абонент должен иметь:

Абоненты → SIP абоненты

Авторизация происходит по номеру абонента и паролю.

curl -X POST http://<IP>:<call_port>/api/v1/login \
  -H "Content-Type: application/json" \
  -d '{"login":"<number>","password":"<password>"}'

Ответ:

{"status":"ok","version":"v1","payload":{"token":"UjovsML3mIAzIs66zevqnQGElCjwrU"}}


Токены API аккаунта и SIP-абонента истекают через 20 минут неактивности. API ключ не имеет ограничения по времени действия.

Click-to-Call

Описание

Метод инициирует установление двухстороннего вызова:

  1. Выполняется вызов абонента cdpn;
  2. После получения сигнала 100 Trying инициируется вызов cgpn;
  3. После ответа обоих абонентов устанавливается соединение.

Для инициирования вызова с помощью метода /make_call необходимо, чтобы для абонента-инициатора (CGPN, параметр from_number) был включен доступ к API (Абоненты → SIP-абоненты → Доступ к API).

Параметры запроса

ПараметрОписание
from_numberНомер инициирующего абонента (cgpn).
Для указанного абонента должен быть включен доступ к API
to_numberНомер вызываемого абонента (cdpn)

Запрос:

curl -X POST "http://<IP>:<call_port>/api/v1/service/call/make_call" \
  -H "accept: application/json" \
  -H "Authorization: Bearer UjovsML3mIAzIs66zevqnQGElCjwrU" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "_name": "in",
      "_content": [
        {
          "_name": "request",
          "_content": [
            {
              "_name": "make_call",
              "_attributes": {
                "to_number": "<cdpn>",
                "from_number": "<cgpn>"
              }
            }
          ]
        }
      ]
    }
  ]'

Ответ:

ok                                                                       

Особенности:

В текущей реализации API предназначено для инициирования вызовов без возможности отслеживания их состояния.