Explicit Call Transfer (ECT) or Facility Messages for call transfers over EuroISDN

Hi,

I’m trying to Transfer() an incoming call on an E1 to a external number.
My provider states that ECT is supported.

How can I check that my Asterisk/libpri actually supports it too (and really attempts the transfer)?
I have facilityenable=yes in chan_dahdi.conf.

Asterisk v. 18.10.0

asterisk -rx “pri show spans”

PRI span 1/0: Up, Active
PRI span 2/0: Up, Active
PRI span 3/0: Up, Active
PRI span 4/0: Up, Active
PRI span 5/0: Up, Active
PRI span 6/0: Up, Active

asterisk -rx “pri show span 6”

Primary D-channel: 59
Status: Up, Active
Switchtype: EuroISDN
Type: CPE
Remote type: Unknown node type
Overlap Dial: 1
Logical Channel Mapping: 0
Timer and counter settings:
N200: 3
N202: 3
K: 7
T200: 1000
T201: 1000
T202: 2000
T203: 10000
T303: 4000
T305: 30000
T308: 4000
T309: 6000
T312: 6000
T313: 4000
T316: -1
N316: 2
T-HOLD: 4000
T-RETRIEVE: 4000
T-RESPONSE: 4000
T-STATUS: 4000
T-ACTIVATE: 10000
T-DEACTIVATE: 4000
T-INTERROGATE: 4000
T-RETENTION: 30000
T-CCBS1: 4000
T-CCBS2: 2700000
T-CCBS3: 20000
T-CCBS4: 5000
T-CCBS5: 3600000
T-CCBS6: 3600000
T-CCNR2: 10800000
T-CCNR5: 11700000
T-CCNR6: 11700000
Q931 RX: 114511
Q931 TX: 75362
Q921 RX: 345954
Q921 TX: 345871
Q921 Outstanding: 0 (TEI=0)
Total active-calls:4 global:0
CC records:
Overlap Recv: Yes

asterisk -rx “pri set debug on span 6”

So, I set up a context in the dialplan for testing. I receive an incoming call on a PRI channel and try to Transfer() it to another number over PRI.

exten => whatever,1,NoOp(Incoming call - sending ${CALLERID(all)} on ${CHANNEL} to test phone)
same => n,Transfer(DAHDI/g4/123456789)
same => n,NoOp(${TRANSFERSTATUS})
same => n,Hangup()

Here’s the log:

VERBOSE[17581][C-0000ed9f] pbx.c: Executing [whatever@from-PRI:1] NoOp(“DAHDI/i6/91103-558b”, “Incoming call - sending “” <91103> on DAHDI/i6/91103-558b to test phone”) in new stack
VERBOSE[17581][C-0000ed9f] pbx.c: Executing [whatever@from-PRI:2] Transfer(“DAHDI/i6/91103-558b”, “DAHDI/g4/123456789”) in new stack
VERBOSE[17581][C-0000ed9f] pbx.c: Executing [whatever@from-PRI:3] NoOp(“DAHDI/i6/91103-558b”, “UNSUPPORTED”) in new stack
VERBOSE[17581][C-0000ed9f] pbx.c: Executing [whatever@from-PRI:4] Hangup(“DAHDI/i6/91103-558b”, “”) in new stack
VERBOSE[17581][C-0000ed9f] pbx.c: Spawn extension (from-PRI, whatever, 4) exited non-zero on ‘DAHDI/i6/91103-558b’
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 q931.c:7332 q931_hangup: Hangup other cref:86
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 q931.c:7089 __q931_hangup: ourstate Incoming Call Proceeding, peerstate Outgoing Call Proceeding, hold-state Idle
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 q931.c:6275 q931_disconnect: Call 86 enters state 11 (Disconnect Request). Hold state: Idle
VERBOSE[17581] chan_dahdi.c: PRI Span: 6
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 > DL-DATA request
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 > Protocol Discriminator: Q.931 (8) len=9
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 > TEI=0 Call Ref: len= 2 (reference 86/0x56) (Sent to originator)
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 > Message Type: DISCONNECT (69)
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 TEI=0 Transmitting N(S)=125, window is open V(A)=124 K=7
VERBOSE[17581] chan_dahdi.c: PRI Span: 6
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 > Protocol Discriminator: Q.931 (8) len=9
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 > TEI=0 Call Ref: len= 2 (reference 86/0x56) (Sent to originator)
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 > Message Type: DISCONNECT (69)
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 > [08 02 81 90]
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 > Cause (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) Spare: 0 Location: Private network serving the local user (1)
VERBOSE[17581] chan_dahdi.c: PRI Span: 6 > Ext: 1 Cause: Normal Clearing (16), class = Normal Event (1) ]
VERBOSE[17581][C-0000ed9f] chan_dahdi.c: Hungup ‘DAHDI/i6/91103-558b’

The thing is that I don’t see Asterisk actually trying to Transfer().
Shouldn’t I be seeing PRI debug lines related to the Transfer intent?
The only PRI debug lines I see are related to the Hangup() call.

What can I try?

Regards

I can only comment from a code perspective for Transfer(), but chan_dahdi doesn’t have support for using the Transfer() dialplan application implemented.

OK, so I take it chan_dahdi/Asterisk cannot ECT on PRI because it has not yet been implemented.

Thanks

I think it unlikely that it will ever be implemented, as the world is moving to VoIP, for everything. Also, note that EuroISDN is probably more important than PRI, for anything that does implement it.

Hi,
Just to clarify the terms a little.
PRI (Primary Rate Interface) is the physics, in Europe, for example, 2,048 kbits/s, divided into 32 timeslots, for example, 64 kbit/s for sync, 64 kbit/s D channel, and 30 B channels. Alternatively, there is BRI (Basic Rate Interface ) with 2 B channels at 64 kbit/s and one D channel at 16 kbit/s.
EuroISDN is the logic, OSI layers 2 and 3, defined in Q.921 and Q.931.
EuroISDN works on BRI and PRI.

I remember that I was able to forward calls at DAHDI using “PartialReRouting”. To do this, I used the application DAHDISendCallreroutingFacility(new destination) followed by Wait(5) and Hangup.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.