[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