Создание учетной записи провайдера sip-телефонии

Предварительные условия

Операции

Подготовка лицензии (опционально)

В случае если лицензии на провайдеров не были распределены на домен выполнить следующие операции, а затем перейти к созданию учетной записи

1. Выполнить аутентификацию для выполнения запросов API в мастер домене.

2. Выделить лицензии рабочему домену, в котором будут создаваться учетные записи.

$ curl -b <cookie_file_path> \
       -X POST \
       -H 'Content-Type: application/json' \
       -d '{"lic":<lic_params>}' \ (1)
       <api_prefix>/rest/v1/domain/domains/<domain_id> (2)
1 <lic_params> – параметры лицензиипередаваемые дочернему домену.
2 <domain_id> – идентификатор домена.

Например:

$ curl -b curl-master.cookies \
       -X PATCH \
       -H 'Content-Type: application/json' \
       -d '{"lic":{"siptrunks":111}}' \
       http://192.168.0.35/rest/v1/domain/domains/a98ddbe8-3dce-45c2-d7e6-74d435997ea5

<domain_entity> (1)
1 <domain_entity> – измененная сущность домена.

3. Выполнить аутентификацию для выполнения запросов API в рабочем домене.

4. Зарезервировать лицензии в рабочем домене.

$ curl -b <cookie_file_path> \
       -X PATCH \
       -H 'Content-Type: application/json' \
       -d '{"key":"licowned","value":<license_content>' \ (1)
       <api_prefix>/rest/v1/domain/settings/licowned
1 <license_params> – параметры лицензии.

Например:

$ curl -b curl-worker.cookies \
       -X PATCH \
       -H 'Content-Type: application/json' \
       -d '{"key":"licowned","value":{"siptrunks":111}}' \
       http://192.168.0.35/rest/v1/domain/settings/licowned

<response_body> (1)
1 <response_body> – информация о зарезервированных параметрах лицензии.
Создание провайдера и маршрутизация

1. Создать провайдера sip-телефонии.

$ curl -b <cookie_file_path> \
       -X POST \
       -H 'Content-Type: application/json' \
       -d '{"code":"<code>","username":"<username>","pwd":"<pwd>","domain":"<domain>","serveridx":<serveridx>}' \ (1) (2) (3) (4) (5)
       <api_prefix>/rest/v1/uc/providers
1 <code> – код провайдера.
2 <username> – имя пользователя.
3 <pwd> – пароль.
4 <domain> – SIP сервер.
5 <serveridx> – телефонный номер.

Например:

$ curl -b curl-worker.cookies \
       -X POST \
       -H 'Content-Type: application/json' \
       -d '{"code":"test_code","username":"test_username","pwd":"test_pwd","domain":"sipprovider.ru","serveridx":18}' \
       http://192.168.0.35/rest/v1/uc/providers

{
  "alternative_proxies": "",
  "code": "test_code",
  "domain": "sipprovider.ru",
  "enabled": 1,
  "expires": 3600,
  "ext": {
    "ct": "2019-11-01T13:42:40.20Z",
    "lwt": "2019-11-01T13:42:40.20Z"
  },
  "extaddrs": "",
  "id": "8f99ae11-016e-2734-2950-e0d55e0cd13e",
  "lic": {
    "siptrunks": 123456789
  },
  "localdomain": "",
  "login": "",
  "media": 0,
  "opts": {
    "agat_chassis_id": "",
    "agat_lm_id": "",
    "agat_port_id": "",
    "comment": "",
    "title": ""
  },
  "pingmode": "none",
  "pingsrv": "",
  "pingtimeout": 10,
  "proxyaddr": "",
  "proxyport": 0,
  "pwd": "test_pwd",
  "reg": 1,
  "reinvite": 1,
  "serveridx": 18,
  "translit": 0,
  "transport": "udp",
  "trunksout": 99999,
  "username": "test_username"
}
$ curl -b <cookie_file_path> \
       -X POST \
       -H 'Content-Type: application/json' \
       -d '{"vector":"<vector_name>","priority":"<priority>"}' \ (1) (2)
       <api_prefix>/rest/v1/uc/routes (3)
1 <vector_name> – название вектора.
2 <priority> – приоритет вектора.

Например:

$ curl -b curl-worker.cookies \
       -X POST \
       -H 'Content-Type: application/json' \
       -d '{"vector":"test_docs_external","priority":"5001"}' \
       http://192.168.0.35/rest/v1/uc/routes

{
  "dir": "*",
  "ext": {
    "ct": "2019-11-01T09:22:45.29Z",
    "lwt": "2019-11-01T09:22:45.29Z"
  },
  "fromdomain": "*",
  "fromextaccount": "*",
  "fromnumber": "*",
  "id": "f4a6be68-016e-2764-7d83-e0d55e0cd13e",
  "opts": {
    "comment": "",
    "title": ""
  },
  "periods": [],
  "priority": 5001,
  "schedule": "all",
  "tonumber": "*",
  "vector": "test_docs_external"
}
$ curl -b <cookie_file_path> \
       -X POST \
       -H 'Content-Type: application/json' \
       -d '{"vector":"<vector_name>","action":"external","toextaccount":"<ext_account_code>","priority":"<priority>"}' \ (1) (2) (3)
       <api_prefix>/rest/v1/uc/vectorrules (3)
1 <vector_name> – название вектора.
2 <priority> – код провайдера sip-телефонии.
3 <priority> – приоритет вектора.

Например:

$ curl -b curl-worker.cookies \
       -X POST \
       -H 'Content-Type: application/json' \
       -d '{"vector":"test_docs_external","action":"external","toextaccount":"test_code","priority":"5001"}' \
       http://192.168.0.35/rest/v1/uc/vectorrules

{
  "action": "external",
  "dir": "*",
  "ext": {
    "ct": "2019-11-01T10:21:34.50Z",
    "lwt": "2019-11-01T10:21:34.50Z"
  },
  "fromdomain": "*",
  "fromextaccount": "*",
  "fromnumber": "*",
  "id": "e666cf51-016e-2766-620d-e0d55e0cd13e",
  "modfromnumber": "T",
  "modtonumber": "T",
  "opts": {
    "comment": "",
    "title": ""
  },
  "periods": [],
  "priority": 5001,
  "schedule": "all",
  "todomain": "",
  "toextaccount": "test_code",
  "tonumber": "*",
  "vector": "test_docs_external"
}

Проверка результата

  • TODO: Проверить состояние регистрации провайдера.

  • TODO:Выполнить моделирование маршрутизации