Правила модификации SIP-сообщений на границе (sipmodrules)
Запросы
HTTP verb | Endpoint | Описание |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Создание нового правила
Запрос
Описание полей: sipmodrule entity
POST /rest/v1/master/sipmodrules HTTP/1.1
Content-Type: application/json; charset=utf-8
sipmodrule entity
Ответ
Описание полей: sipmodrule entity
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"id": "ac062dd6-0196-7bf7-aa40-7cd30a921f58",
"enabled": 1,
"priority": 100,
"code": "test",
"dir": "incoming",
"mode": "mask",
"mode_extension": "",
"extractors": )/i",
"/reg/CSeq:\\s(?<cseq>\\d+)\\s(?<method>[^\r\n])/i",
"/reg/Contact:.*sip:(?<cun>.+)@./i",
"/reg/Contact:\\s*(?<cdn>[^<])<sip:.@./i"
],
"filter": [
"and",
[
"in",
[
"property",
"method"
],
[
"list",
"REGISTER",
"INVITE"
]
],
[
"greater",
[
"integer",
[
"property",
"cseq"
]
],
1
]
],
"modifiers": [
"/reg/User-Agent:[^\r\n]\r\n//ig",
"/reg/Contact:\\s*(<sip:.)/Contact: \"contact display\" \\1",
"/reg/CSeq:([^\r\n]*)/CSeq:\\g{1}\r\nX-Era-Test: \"cseq={{cseq}}, cdn={{cdn}}, cun={{cun}}, ua={{ua}}\"/m"
],
"action": "apply_last",
"repair_contentlen": 0,
"opts": {
"comment": "",
"title": ""
}
}
Получение списка правил
Запрос
Имя | Тип | Описание |
---|---|---|
|
|
Фильтр по значениям полей. |
|
|
Список полей для вывода. Доступные поля для выдачи: id, priority, enabled, code, dir, action, repair_contentlen, mode, mode_extension, extractors, filter, modifiers, opts.title, ext.lwt, ext.ct. |
|
|
Смещение в списке ресурсов, подлежащих выдаче. |
|
|
Максимальное количество ресурсов в списке. |
|
|
Порядок сортировки ресурсов в списке. |
|
|
Преобразование в плоский вид составных полей. |
GET /rest/v1/master/sipmodrules?offset=0&limit=4 HTTP/1.1
Ответ
Описание полей: sipmodrule entity
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
[
{
"id": "1967cca4-0196-7be4-9d53-7cd30a921f58",
"enabled": 1,
"priority": 200,
"code": "drop_scanner",
"dir": "incoming",
"mode": "mask",
"mode_extension": "",
"extractors": [
"/reg/^(REGISTER|INVITE)/f",
"/reg/User-Agent:\\s*friendly-scanner/i"
],
"filter": [],
"modifiers": [],
"action": "drop",
"repair_contentlen": 0,
"opts": {
"comment": "",
"title": ""
},
"ext": {
"ct": "2025-04-28T10:15:02.226Z",
"lwt": "2025-04-28T15:09:08.749Z"
}
},
{
"id": "5e252a54-0196-7c03-0b19-7cd30a921f58",
"enabled": 1,
"priority": 50,
"code": "test",
"dir": "incoming",
"mode": "module",
"mode_extension": "sbc_mapping",
"extractors": [],
"filter": [],
"modifiers": [],
"action": "apply_last",
"repair_contentlen": 0,
"opts": {
"comment": "",
"title": ""
},
"ext": {
"ct": "2025-04-28T10:48:16.409Z",
"lwt": "2025-04-28T15:18:10.223Z"
}
},
{
"id": "ac062dd6-0196-7bf7-aa40-7cd30a921f58",
"enabled": 1,
"priority": 100,
"code": "test",
"dir": "incoming",
"mode": "mask",
"mode_extension": "",
"extractors": )/i",
"/reg/CSeq:\\s(?<cseq>\\d+)\\s(?<method>[^\r\n])/i",
"/reg/Contact:.*sip:(?<cun>.)@.*/i",
"/reg/Contact:\\s*(?<cdn>[^<]*)<sip:.*@.*/i"
],
"filter": [
"and",
[
"in",
[
"property",
"method"
],
[
"list",
"REGISTER",
"INVITE"
]
],
[
"greater",
[
"integer",
[
"property",
"cseq"
]
],
1
]
],
"modifiers": [
"/reg/User-Agent:[^\r\n]*\r\n//ig",
"/reg/Contact:\\s*[^<]*(<sip:.*)/Contact: \"contact display\" \\1",
"/reg/CSeq:([^\r\n]*)/CSeq:\\g\{1}\r\nX-Era-Test: \"cseq={\{cseq}}, cdn={\{cdn}}, cun={\{cun}}, ua={\{ua}}\"/m"
],
"action": "apply_last",
"repair_contentlen": 0,
"opts": {
"comment": "",
"title": ""
},
"ext": {
"ct": "2025-04-28T10:35:50.719Z",
"lwt": "2025-04-28T15:28:40.320Z"
}
},
{
"id": "f8ceec33-0196-77a2-acfd-7cd30a921f58",
"enabled": 1,
"priority": 100,
"code": "avaya",
"dir": "incoming",
"mode": "mask",
"mode_extension": "",
"extractors": [
"/reg/^INVITE/f",
"/reg/User-Agent:\\s*(?<ua>Avaya CM.*)/i",
"/reg/CSeq:\\s*(?<cseq>\\d)\\s(?<method>INVITE)/i",
"/reg/Contact:.*sip:(?<cun>.)@.*/i",
"/reg/Contact:\\s*(?<cdn>[^<]*)<sip:.*@.*/i"
],
"filter": [
"greater",
[
"integer",
[
"property",
"cseq"
]
],
1
],
"modifiers": [
"/reg/From:\\s*([^<]*)(<sip:)[^@](.)/From: \\1\\g{2}{{cun}}\\3/g",
"/reg/From:\\s*(<sip:.)/From: {{cdn}}\\g{1}/g"
],
"action": "apply_last",
"repair_contentlen": 0,
"opts": {
"comment": "",
"title": ""
},
"ext": {
"ct": "2025-04-27T14:24:31.997Z",
"lwt": "2025-04-28T15:14:45.767Z"
}
}
]
Получение данных правила
Запрос
Имя | Тип | Описание |
---|---|---|
|
|
Список полей для вывода. |
|
|
Преобразование в плоский вид составных полей. |
GET /rest/v1/master/sipmodrules/ac062dd6-0196-7bf7-aa40-7cd30a921f58 HTTP/1.1
Ответ
Описание полей: sipmodrule entity
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"id": "ac062dd6-0196-7bf7-aa40-7cd30a921f58",
"enabled": 1,
"priority": 100,
"code": "test",
"dir": "incoming",
"mode": "mask",
"mode_extension": "",
"extractors": )/i",
"/reg/CSeq:\\s(?<cseq>\\d+)\\s(?<method>[^\r\n])/i",
"/reg/Contact:.*sip:(?<cun>.+)@./i",
"/reg/Contact:\\s*(?<cdn>[^<])<sip:.@./i"
],
"filter": [
"and",
[
"in",
[
"property",
"method"
],
[
"list",
"REGISTER",
"INVITE"
]
],
[
"greater",
[
"integer",
[
"property",
"cseq"
]
],
1
]
],
"modifiers": [
"/reg/User-Agent:[^\r\n]\r\n//ig",
"/reg/Contact:\\s*(<sip:.)/Contact: \"contact display\" \\1",
"/reg/CSeq:([^\r\n]*)/CSeq:\\g{1}\r\nX-Era-Test: \"cseq={{cseq}}, cdn={{cdn}}, cun={{cun}}, ua={{ua}}\"/m"
],
"action": "apply_last",
"repair_contentlen": 0,
"opts": {
"comment": "",
"title": ""
},
"ext": {
"ct": "2025-04-28T10:35:50.719Z",
"lwt": "2025-04-28T15:28:40.320Z"
}
}
Изменение данных правила
Поля запрещенные для изменения: id
Запрос
Описание полей: sipmodrule entity
PATCH /rest/v1/master/sipmodrules/ac062dd6-0196-7bf7-aa40-7cd30a921f58 HTTP/1.1
Content-Type: application/json; charset=utf-8
sipmodrule entity
Ответ
Описание полей: sipmodrule entity
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"id": "ac062dd6-0196-7bf7-aa40-7cd30a921f58",
"enabled": 1,
"priority": 100,
"code": "test",
"dir": "incoming",
"mode": "mask",
"mode_extension": "",
"extractors": )/i",
"/reg/CSeq:\\s(?<cseq>\\d+)\\s(?<method>[^\r\n])/i",
"/reg/Contact:.*sip:(?<cun>.+)@./i",
"/reg/Contact:\\s*(?<cdn>[^<])<sip:.@./i"
],
"filter": [
"and",
[
"in",
[
"property",
"method"
],
[
"list",
"REGISTER",
"INVITE"
]
],
[
"greater",
[
"integer",
[
"property",
"cseq"
]
],
1
]
],
"modifiers": [
"/reg/User-Agent:[^\r\n]\r\n//ig",
"/reg/Contact:\\s*(<sip:.)/Contact: \"contact display\" \\1",
"/reg/CSeq:([^\r\n]*)/CSeq:\\g{1}\r\nX-Era-Test: \"cseq={{cseq}}, cdn={{cdn}}, cun={{cun}}, ua={{ua}}\"/m"
],
"action": "apply_last",
"repair_contentlen": 0,
"opts": {
"comment": "",
"title": ""
}
}
Удаление правила
Поиск идентификатора правила
Производит поиск ресурса по указанному ключу, возвращает идентификатор(ы) для построения endpoint.
Ключевые поля для поиска: id