[asterisk-users] External callerid issues using Q931 against Toshiba Strata
Justin Chevrier
jchevrier at gmail.com
Sat Mar 17 07:37:26 CDT 2012
On Fri, Mar 16, 2012 at 11:43 AM, Richard Mudgett <rmudgett at digium.com> wrote:
> <snip>
>
>> >> pri intense debug:
>> >> < TEI: 0 State 7(Multi-frame established)
>> >> < V(A)=31, V(S)=31, V(R)=42
>> >> < K=7, RC=0, l3_initiated=0, reject_except=0, ack_pend=0
>> >> < T200_id=0, N200=3, T203_id=8192
>> >> < [ 00 01 54 3e 08 02 01 b3 62 1c 66 9f aa 06 80 01 00 82 01 00 a1
>> >> 31
>> >> 02 02 01 3a 02 01 0c 30 28 0a 01 01 a0 0f 80 0a 35 35 35 35 35 35
>> >> 31
>> >> 36 33 31 0a 01 00 80 0f 41 41 41 20 49 54 2d 44 41 54 41 00 00 00
>> >> 00
>> >> 0a 01 01 a1 28 02 02 01 3b 02 01 55 30 1f 86 01 00 a7 1a 06 0a 31
>> >> 33
>> >> 31 32 32 31 35 35 35 35 30 0c 81 01 07 8c 04 39 34 31 31 95 01 00
>> >> ]
>> >> < Informational frame:
>> >> < SAPI: 00 C/R: 0 EA: 0
>> >> < TEI: 000 EA: 1
>> >> < N(S): 042 0: 0
>> >> < N(R): 031 P: 0
>> >> < 109 bytes of data
>> >> < Protocol Discriminator: Q.931 (8) len=109
>> >> < TEI=0 Call Ref: len= 2 (reference 435/0x1B3) (Sent from
>> >> originator)
>> >> < Message Type: FACILITY (98)
>> >> < [1c 66 9f aa 06 80 01 00 82 01 00 a1 31 02 02 01 3a 02 01 0c 30
>> >> 28
>> >> 0a 01 01 a0 0f 80 0a 35 35 35 35 35 35 31 36 33 31 0a 01 00 80 0f
>> >> 41
>> >> 41 41 20 49 54 2d 44 41 54 41 00 00 00 00 0a 01 01 a1 28 02 02 01
>> >> 3b
>> >> 02 01 55 30 1f 86 01 00 a7 1a 06 0a 31 33 31 32 32 31 35 35 35 35
>> >> 30
>> >> 0c 81 01 07 8c 04 39 34 31 31 95 01 00]
>> >> < Facility (len=104, codeset=0) [ 0x9F, 0xAA, 0x06, 0x80, 0x01,
>> >> 0x00,
>> >> 0x82, 0x01, 0x00, 0xA1, '1', 0x02, 0x02, 0x01, ':', 0x02, 0x01,
>> >> 0x0C,
>> >> '0(', 0x0A, 0x01, 0x01, 0xA0, 0x0F, 0x80, 0x0A, '5555551631',
>> >> 0x0A,
>> >> 0x01, 0x00, 0x80, 0x0F, 'AAA IT-DATA', 0x00, 0x00, 0x00, 0x00,
>> >> 0x0A,
>> >> 0x01, 0x01, 0xA1, '(', 0x02, 0x02, 0x01, ';', 0x02, 0x01, 'U0',
>> >> 0x1F,
>> >> 0x86, 0x01, 0x00, 0xA7, 0x1A, 0x06, 0x0A, '13122155550', 0x0C,
>> >> 0x81,
>> >> 0x01, 0x07, 0x8C, 0x04, '9411', 0x95, 0x01, 0x00 ]
>> >> -- Got ACK for N(S)=31 to (but not including) N(S)=31
>> >> -- T200 requested to stop when not started
>> >> T203 requested to start without stopping first
>> >> -- Starting T203 timer
>> >> Received message for call 0x7f5020283b80 on link 0xb2f010 TEI/SAPI
>> >> 0/0
>> >> -- Processing IE 28 (cs0, Facility)
>> >> -- Delayed processing IE 28 (cs0, Facility)
>> >> ASN.1 dump
>> >> Context Specific/C [10 0x0A] <AA> Len:6 <06>
>> >> Context Specific [0 0x00] <80> Len:1 <01>
>> >> <00> - "~"
>> >> Context Specific [2 0x02] <82> Len:1 <01>
>> >> <00> - "~"
>> >> Context Specific/C [1 0x01] <A1> Len:49 <31>
>> >> Integer(2 0x02) <02> Len:2 <02>
>> >> <01 3A> - "~:"
>> >> Integer(2 0x02) <02> Len:1 <01>
>> >> <0C> - "~"
>> >> Sequence/C(48 0x30) <30> Len:40 <28>
>> >> Enumerated(10 0x0A) <0A> Len:1 <01>
>> >> <01> - "~"
>> >> Context Specific/C [0 0x00] <A0> Len:15 <0F>
>> >> Context Specific [0 0x00] <80> Len:10 <0A>
>> >> <35 35 35 35 35 35 31 36-33 31> - "5555551631"
>> >> Enumerated(10 0x0A) <0A> Len:1 <01>
>> >> <00> - "~"
>> >> Context Specific [0 0x00] <80> Len:15 <0F>
>> >> <41 41 41 20 49 54 2D 44-41 54 41 00 00 00 00> - "AAA
>> >> IT-DATA~~~~"
>> >> Enumerated(10 0x0A) <0A> Len:1 <01>
>> >> <01> - "~"
>> >> Context Specific/C [1 0x01] <A1> Len:40 <28>
>> >> Integer(2 0x02) <02> Len:2 <02>
>> >> <01 3B> - "~;"
>> >> Integer(2 0x02) <02> Len:1 <01>
>> >> <55> - "U"
>> >> Sequence/C(48 0x30) <30> Len:31 <1F>
>> >> Context Specific [6 0x06] <86> Len:1 <01>
>> >> <00> - "~"
>> >> Context Specific/C [7 0x07] <A7> Len:26 <1A>
>> >> OID(6 0x06) <06> Len:10 <0A>
>> >> <31 33 31 32 32 31 35 35-35 35> - "1312215555"
>> >> Sequence/C(48 0x30) <30> Len:12 <0C>
>> >> Context Specific [1 0x01] <81> Len:1 <01>
>> >> <07> - "~"
>> >> Context Specific [12 0x0C] <8C> Len:4 <04>
>> >> <39 34 31 31> - "9411"
>> >> Context Specific [21 0x15] <95> Len:1 <01>
>> >> <00> - "~"
>> >> ASN.1 end
>> >> nfe NetworkFacilityExtension Context Specific/C [10 0x0A]
>> >> sourceEntity Context Specific [0 0x00] = 0 0x0000
>> >> destinationEntity Context Specific [2 0x02] = 0 0x0000
>> >> INVOKE Component Context Specific/C [1 0x01]
>> >> invokeId Integer(2 0x02) = 314 0x013A
>> >> operationValue Integer(2 0x02) = 12 0x000C
>> >> operationValue = ROSE_QSIG_CallTransferComplete
>> >> CallTransferComplete Sequence/C(48 0x30)
>> >> endDesignation Enumerated(10 0x0A) = 1 0x0001
>> >> redirectionNumber PresentedNumberScreened
>> >> presentationAllowedNumber NumberScreened Context Specific/C [0
>> >> 0x00]
>> >> partyNumber PartyNumber
>> >> unknownPartyNumber Context Specific [0 0x00] = "5555551631"
>> >> screeningIndicator Enumerated(10 0x0A) = 0 0x0000
>> >> redirectionName Name
>> >> namePresentationAllowedSimple Context Specific [0 0x00] =
>> >> <41 41 41 20 49 54 2D 44-41 54 41 00 00 00 00> - "AAA
>> >> IT-DATA~~~~"
>> >> callStatus Enumerated(10 0x0A) = 1 0x0001
>> >> INVOKE Component Context Specific/C [1 0x01]
>> >> invokeId Integer(2 0x02) = 315 0x013B
>> >> operationValue Integer(2 0x02) = 85 0x0055
>> >> operationValue = ROSE_Unknown
>> >> Skipping unused constructed component octets!
>> >> !! ROSE invoke operation not handled on switchtype:Q.SIG switch!
>> >> ROSE_Unknown
>
> <snip>
>
>> I'm looking for the information contained in the
>> ROSE_QSIG_CallTransferComplete section. I have attached a complete
>> log
>> of the call (with intense debug on unfortunately). An additional
>> note:
>>
>> 1. The Strata system initially sends through a virtual internal
>> extension number ('1607' in the log) as the originating number. In
>> the
>> dial plan I immediately play back a ringing sound to the Strata which
>> causes it to then send through the real external callerid
>> information.
>> As such my original email was a bit off the mark, I get a blank
>> callerid name and the callerid number is the virtual internal
>> extension. Apologies for the confusion.
>
> The ROSE_QSIG_CallTransferComplete message has the callStatus set to 1
> which indicates that the peer is ringing. Libpri is waiting for a
> ROSE_QSIG_CallTransferActive to post the connected line information
> because the ROSE_QSIG_CallTransferComplete connected line information
> may not have the correct presentation value available. I suspect
> that the Strata is sending the wrong value for that parameter because
> it seems to be telling Asterisk that it is ringing instead.
>
> You could try this hack:
>
> Index: pri_facility.c
> ===================================================================
> --- pri_facility.c (revision 2283)
> +++ pri_facility.c (working copy)
> @@ -5194,12 +5194,7 @@
> */
> q931_party_subaddress_init(&call->remote_id.subaddress);
>
> - if (invoke->args.qsig.CallTransferComplete.call_status == 1) {
> - /* The remote party for the transfer has not answered yet. */
> - call->incoming_ct_state = INCOMING_CT_STATE_EXPECT_CT_ACTIVE;
> - } else {
> - call->incoming_ct_state = INCOMING_CT_STATE_POST_CONNECTED_LINE;
> - }
> + call->incoming_ct_state = INCOMING_CT_STATE_POST_CONNECTED_LINE;
>
> /* Send our subaddress back if we have one. */
> if (call->local_id.subaddress.valid) {
>
> Richard
>
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
> New to Asterisk? Join us for a live introductory webinar every Thurs:
> http://www.asterisk.org/hello
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-users
I can confirm that the provided patch allows Asterisk to pickup both
the external callerid name and number.
Going forward is there a clean way to handle this issue, or can it
really only live as a hack?
Thank you very much for the quick replies and spot on help!
Justin
More information about the asterisk-users
mailing list