Задача - есть АТС LG LDK-100, от неё по аналоговым линиям исходящие междугородные звонки уходят на AddPak AP1000.
Нужно было сделать так, чтобы сам AddPak мог перебрасывать VOIP-вызов на АТС.
Код:
!
version 8.30K
!
hostname AP1000
!
!
no bridge spanning-tree
!
dhcp-list 1 type server
dhcp-list 1 address server 10.1.1.2 10.1.1.126 255.255.255.128
!
!
ip-share enable
ip-share interface net-side ether0.0
ip-share interface local-side ether1.0
!
interface ether0.0
ip address 192.168.1.110 255.255.255.0
!
interface ether1.0
no ip address
!
snmp name AP1000
!
no arp reset
!
route 192.168.2.0 255.255.255.0 192.168.1.7
route 0.0.0.0 0.0.0.0 192.168.1.5
!
logging command
logging event all
logging on
!
dnshost nameserver 195.14.50.1
!
ip-tos rtp throughput
!
!
!
!
!
! VoIP configuration.
!
!
! Voice service voip configuration.
!
voice service voip
fax protocol t38 redundancy 1
fax rate 14400
h323 call start fast
h323 call tunnel enable
busyout monitor gatekeeper
busyout monitor sip-server
no busyout monitor callagent
busyout monitor voip-interface
!
!
! Voice port configuration.
!
! FXS
voice-port 0/0
input gain 2
output gain 2
caller-id enable
caller-id type etsi
!
!
! FXS
voice-port 0/1
input gain 2
output gain 2
caller-id enable
caller-id type etsi
!
!
! FXS
voice-port 0/2
input gain 2
output gain 2
caller-id enable
caller-id type etsi
!
!
! FXS
voice-port 0/3
input gain 2
output gain 2
caller-id enable
caller-id type etsi
!
!
!
!
! Pots peer configuration.
!
dial-peer voice 100 pots
destination-pattern ...F
port 0/0
!
dial-peer voice 101 pots
destination-pattern ...F
port 0/1
preference 1
!
dial-peer voice 102 pots
destination-pattern ...F
port 0/2
preference 1
!
dial-peer voice 103 pots
destination-pattern ...F
port 0/3
preference 1
!
!
!
! Voip peer configuration.
!
dial-peer voice 0 voip
destination-pattern T
session target xxxxxxxxx
clid network-number xxxxxxxxx
session protocol sip
codec g729
no dtmf-relay
no vad
preference 9
!
dial-peer voice 1 voip
destination-pattern T
session target xxxxxxxxx
clid network-number xxxxxxxxx
session protocol sip
codec g729
no dtmf-relay
no vad
preference 9
!
dial-peer voice 2 voip
destination-pattern T
session target xxxxxxxxx
clid network-number xxxxxxxxx
session protocol sip
codec g729
no dtmf-relay
no vad
preference 9
!
dial-peer voice 3 voip
destination-pattern T
session target xxxxxxxxx
clid network-number xxxxxxxxx
session protocol sip
codec g729
no dtmf-relay
no vad
preference 9
!
dial-peer voice 200 voip
destination-pattern 0000002...
session target xxxxxxxxx
session protocol sip
no dtmf-relay
no vad
translate-outgoing called-number 1
!
!
!
!
!
!
! Gateway configuration.
!
gateway
h323-id voip.192.168.1.110
public-ip xxxxxxxxx
no ignore-msg-from-other-gk
!
!
! Codec classes configuration.
!
voice class codec 1
codec preference 1 g729
codec preference 2 g7231r63
codec preference 3 g7231r53
codec preference 4 g711alaw
codec preference 5 g711ulaw
!
voice class codec 711
codec preference 1 g711alaw
codec preference 2 g711ulaw
codec preference 3 g729
!
!
!
! Translation Rule configuration.
!
translation-rule 1
rule 1 0000002...F %08%09%10
!
!
!
! Call Diversions configuration.
!
call-diversion 0
!
!
!
! SIP UA configuration.
!
sip-ua
srv enable
!
!
! MGCP configuration.
!
mgcp
force-local-rt
codec g711ulaw
no vad
!
!
! Tones
!
!
!
!
Вкратце - на диалпиры 100-103 переадресовываются все трехзначные номера. Всё просто, но есть один нюанс.
Если вызываемый абонент снимает трубку - разговор проходит и завершается без проблем. Но если он трубку не снимает - то даже если вызывающий трубку положит, у вызываемого будет идти входящий до тех пор, пока сам аддпак не отобьет его по таймауту неответа.
Код:
47 <CEP 000200> : Call Received
48 <CEP 000200> : Call Initiated : calledNumber() crv(0) total(0)
49 <Call 48> : ****************** Call Created status(InitiatedByFXS) *******************
50 <CEP 000200> : Calling number()
51 <CEP 000200> : Call id(0d70bc4c-a834-4cc7-8080-0002a404043c) callNum(48)
[9384.640] VM(0/2/0) Tx DIGIT_IND '1'
[9384.640] VM(0/2/0) play mute
52 <Call 48> : Digit(1) at InitiatedByFXS
53 <Call 48> : MatchedAll
[9384.840] VM(0/2/0) Tx DIGIT_IND '0'
54 <Call 48> : Digit(0) at CalleeDeterminedWaitDigit
55 <Call 48> : MatchedAll
[9385.040] VM(0/2/0) Tx DIGIT_IND '9'
56 <Call 48> : Digit(9) at CalleeDeterminedWaitDigit
57 <Call 48> : MatchedAll
58 <Time 48> : Inter digit timer timeout.
59 <Call 48> : Digit(#) at CalleeDeterminedWaitDigit
60 <Call 48> : MatchAllProcess After Sorted
<0> id(100) dest(...F) prefer(0) selected(10)
<1> id(102) dest(...F) prefer(1) selected(0)
<2> id(101) dest(...F) prefer(1) selected(1)
<3> id(103) dest(...F) prefer(1) selected(0)
<4> id(1) dest(T) prefer(9) selected(2)
<5> id(3) dest(T) prefer(9) selected(3)
<6> id(0) dest(T) prefer(9) selected(1)
<7> id(2) dest(T) prefer(9) selected(5)
61 <Call 48> : Initiate callee with dial-peer(...F) status(CalleeDeterminedAll) id(0d70bc4c-a834-4cc7-8080-0002a404043c)
62 <CEP 000000> : InitiateOutCall : calledNum(109), callingNum(), callerPort(200) type(FXS)
[9388.040] RTA(0/0/0) Rx CC_RING_REQ [80 26 01 08 31 30 31 38 31 36 30 34 04 01 4f 07 12 76 6f 69 70 2e 31 39 32 2e 31 36 38 2e 31 2e 31 31 30 d0 03 31 30 39 ] peerId(0/2/0)
[9388.040] VM(0/0/0) DaTime [L=8] 31 30 31 38 31 36 30 34
[9388.045] VM(0/0/0) CgNoNu [L=1] 4f
[9388.045] VM(0/0/0) CgName [L=18] 76 6f 69 70 2e 31 39 32 2e 31 36 38 2e 31 2e 31 31 30
[9388.045] VM(0/0/0) FwNumb [L=3] 31 30 39
[9388.045] VM(0/0/0) Line Reverse
[9388.045] VM(0/0/0) Start ring actv
[9388.045] VM(0/2/0) play RingBack tone
63 <CEP 000000> : Outbound call to CEP callId(0d70bc4c-a834-4cc7-8080-0002a404043c) callNum(48)
[9389.045] VM(0/0/0) Gen ring idle
[9389.545] VM(0/0/0) Tx CID enable
[9389.545] VM(0/0/0) vopp enable
[9389.545] VM(0/0/0) play mute
[9389.605] VM(0/0/0) Tx CID ON
[9389.655] VM(0/0/0) Rx CID_ACK
[9389.655] VM(0/0/0) Tx CID DATA [L=72] 80 01 21 02 01 05 08 06 31 08 30 08 31 08 38 08 31 07 36 07 30 07 34 07 04 05 01 06 4f 0c 07 05 12 06 76 0b 6f 0b 69 0b 70 0b 2e 0b 31 0b 39 0b 32 0b 2e 0b 31 0b 36 0b 38 0b 2e 0b 31 0b 2e 0b 31 0b 31 0b 30 0b 00 0f
[9390.350] VM(0/0/0) vmOffHook
[9390.410] VM(0/0/0) vmTmoOffHook
[9390.410] VM(0/0/0) Tx CID stop
[9390.410] VM(0/0/0) vopp idle
[9390.410] VM(0/0/0) Line Forward
[9390.470] VM(0/0/0) vmTmoOffHook
[9390.470] VM(0/0/0) Rx OffHook
[9390.470] VM(0/0/0) vopp enable
[9390.470] VM(0/2/0) VAD disable
[9390.470] VM(0/0/0) VAD disable
[9390.470] VM(0/2/0) Fax enable
[9390.470] VM(0/2/0) play mute
[9390.470] VM(0/2/0) Tx CONNECT_CNF
64 <Call 48> : Connected from(200)
[9391.470] VM(0/0/0) play digit '1'
[9391.620] VM(0/0/0) play mute
[9391.720] VM(0/0/0) play digit '0'
[9391.870] VM(0/0/0) play mute
[9391.970] VM(0/0/0) play digit '9'
[9392.120] VM(0/0/0) play mute
[9392.220] VM(0/0/0) Fax enable
[9392.220] VM(0/0/0) play mute
[9392.220] VM(0/0/0) Tx CONNECT_CNF
65 <Call 48> : Connected from(0)
[9399.250] VM(0/2/0) vmOnHook
[9399.300] VM(0/2/0) vmTmoOnHook
[9399.350] VM(0/2/0) vmTmoOnHook
[9399.400] VM(0/2/0) vmTmoOnHook
[9399.450] VM(0/2/0) vmTmoOnHook
[9399.500] VM(0/2/0) vmTmoOnHook
[9399.550] VM(0/2/0) vmTmoOnHook
[9399.600] VM(0/2/0) vmTmoOnHook
[9399.650] VM(0/2/0) vmTmoOnHook
[9399.700] VM(0/2/0) vmTmoOnHook
[9399.750] VM(0/2/0) vmTmoOnHook
[9399.800] VM(0/2/0) vmTmoOnHook
[9399.850] VM(0/2/0) vmTmoOnHook
[9399.900] VM(0/2/0) vmTmoOnHook
[9399.950] VM(0/2/0) vmTmoOnHook
[9399.950] VM(0/2/0) Rx OnHook
[9399.950] VM(0/2/0) vopp idle
[9399.950] VM(0/2/0) Tx DISCONN_CNF
66 <CEP 000200> : Disconnected(16) at Busy
67 <Call 48> : Terminated from(200) this(Local:CallClear) before(NULL) forced(0)
68 <CEP 000200> : DisconnectCall at Idle
69 <CEP 000000> : DisconnectCall at Busy
70 <CEP 000000> : StopSignal
[9399.950] RTA(0/0/0) Rx AP_SVC_REQ nSvcElem=1 rawDataLen=0
DTMF_STOP
[9399.950] VM(0/0/0) play mute
71 <CEP 000000> : Disconnect (0)
[9399.950] RTA(0/0/0) Rx CC_DISCONN_REQ CZ=0, peerId(0/0/0)
[9399.950] VM(0/0/0) play Reorder tone
[9429.955] VM(0/0/0) play LineLock tone
[9434.220] VM(0/0/0) vmOnHook
[9434.270] VM(0/0/0) vmTmoOnHook
[9434.320] VM(0/0/0) vmTmoOnHook
[9434.370] VM(0/0/0) vmTmoOnHook
[9434.420] VM(0/0/0) vmTmoOnHook
[9434.470] VM(0/0/0) vmTmoOnHook
[9434.520] VM(0/0/0) vmTmoOnHook
[9434.570] VM(0/0/0) vmTmoOnHook
[9434.620] VM(0/0/0) vmTmoOnHook
[9434.670] VM(0/0/0) vmTmoOnHook
[9434.720] VM(0/0/0) vmTmoOnHook
[9434.770] VM(0/0/0) vmTmoOnHook
[9434.820] VM(0/0/0) vmTmoOnHook
[9434.870] VM(0/0/0) vmTmoOnHook
[9434.920] VM(0/0/0) vmTmoOnHook
[9434.920] VM(0/0/0) Rx OnHook
[9434.920] VM(0/0/0) vopp idle
[9434.920] VM(0/0/0) Tx DISCONN_CNF
72 <CEP 000000> : Disconnected(16) at Disconnecting