Подменные номера
Модуль подменяет реальные номера абонентов при звонках: абонент А звонит на выделенный «подменный» номер, а система соединяет его с абонентом Б так, что настоящие номера скрыты друг от друга. Для работы должен быть доступен Ротация номеров.
Объекты
DomainHideContact — связка двух контактов и назначенные им подменные номера;
DomainHideContactArch — архив завершённых или удалённых связок;
DomainHideContactCall — запись о вызове через подменный номер.
Правила подмены (схемы) задаются в настройках модуля объектом DomainHideContactSetting (см. раздел Настройки).
Чтобы создать связку, нужно выбрать схему подмены. Модуль поддерживает четыре схемы (ниже описаны три основные).
Схема 1
Данная схема подразумевает абонента А, который звонит на подменный номер, чтобы попасть на абонента Б. По такой схеме абонент Б также может перезвонить на подменный номер, чтобы соединиться с абонентом А.
Для раздела Номера запрос будет выглядеть следующим образом:
{
"action": "append",
"obj": "DomainHideContact",
"action_id": "12345",
"params": {
"domain_id": 34,
"start_dt": 1703570405,
"end_dt": 1703571405,
"external_id": "some_external_id",
"contact_a": "79ХХХХХХХХХ",
"contact_b": "79YYYYYYYYY",
"status": 1,
"rule_id": "ea20f8e2-1e0d-a7a0-aa12-17d479c5bc64"
}
}
Схема 2
Данная схема подразумевает абонента А, который звонит на подменный номер, чтобы попасть на абонента Б, но абонент Б не сможет по подменному номеру дозвониться до абонента А.
Для раздела Номера запрос будет выглядеть следующим образом:
{
"action": "append",
"obj": "DomainHideContact",
"action_id": "12345",
"params": {
"domain_id": 34,
"start_dt": 1730713480,
"end_dt": 1730713680,
"external_id": "some_external_id",
"contact_a": "79ХХХХХХХХХ",
"rule_id": "00348fdb-2221-42f3-b827-a2241241054f",
"status": 1
}
}
Схема 3
Данная схема подразумевает абонента А и абонента Б, на каждого из которых вешается подменный номер для связи друг с другом через шлюз.
Для раздела Номера запрос будет выглядеть следующим образом:
{
"action": "append",
"obj": "DomainHideContact",
"action_id": "12345",
"params": {
"domain_id": 34,
"start_dt": 1730713606,
"end_dt": 1730713806,
"external_id": "some_external_id",
"contact_a": "79ХХХХХХХХХ",
"contact_b": "79YYYYYYYYY",
"rule_id": "63723089-ca90-4f1d-953a-91b7a858af98",
"status": 1
}
}
Схема 4
Два абонента без пула подменных номеров: вызовы идут через шлюз, указанный в правиле (default_gw_number_id). В настройках такому правилу соответствует schema: 4 (gnpg_id при этом автоматически становится -1).
Настройки
{
"action": "append",
"obj": "DomainHideContactSetting",
"action_id": "59a9-1500-1ea0-b706",
"params": {
"domain_id": 34,
"params": {
"model_name": "DomainHideContactSetting",
"rules": {
"03bb43bf-de54-8bcf-bfcc-723cb53ee77c": {
"name": "Скрытие контакта. Схема 1.",
"contact_a_on_dial": {
"list": []
},
"contact_a_on_bridge": {
"list": []
},
"contact_a_on_no_answer": {
"list": []
},
"contact_b_on_dial": {
"list": []
},
"contact_b_on_bridge": {
"list": []
},
"contact_b_on_no_answer": {
"list": []
},
"outbound_condition": "mobile",
"default_gw_number_id": 83,
"gnpg_id": 78,
"schema": 1
},
"00348fdb-2221-42f3-b827-a2241241054f": {
"name": "Скрытие контакта. Схема 2.",
"contact_a_on_dial": {
"list": []
},
"contact_a_on_bridge": {
"list": []
},
"contact_a_on_no_answer": {
"list": []
},
"contact_b_on_dial": {
"list": []
},
"contact_b_on_bridge": {
"list": []
},
"contact_b_on_no_answer": {
"list": []
},
"outbound_condition": "mobile",
"default_gw_number_id": 83,
"gnpg_id": 78,
"schema": 2
},
"63723089-ca90-4f1d-953a-91b7a858af98": {
"name": "Скрытие контакта. Схема 3.",
"contact_a_on_dial": {
"list": []
},
"contact_a_on_bridge": {
"list": []
},
"contact_a_on_no_answer": {
"list": []
},
"contact_b_on_dial": {
"list": []
},
"contact_b_on_bridge": {
"list": []
},
"contact_b_on_no_answer": {
"list": []
},
"outbound_condition": "mobile",
"default_gw_number_id": 83,
"gnpg_id": 78,
"schema": 3
}
}
}
}
}
Ответы
Успешный ответ:
{
"action": "append",
"action_id": "12345",
"obj": "DomainHideContact",
"code": 200,
"notifies": [],
"body": {
"id": 1,
"domain_id": 34,
"start_dt": 1703570405.0,
"end_dt": 1703571405.0,
"external_id": "some_external_id",
"contact_a": "79ХХХХХХХХХ",
"contact_b": "79YYYYYYYYY",
"alias": "7495ZZZZZZZ",
"status": 1,
"rule_id": "ea20f8e2-1e0d-a7a0-aa12-17d479c5bc64"
}
}
Ошибка - не найдена связка по external_id:
{
"action": "call_by_external_id",
"action_id": "12345",
"obj": "DomainHideContactCall",
"code": 500,
"notifies": [
{
"obj": "DomainHideContact",
"calling_source": null,
"type": 1,
"msg_id": 10002,
"filter": {
"external_id": "some_external_id1"
}
}
]
}
Ошибка - нет свободных номеров:
{
"action": "append",
"action_id": "12345",
"obj": "DomainHideContact",
"code": 500,
"notifies": [
{
"obj": "DomainGatewayNumberPool",
"calling_source": null,
"type": 1,
"msg_id": 10022
}
]
}
Запрос на инициализацию вызова:
{
"action": "call_by_external_id",
"obj": "DomainHideContactCall",
"action_id": "12345",
"params": {
"domain_id": 34,
"external_id": "some_external_id1",
"first": "7495ZZZZZZZ"
}
}
Ошибка - нет свободных линий для совершения вызовов:
{
"action": "call_by_external_id",
"action_id": "12345",
"obj": "DomainHideContactCall",
"code": 500,
"notifies": [
{
"obj": "DomainHideContactCall",
"calling_source": null,
"type": 1,
"msg_id": 10012,
"limit": null
}
]
}
Действия и коды
Кроме показанных выше, для DomainHideContactCall доступны:
call_by_id— инициировать вызов поidсвязки (параметры:domain_id,id,first);get_call_with_hide_by_uniqueid— получить запись вызова вместе со связкой поuniqueid(параметры:domain_id,uniqueid).
Параметр first — номер инициатора; должен совпадать с contact_a или contact_b связки.
Схемы подмены (поле schema правила): 1 — оба абонента через один подменный номер; 2 — только абонент А (Б не может перезвонить); 3 — у каждого свой подменный номер; 4 — без пула, через шлюз.
Статус вызова (DomainHideContactCall.status): 0 — набор первой ноги, 1 — набор второй ноги, 2 — соединены. Тип вызова (call_type): 0 — через API, 1 — входящий.