Такая модификация может потребоваться если на IP-PBX используется своя внутренняя сокращенная нумерация абонентов. Но при наборе на встречную IP-PBX требуется добавить перед А-номером цифры, например, для того чтобы привести его к формату national.
Задача:
Имеется SIP-телефон, который зарегистрирован на внутреннем PBX-сервере ESR-12v/12vf/14vf с номером 777. Требуется при наборе номера 900 с этого телефона модифицировать A-номер до формата national и направить вызов в транк на встречную IP-PBX.
Решение:
Для решения этой задачи необходимо последовательно прописать в правилах набора номера два правила:
ruleset main_rule rule 10 pattern '900,1,Set(CALLERID(num)=81111222${CALLERID(num)})' enable exit rule 20 pattern '900,2,Dial(SIP/trunk_SSW/${EXTEN})' enable exit exit
Правило 10 Set при наборе номера 900 будет выполнено первым. А-номер будет модифицирован, перед ним будут добавлены цифры 81111222. Правило 20 Dial будет выполнено вторым. В направлении встречной IP-PBX через транк будет выслано сообщение INVITE с модифицированным А-номером.
Сообщение INVITE, принятое PBX-сервером от телефона, выглядит так:
198.51.100.2.5060 > 198.51.100.1.5060: SIP, length: 894 INVITE sip:900@198.51.100.1:5060 SIP/2.0 Via: SIP/2.0/UDP 198.51.100.2:5060;branch=z9hG4bK861859053 From: "777" <sip:777@198.51.100.1:5060>;tag=4240192498 To: <sip:900@198.51.100.1:5060> Call-ID: 1_1304580578@198.51.100.2 CSeq: 1 INVITE Contact: <sip:777@198.51.100.2:5060> Content-Type: application/sdp Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE Max-Forwards: 70 User-Agent: Yealink SIP-T21P_E2 52.80.14.2 Allow-Events: talk,hold,conference,refer,check-sync Supported: replaces Content-Length: 306 v=0 o=- 20013 20013 IN IP4 198.51.100.2 s=SDP data c=IN IP4 198.51.100.2 t=0 0 m=audio 11866 RTP/AVP 9 0 8 18 101 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:18 G729/8000 a=fmtp:18 annexb=no a=ptime:20 a=sendrecv a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15
Сообщение INVITE, сформированное ESR-12v/12vf/14vf, выглядит так:
203.0.113.2.5060 > 203.0.113.1.5060: SIP, length: 829 INVITE sip:900@203.0.113.1:5060 SIP/2.0 Via: SIP/2.0/UDP 203.0.113.2:5060;branch=z9hG4bK7afa4081 Max-Forwards: 70 From: "777" <sip:81111222777@203.0.113.2>;tag=as0e0853d4 To: <sip:900@203.0.113.1:5060> Contact: <sip:81111222777@203.0.113.2:5060> Call-ID: 43168f9f6131b5fe4b92e77329339ae0@203.0.113.2:5060 CSeq: 102 INVITE User-Agent: ESR-12VF Date: Wed, 30 Aug 2023 06:42:03 GMT Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE Supported: replaces Content-Type: application/sdp Content-Length: 273 v=0 o=root 1926704466 1926704466 IN IP4 203.0.113.2 s=ESR-12VF c=IN IP4 203.0.113.2 t=0 0 m=audio 14524 RTP/AVP 8 0 101 a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=silenceSupp:off - - - - a=ptime:20 a=sendrecv
В результате настройки конфигурация маршрутизатора ESR-12v/12vf/14vf для решения поставленной задачи выглядит так:
interface gigabitethernet 1/0/7 description "sip_phone" ip firewall disable ip address 198.51.100.1/24 exit interface gigabitethernet 1/0/8 description "to_ssw" ip firewall disable ip address 203.0.113.2/24 exit pbx ruleset from_ssw description "Incoming call from trunk" rule 10 pattern '_XXX,1,Dial(SIP/${EXTEN})' enable exit exit ruleset main_rule rule 10 pattern '900,1,Set(CALLERID(num)=81111222${CALLERID(num)})' enable exit rule 20 pattern '900,2,Dial(SIP/trunk_SSW/${EXTEN})' enable exit exit profile trunk_SSW type external client friend codec allow g711a codec allow g711u security level invite-port nat comedia qualify 10000 host-address 203.0.113.1 exit profile sip_phone client friend codec allow g711a codec allow g711u codec allow g722 codec allow g726 nat comedia qualify 10000 ruleset main_rule exit register-server SSW ip address 203.0.113.1 ip port 5060 profile trunk_SSW username 100 authentication password encrypted CDE65039E5 enable exit user 777 profile sip_phone password encrypted CDE65039E5 exit enable exit