Table of Contents Index NMS Glossary Previous Page Next Page Version


Chapter 7

Call Forwarding Related Services


7.1 Introduction
7.1.1 Call Forwarding in an ETS 300 Application
7.1.2 Call Forwarding in a Q.SIG Application
7.2 Using Call Diversion Services (ETS 300)
7.2.1 Activating Call Diversion (ETS 300)
7.2.2 Deactivating Call Diversion (ETS 300)
7.2.3 The Enquire Diversion Operation (ETS 300)
7.2.4 Notification That a Diversion Has Taken Place (ETS 300)
7.2.5 The Remind Diversion Service (ETS 300)
7.3 Using Call Diversion Services (Q.SIG)
7.3.1 Invoking a Call Diversion (Q.SIG)
7.3.2 Call Diversion Notification (Q.SIG)
7.3.3 Unsuccessful Diversion (Q.SIG)
7.3.4 Call Diversion Messaging Diagrams (Q.SIG)
7.4 Call Deflection
7.4.1 Activating Call Deflection For All Calls on an NAI
7.4.2 Notification of a Call Deflection (All Calls on an NAI)
7.4.3 Deactivating Call Deflection (All Calls on an NAI)
7.4.4 Invoking Call Deflection for a Single Call (At Served User)
7.4.5 Deflection Notification (At Deflected-To User)
7.4.6 Deflection Notification (At Originating User)

7.1 IntroductionTop of Page

This chapter describes supplementary services related to call forwarding. Call forwarding is a service performed at a served user (or on behalf of a served user) to reroute a call to another user.

The following supplementary services are related to call forwarding:

  • The Call Deflection supplementary service allows the served user's stack or application to forward a call to a different address. (Available under ETS 300 only.)

    
    
  • The Remind Diversion service. When a served user initiates an outbound call, this service informs the served user if Call Diversion services have been activated for incoming calls. (Available under ETS 300 only.)

  • 7.1.1 Call Forwarding in an ETS 300 ApplicationTop of Page

    In an ETS 300 application, call forwarding can be accomplished in any of three ways, depending upon which entity at the served user performs the forwarding operation (See Figure 23):

    Regardless of which service is used, the diverted-to user is always notified of a forwarded call, using a Notify Diversion operation.

    The served user application can enquire the network of the status of the Call Diversion service for a given user, or for all users.

    Another service, the Remind Diversion service, can be invoked by the network if the user has subscribed to this service. When a served user initiates an outbound call, this service informs the served user if Call Diversion services have been activated for incoming calls.


    chap71.gif

    Figure 23. Call Diversion and Call Deflection (ETS 300)

    7.1.2 Call Forwarding in a Q.SIG ApplicationTop of Page

    In a Q.SIG application, call forwarding happens as follows:

    Section 7.2.5 describes how an application can perform these procedures. Since the application may be associated with the originating node, served user node, or diverted-to node, all three perspectives are considered.

    Note: Q.SIG specifications identify a fourth party involved in a diversion: the node responsible for rerouting the call (the rerouting node). AG ISDN supports the combination of the originating and rerouting nodes in the same node (for example, call diversion by rerouting). It does not support the combination of rerouting node and served user node (for example, call diversion by forward transfer).

    Call Deflection supplementary services have no meaning in Q.SIG applications, since there is no user side of a Q.SIG link.

    7.2 Using Call Diversion Services (ETS 300)Top of Page

    ETS 300 call diversion procedures can be viewed as a remote-control mechanism to manage the diversion services performed in the network. The messages are command/response transactions, where the command may be:

    The response acknowledges the successful processing of the command, and may contain information requested by the command.

    7.2.1 Activating Call Diversion (ETS 300)Top of Page

    To activate the Call Diversion service for an address, the application sends an acu_ss_act_divert_invoke extended data structure to the stack in an ACU request message, using the ACU_MGMT_SAPI. The service header to this structure must contain:

    The extended data structure must contain:

    The following is a listing of the acu_ss_act_divert_invoke extended data structure:

    struct acu_ss_act_divert_invoke
    {
      struct acu_ext_hdr   ext_hdr;     /* Extension header                   */
      struct acu_ss_hdr    ss_hdr;      /* Supplementary serv. header         */
      struct acu_address   diverted_to; /* New destination of call            */
      struct acu_party_num served_user; /* User number to activate the service*/
                                        /* for. If not invoked,then diversion */
                                        /* applies to entire NAI              */
      struct acu_party_num activating_user; /* User activating the diversion, */
                                        /* if different from the served user  */
      uchar                procedure;   /* From ACU_SS_DIVERSION_ constants   */
      uchar                basic_service;  /* From ACU_SS_BASIC_SERVICE_      */
      pad6                              /* constants                          */
    };
    
    
    The following table lists the fields in this structure (other than the header fields), and when they are used.

    Fields

    Description

    Must be filled in this request?

    diverted_to

    New destination of call.

    Yes

    served_user

    User number to activate the service for. If not invoked, then the diversion applies to the entire interface (NAI).

    Optional

    activating_user

    The user activating the diversion, if different from the served user.

    Not included

    procedure

    CFU/CFB/CFNR. From SS_DIVERSION constants.

    Yes

    basic_service

    Voice, data, etc. From SS_BASIC_SERVICE constants.

    Yes

    Successful Call Diversion Activation Request (ETS 300)Top of Page

    If the invocation is successful, the stack responds with an ACU indication message using the ACU_MGMT_SAPI. This message contains an acu_ss_act_divert_ret_result extended data structure. The service header to this structure contains:

    The following is a listing of the acu_ss_act_divert_ret_result extended data structure:

    struct acu_ss_act_divert_ret_result
    {
    struct acu_ext_hdr  ext_hdr;  /* Extended data structure header     */
    struct acu_ss_hdr   ss_hdr;   /* Supp. services header              */
    };
    
    
    No data is returned with this message.

    Unsuccessful Call Diversion Activation Request (ETS 300)Top of Page

    If the invocation is not successful, the stack responds with an ACU indication message using the ACU_MGMT_SAPI. This message contains an acu_ss_act_divert_ret_error extended data structure. The service header to this structure contains:

    The following is a listing of the acu_ss_act_divert_ret_error extended data structure:

    struct acu_ss_act_divert_ret_error
    {
      struct acu_ext_hdr ext_hdr; /* Extension header                      */
      struct acu_ss_hdr  ss_hdr;  /* Supp. services header                 */
      ushort             err_id;  /* From ACT_DIVERT_RETERR_ constants     */
      pad6
    };
    
    
    The err_id field contains the reason for the error, from ACT_DIVERT_RETERR constants (see Appendix B).

    7.2.2 Deactivating Call Diversion (ETS 300)Top of Page

    To deactivate the Call Diversion service for an address, the application sends an ACU request message to the stack containing an acu_ss_deact_divert_invoke extended data structure, using the ACU_MGMT_SAPI. The service header to this structure must contain:

    In addition, the following must be specified in the data structure:

    The following is a listing of the acu_ss_deact_divert_invoke extended data structure:

    struct acu_ss_deact_divert_invoke
    {
      struct acu_ext_hdr   ext_hdr;       /* Extension header                 */
      struct acu_ss_hdr    ss_hdr;        /* Supplementary serv. header       */
      struct acu_party_num served_user;   /* User to deactivate diversion for */
      struct acu_party_num deactivating_user; /* User initiating the          */
                                          /* deactivation                     */
      uchar                procedure;     /* From ACU_SS_DIVERSION_ constants */
      uchar                basic_service; /* From ACU_SS_BASIC_SERVICE_       */
      pad6                                /* constants                        */
    };
    
    The following table lists the fields in this structure (other than the header fields), and when they are used.

    Field

    Description

    Must be filled in this request?

    served_user

    User to deactivate diversion for.

    Optional

    deactivating_user

    User initiating the deactivation.

    Not included.

    procedure

    CFU/CFB/CFNR. From SS_DIVERSION constants.

    Yes

    basic_service

    Voice, data, etc. From SS_BASIC_SERVICE constants.

    Yes

    Successful Call Diversion Deactivation Request (ETS 300)Top of Page

    If the request is successful, the stack responds with an acu_ss_deact_divert_ret_result extended data structure in an ACU indication message using the ACU_MGMT_SAPI. The service header to this structure contains:

    The following is a listing of the acu_ss_deact_divert_ret_result extended data structure:

    struct acu_ss_act_divert_ret_result
    { 
     struct acu_ext_hdr ext_hdr; /* Extension header           */
      struct acu_ss_hdr  ss_hdr; /* Supp. services header      */
    };
    
    
    No data is returned with this message.

    Unsuccessful Call Diversion Deactivation Request (ETS 300)Top of Page

    If the request is unsuccessful, the stack responds with an acu_ss_deact_divert_ret_error extended data structure in an ACU indication message message using the ACU_MGMT_SAPI. The service header to this structure contains:

    The following is a listing of the acu_ss_deact_divert_ret_error extended data structure:

    struct acu_ss_act_divert_ret_error
    {
      struct acu_ext_hdr ext_hdr; /* Extension header                        */
      struct acu_ss_hdr  ss_hdr;  /* Supp. services header                   */
      ushort             err_id;  /* From DEACT_DIVERT_RETERR_ constants     */
      pad6
    };
    
    
    The err_id field contains the reason for the error, from DEACT_DIVERT_RETERR constants (see Appendix B).

    7.2.3 The Enquire Diversion Operation (ETS 300)Top of Page

    An application can query the network, to obtain the following Call Diversion service information:

    To query the network for status information, the application sends an acu_ss_enquire_divert_invoke extended data structure to the stack in an ACU request message, using the ACU_MGMT_SAPI. The service header to this structure must contain:

    The following is a listing of the acu_ss_enquire_divert_invoke extended data structure:

    struct acu_ss_enquire_divert_invoke
    { 
     struct acu_ext_hdr   ext_hdr;      /* Extension header                  */
      struct acu_ss_hdr    ss_hdr;      /* Supp. services header             */
      struct acu_party_num served_user; /* Leave uninvoked to get information*/
                                        /* on all served numbers             */
      struct acu_party_num enquiring_user; /* For remote Q.SIG               */
      uchar                procedure;   /* From ACU_SS_DIVERSION_ constants  */
      uchar                basic_service;  /* From SS_BASIC_SERVICE_ constants*/
      pad6
    };
    
    
    The following table lists the fields in this structure (other than the header fields) and when they are used.

    Field

    Description

    Must be filled in this request?

    served_user

    Served number to enquire about. Leave invoke field in this structure OFF for a list of all served numbers.

    Optional

    enquiring_user

    Reserved for remote Q.SIG.

    Not included

    procedure

    CFU/CFB/CFNR. From SS_DIVERSION constants.

    Yes

    basic_service

    Voice, data, etc. From SS_BASIC_SERVICE constants.

    Yes

    If a basic service is specified using the basic_service field in the structure, information will be returned just for Call Diversion services activated for that service type.

    The served_user field determines whether detailed information about one user or a list of all users is returned. If the served_user field is not invoked, the network supplies a list of users. If a served user is specified in the served_user field, detailed information about the user is returned.

    Successful Enquire Diversion Request (ETS 300)Top of Page

    If the Enquire Diversion operation invocation succeeds, the network does one of the following:

  • If the served_user field is not invoked, the network responds with one or more acu_ss_enquire_divert_ret_result extended data structres. (See Figure 25.) Each structure contains the address of one served user that has Call Diversion activated. The service header to each structure contains:

    • Operation ID ACU_OP_ID_NQUIRE_DIVERSION

      
      
    • OpType ACU_OP_TYPE_RETRES

      
      In the extended data structure for the last number, the complete field is set to ON. The application can check this field o determine when the information has arrived.

      chap72.gif
      Figure 24. Enquire Diversion (Single Served User)

      
      
      chap716.gif
      Figure 25. Enquire Diversion (All Served Users)

      
      
      The following is a listing of the acu_ss_enquire_divert_ret_result extended data structure:

      struct acu_ss_enquire_divert_ret_result
      {
        struct acu_ext_hdr   ext_hdr;       /* Extension header                */
        struct acu_ss_hdr    ss_hdr;        /* Supp. services header           */
        struct op_byte_field remote_enabled;/*ON/OFF indicates remotely enabled*/
        struct op_byte_field procedure;     /* From SS_DIVERSION_ constants    */
        struct op_byte_field basic_service; /* From SS_BASIC_SERVICE_ constants*/
        struct acu_address   diverted_to;   /* Address that served user is     */
                                            /* forwarded to                    */
        struct acu_party_num served_user;   /* Served user's address           */
        uchar                complete;      /* ON when no more messages        */
                                            /* coming, OFF if more coming      */
                                            /* Note: when ON, other fields     */
        pad7                                /* might not be invoked            */
      };
      
      The following is a list of the fields in this structure (other than the header fields), and when they are used.

      Field

      Description

      Will be filled in this response?

      remote_enabled

      ON/OFF, indicates remotely enabled

      Not included

      procedure

      CFU, CFB, CFNR. From SS_DIVERSION constants.

      Optional

      basic_service

      Voice, data, etc. From SS_BASIC_SERVICE constants. If absent, applies to all services.

      Optional

      diverted_to

      Number that the served user is forwarded to. If absent, applies to all served users.

      Optional

      served_user

      Served users address.

      Optional

      complete

      ON when no more messages are coming. OFF if more are coming. Note: when ON, other fields might not be invoked.

      Yes

    • Unsuccessful Enquire Diversion Request (ETS 300)Top of Page

      If the network encounters an error, an acu_ss_enquire_divert_ret_error extended data structure is returned in an ACU indication message. The service header to this structure contains:

      The following is a listing of the acu_ss_enquire_divert_ret_error extended data structure:

      struct acu_ss_deact_divert_ret_error
      { 
       struct acu_ext_hdr ext_hdr; /* Extension header                        */
       struct acu_ss_hdr  ss_hdr;  /* Supp. services header                   */
       ushort             err_id;  /* From DEACT_DIVERT_RETERR_ constants     */
       pad6
      };
      
      
      The err_id field contains the cause for the error, from ENQUIRE_DIVERT_RETERR constants (see Appendix B).

      7.2.4 Notification That a Diversion Has Taken Place (ETS 300)Top of Page

      The stack notifies the application when it learns that an inbound or outbound call has been diverted.

      Notification of a Diverted Outbound Call (ETS 300)Top of Page

      When an outbound call has been diverted by the network, the application is notified. An ACU indication message is sent to the application, containing an acu_ss_notify_diversion_invoke extended data structure. The service header to this structure contains:

      The connection ID of the outbound call is included in the data structure.

      The following is a listing of the acu_ss_notify_diversion_invoke extended data structure:

      struct acu_ss_notify_diversion_invoke
      {
        struct acu_ext_hdr    ext_hdr;         /* Extension header              */
        struct acu_ss_hdr     ss_hdr;          /* Supp. services header         */
        struct op_byte_field  reason;          /* Reason for diversion, from    */
                                               /* ACU_SS_DIVERSION_constants    */
        struct op_byte_field  basic_service;   /* From ACU_SS_BASIC_SERVICE_... */
                                               /* constants                     */
        struct acu_conn_id    related_conn_id; /* Identifies related connection */
        struct op_byte_field  subscription;    /* Subscription option for       */
                                               /* presentation                  */
        struct acu_party_num  redir_nb;        /* At directed-to user, number   */
                                               /* doing redirection             */
        struct acu_party_num  orig_redir_nb;   /* At directed-to user, first    */
                                               /* number doing redirection      */
        struct acu_party_num  nominated_nb;    /* Indicates new destination     */
                                               /* number to calling user        */
        struct acu_party_name redir_name;      /* Name of user invoking the     */
                                               /* diversion                     */
        struct acu_party_name orig_redir_name; /* At diverted-to user, first    */
                                               /* name doing redirection        */
        uchar                 completed;       /* ON  = diversion completed,    */
                                               /* OFF = diversion in progress   */
        uchar                 diversion_count; /* Passed up to application in   */
        pad6                                   /* acu_ss_divert_invoke          */
      };
      
      The following table lists the fields in this structure (other than the header fields) and when they are used.

      Fields

      Description

      Will be filled in this response?

      reason

      Reason for diversion, if available. From SS_DIVERSION constants.

      Optional

      basic_service

      Voice, data, etc. From SS_BASIC_SERVICE constants.

      Not included

      related_conn_id

      Related connection id.

      Yes

      subscription

      Subscription option for presentation.

      Not included

      redir_nb

      Number of user redirecting call.

      Optional

      orig_redir_nb

      Number of first user redirecting call.

      Optional

      nominated_nb

      ETS 300 only. Indicates new destination number to calling user.

      Optional

      redir_name

      Q.SIG only. Name of user invoking the diversion.

      Not included

      orig_redir_name

      Q.SIG only. Name of original redirecting user.

      Not included

      completed

      ON/OFF. ON indicates diversion is completed. OFF indicates diversion is in progress.

      Yes

      diversion_count

      Passed up to application in acu_ss_divert_invoke structure.

      Not included

      Multiple diversion operations may cause several of these primitives to be sent to the application, as additional information is provided by the network. (See Figure 26.) If the offered call is diverted multiple times, then the fields within the primitive may contain new information which should supersede previous information.


      chap73.gif

      Figure 26. Notification That an Outbound Call Has Been Diverted

      Notification of a Diverted Inbound Call (ETS 300)Top of Page

      When an inbound call has been diverted by the network, the application is notified. An ACU_FACILITY_IN message is sent to the application using the ACU_SAPI_MGT SAPI using a dummy connection ID. This message contains an acu_ss_divert_ret_result extended data structure. The service header to this structure contains:

      The following is a listing of the acu_ss_divert_ret_result extended data structure:

      struct acu_ss_divert_ret_result
      {
        struct acu_ext_hdr   ext_hdr;          /* Extension header              */
        struct acu_ss_hdr    ss_hdr;           /* Supp. services header         */
        struct op_byte_field reason;           /* Reason for diversion, from,   */
                                               /* ACU_SS_DIVERSION_... macros   */
        struct op_byte_field basic_service;    /* Applies in CC->APP in some    */
                                               /* variants. From BASIC_SERVICE  */
                                               /* constants                     */
        struct acu_address   calling_party;    /* Calling party                 */
        struct acu_address   served_user;      /* Served user                   */
        struct acu_party_num orig_called;      /* Original called number        */
        struct acu_party_num last_redirecting; /* Last redirecting number       */
      };
      
      
      The following table lists the fields in this structure (other than the header fields) and when they are used.

      Fields

      Description

      Will be filled in this response?

      reason

      Reason for diversion. From SS_DIVERSION constants

      Yes

      basic_service

      Voice, data, etc. From SS_BASIC_SERVICE constants. If absent, for all served users.

      Yes

      calling_party

      Calling party that was diverted. Not used for Q.SIG.

      Optional

      served_user

      User the call was diverted for. Not used for Q.SIG.

      Optional

      orig_called

      Original called party number. Not used for Q.SIG.

      Optional

      last_redirecting

      Last called party number. Not used for Q.SIG.

      Optional


      chap74.gif

      Figure 27. Result of an Inbound Call Which Has Been Diverted

      7.2.5 The Remind Diversion Service (ETS 300)Top of Page

      If the served user has activated Call Diversion services, whenever the served user initiates an outbound call, the Remind Diversion services can "remind" the application that Call Diversion services are activated. If the Remind Diversion service is active, an acu_ss_reminder_diversion_invoke supplementary service structure is returned to the application in the first incoming call control message. The service header to this structure contains:

      The following is a listing of the acu_ss_reminder_diversion_invoke extended data structure:

      struct acu_ss_reminder_diversion_invoke
      {
        struct acu_ext_hdr ext_hdr; /* Extension header           */
        struct acu_ss_hdr  ss_hdr;  /* Supp. services header      */
      };
      
      
      No additional data is sent.

      Any incoming call control message can carry the Remind Diversion message (ACU_CONN_CO, ACU_ALERT_IN, etc.)

      Remind Diversion can optionally be activated when the user first subscribes to PRI services. It cannot be remotely activated or invoked by the application.

      If the application has activated Call Diversion only for calls of a specific basic service type, the Remind Diversion message is returned only when the served user makes an outbound call of that service type. For example, if the application has activated Call Diversion only for teletex calls, the Remind Diversion message is returned only when the served user makes a teletex call.


      chap75.gif

      Figure 28. Remind Diversion

      7.3 Using Call Diversion Services (Q.SIG)Top of Page

      Q.SIG describes interactions between nodes in a network. This section describes how call diversion services work from three perspectives:

      It is important for the developer to recognize that the application layer must participate in the diversion by interworking the events on the A<->B and A<->C legs of the call.

      The following state diagram illustrates the Call Diversion service in the AG ISDN Q.SIG implementation (from the originating user's perspective):
      chap77.gif

      Figure 30. Call Diversion Service State Diagram (Q.SIG)

      7.3.1 Invoking a Call Diversion (Q.SIG)Top of Page

      With the AG ISDN Q.SIG implementation, the application at the originating node is responsible for attempting to reroute a call if it is requested to do so by the served user node's application. When the originating node offers a call to the served user node, the served user application requests the diversion by sending an acu_ss_diversion_invoke extended data structure to the stack in an ACU request message. The service header to this structure must contain:

      The following is a listing of the acu_ss_diversion_invoke structure:

      struct acu_ss_divert_invoke
      {
        struct acu_ext_hdr    ext_hdr;          /* Extension header             */
        struct acu_ss_hdr     ss_hdr;           /* Supp. services header        */
        struct acu_address    divert_to_nb;     /* Number of new called party   */
        struct acu_party_num  divert_from_nb;   /* No. called in last setup, if */
                                                /*different from orig_called_nb */
        struct acu_party_num  orig_called_nb;   /* Number called in first setup */
        struct acu_address    calling_nb;       /* Calling number in last setup */
        struct acu_party_name calling_name;     /* Calling name in last setup   */
        struct acu_party_name redir_name;       /* Name of user invoking this   */
                                                /* diversion                    */
        struct acu_party_name orig_called_name; /* Name of orig. called party   */
        uchar                 procedure;        /* From ACU_SS_DIVERSION_...    */
                                                /* constants                    */
        uchar                 diversion_count;  /* Passed to app, meaningless   */
                                                /* from application             */
        uchar                 subscription;     /* From SS_SUBSCRIPTION_        */
        pad5                                    /* constants                    */
      };
      
      The following table lists the fields in this structure (other than the header fields), and when they are used.

      Fields

      Description

      Must be filled in message sent by served user node?

      Will be filled in message received by originating node?

      divert_to_nb

      New destination of the call.

      Yes

      Yes

      divert_from_nb

      Number called in last setup message, if different than orig_called_nb.

      Optional

      Optional

      orig_called_nb

      Called number from very first setup message.

      Optional

      Optional

      calling_nb

      Calling number from last setup message.

      Optional

      Optional

      calling_name

      Calling name from last setup message.

      Optional

      Optional

      redir_name

      Name of user invoking this diversion.

      Optional

      Optional

      orig_called_name

      Name of original called party.

      Optional

      Optional

      procedure

      CFU/CFB/CFNR. From ACU_SS_DIVERSION constants.

      Yes

      Yes

      diversion_count

      Passed to application for storage, and for use in the NOTIFY_ DIVERSION service. This information is meaningless in RQ messages.

      Yes

      Yes

      subscription

      From SS_SUBSCRIPTION constants.

      Yes

      Yes

      7.3.2 Call Diversion Notification (Q.SIG)Top of Page

      After the alert, the originating node offers the call to the diverted-to node by sending an ACU_CONN_RQ message to the stack, containing an acu_ss_notify_diversion_invoke extended data structure. The service header to this structure contains:

      The following is a listing of the acu_ss_notify_diversion_invoke extended data structure:

      struct acu_ss_notify_diversion_invoke
      {  
        struct acu_ext_hdr    ext_hdr;        /* Extension header               */
        struct acu_ss_hdr     ss_hdr;         /* Supp. services header          */
        struct op_byte_field  reason;         /* Reason for diversion, from     */
                                              /* ACU_SS_DIVERSION_ constants    */
        struct op_byte_field  basic_service;  /* From ACU_SS_BASIC_SERVICE_     */
                                              /* constants                      */
        struct acu_conn_id    related_conn_id;/* Identifies related connection  */
        struct op_byte_field  subscription;   /* Subscription option for        */
                                              /* presentation                   */
        struct acu_party_num  redir_nb;       /* At directed-to user, number    */
                                              /* doing redirection              */
        struct acu_party_num  orig_redir_nb;  /* At directed-to user, first     */
                                              /* number doing redirection       */
        struct acu_party_num  nominated_nb;   /* Indicates new destination      */
                                              /* number to calling user         */
        struct acu_party_name redir_name;     /* Name of user invoking the      */
                                              /* diversion                      */
        struct acu_party_name orig_redir_name;/* At diverted-to user, first     */
                                              /* name doing redirection         */
        uchar                 completed;      /* ON  = diversion completed,     */
                                              /* OFF = diversion in progress    */
        uchar                 diversion_count;/* Passed up to application in    */
        pad6                                  /* acu_ss_divert_invoke           */
      };
      
      The following table lists the fields in this structure (other than the header fields) and when they are used.

      Fields

      Description

      Must be filled in messages sent from originating node?

      Will be filled in messages received by diverted-to user node?

      reason

      Reason for diversion, if available. From SS_DIVERSION constants.

      Yes

      Yes

      basic_service

      Voice, data, etc. From SS_BASIC_SERVICE constants.

      Not included

      Not included

      related_conn_id

      Related connection ID.

      Yes

      Yes

      subscription

      Subscription option for presentation.

      Not included

      Not included

      redir_nb

      Number of user redirecting call.

      Optional

      Optional

      orig_redir_nb

      Number of first user redirecting call.

      Optional

      Optional

      nominated_nb

      ETS 300 only. Indicates new destination number to calling user.

      Not included

      Not included

      redir_name

      Q.SIG only. Name of user invoking the diversion.

      Optional

      Optional

      orig_redir_name

      Q.SIG only. Name of original redirecting user.

      Optional

      Optional

      completed

      ON/OFF. ON indicates diversion is completed. OFF indicates diversion is in progress.

      Not included

      Yes

      diversion_count

      Passed up to application in acu_ss_divert_invoke structure. Meaningless in request messages.

      Yes

      Yes

      When the diverted-to node receives this request, it responds with an acu_ss_notify_diversion_ret_result extended data structure. This may be carried in an ACU_FACILITY_IN, ACU_CONN_CO, or ACU_ALERT_IN message. The message may also contain the presentation restrictions concerning the diverted-to party. (See Figure 31.)

      The following is a listing of the acu_ss_notify_diversion_ret_result extended data structure:

      struct acu_ss_notify_diversion_ret_result
      {
        struct acu_ext_hdr    ext_hdr;      /* Extension header                 */
        struct acu_ss_hdr     ss_hdr;       /* Supp. services header            */
        struct acu_party_name redir_name;   /* Redirection Name                 */
        ushort                pres_allowed; /* Indicates whether diverted-to    */
        pad6                                /* number can be presented(ON/OFF)  */
      };
      
      
      The following table lists the fields in this structure (other than the header fields) and when they are used.

      Fields

      Description

      Must be filled in message sent from diverted-to user node?

      Will be filled in message received by originating node?

      redir_name

      The name of the diverted-to user.

      Optional

      Optional

      pres_allowed

      (ON/OFF) Indicates whether the diverted-to user allows presentation of number and name.

      Yes

      Yes


      chap715.gif

      Figure 31. Q.SIG Diversion Notification

      7.3.3 Unsuccessful Diversion (Q.SIG)Top of Page

      If a diversion is unsuccessful, the diverted-to node sends the originating node an ACU request message containing an acu_ss_divert_ret_error extended data structure. The structure's header contains:

      The following is a listing of the acu_ss_divert_ret_error extended data structure:

      struct acu_ss_divert_ret_error
      {
        struct acu_ext_hdr ext_hdr; /* Extension header                  */
        struct acu_ss_hdr  ss_hdr;  /* Supp. services header             */
        ushort             err_id;  /* From DIVERT_RETERR constants      */
        pad6
      };
      
      
      The err_id field contains the reason for the error, from DIVERT_RETERR constants listed in Appendix B.

      7.3.4 Call Diversion Messaging Diagrams (Q.SIG)Top of Page

      The following sections illustrate the sequence of messages passed between the three nodes in the following scenarios:

      The diagrams in the following sections are based on Figures C.1, C.2 and C.3 in Appendix C of ISO/IEC 13873. The ACU interface is made to resemble the interaction between the SS-DIV control entity with the user. However, certain modifications are necessary to take into account that the real Q reference point is in the application, and not in the stack. Therefore, some data that would not be sent to the user is sent to the application.

      Also, Figures C.1 and C.2 of the ISO/IEC specification have been combined into a single ACU interface, because the diversion services will always be invoked on the originating node (for example, diversion by forward switching is not supported).

      Successful Call Forward - Unconditional (Q.SIG)Top of Page

      The following diagram illustrates the message types passed between nodes when a Call Forward - Unconditional succeeds.

      In this scenario, the application on PINX 2 has been set up to forward all calls destined for user B to user C.

      Note: This scenario is identical for Call Forward - Busy (CFB) except for the operation IDs.
      chap718.gif

      Figure 32. Successful Call Forward - Unconditional

      Failed Call Forward - Unconditional (Q.SIG)Top of Page

      The following diagram illustrates the message types passed between nodes when a Call Forward - Unconditional fails, because the diverted-to node rejects the call or returns an error.

      In this scenario, the application on PINX 2 has been set up to forward all calls destined for user B to user C.

      Note: This scenario is identical for Call Forward - Busy (CFB) except for the operation IDs.
      chap78.gif

      Figure 33. Failed Call Forward - Unconditional

      Successful Call Forward - No Response (Q.SIG)Top of Page

      The following diagram illustrates the message types passed between nodes when a Call Forward - No Response succeeds.

      In this scenario, the application on PINX 2 has been set up to forward all calls destined for user B to user C if user B does not respond within a period of time.


      chap70.gif

      Figure 34. Successful Call Forward - No Response

      Failed Call Forward - No Response (Q.SIG)Top of Page

      The following diagram illustrates the message types passed between nodes when a Call Forward - No Response fails, because the diverted-to node rejects the call or returns an error.

      In this scenario, the application on PINX 2 has been set up to forward all calls destined for user B to user C if user B does not respond within a period of time.


      chap79.gif

      Figure 35. Unsuccessful Call Forward - No Response

      Aborted Call Forward - No Response (Q.SIG)Top of Page

      The following diagram illustrates the message types passed between nodes when a Call Forward - No Response is aborted during the forwarding attempt, because the served user node senses that the user to whom the call was originally destined has answered.

      In this scenario, the application on PINX 2 has been set up to forward all calls destined for user B to user C if user B does not respond within a period of time.


      chap717.gif

      Figure 36. Aborted Call Forward - No Response

      7.4 Call DeflectionTop of Page

      Call Deflection services allow calls presented to the served user to be rerouted to a different address. Call deflection is a service which is only applicable to user/network type interfaces such as ETS 300, and not to peer-to-peer interfaces such as Q.SIG.

      An ETS 300 served user application can use the Call Deflection service in either of two ways:

      Regardless of which service is used, the diverted-to user is always notified of a forwarded call, using a Notify Diversion operation.

      7.4.1 Activating Call Deflection For All Calls on an NAITop of Page

      Activation of the call deflection service has only local significance (for example, no signaling information is exchanged with the remote peer). It applies only to activation/deactivation on an NAI basis, for all served users.

      To activate call deflection for an NAI, the application sends an ACU request message to the stack to the ACU_MGMT_SAPI, containing an acu_ss_activate_deflect_invoke extended data structure. The service header to this structure must contain:

      The following is a listing of the acu_ss_activate_deflect_invoke extended data structure:

      struct acu_ss_activate_deflect_invoke
      {
        struct acu_ext_hdr ext_hdr;    /* Extension header                     */
        struct acu_ss_hdr  ss_hdr;     /* Supp. services header                */
        struct acu_address deflect_to; /* Address to deflect all calls to      */
      };
      
      
      The deflect_to field is mandatory. It contains the address to which the number is deflected.

      Successful Call Deflection Activation (All Calls on an NAI)Top of Page

      If call deflection is successfully activated, the stack returns an ACU indication message to the application, containing an acu_ss_activate_deflect_ret_result extended data structure. The service header to this structure contains:

      The following is a listing of the acu_ss_activate_deflect_ret_result extended data structure:

      struct acu_ss_activate_deflect_ret_result
      {
        struct acu_ext_hdr ext_hdr;   /* Extension header           */
        struct acu_ss_hdr  ss_hdr;    /* Supp. services header      */
      };
      
      
      No additional data is sent in this structure.


      chap710.gif

      Figure 37. Activation of Call Deflection

      Unsuccessful Call Deflection Activation (All Calls on an NAI)Top of Page

      If Call Deflection is not successfully activated, the stack returns an ACU indication message to the application, containing an acu_ss_reject extended data structure. The service header to this structure contains:

      For more information about the acu_ss_reject structure, see Section 3.9.

      7.4.2 Notification of a Call Deflection (All Calls on an NAI)Top of Page

      If Call Deflection is activated for all calls on an NAI, the application receives a notification when a call has been deflected, via the ACU_MGMT_SAPI. The stack returns an ACU indication message to the application, containing an acu_ss_deflect_ret_result extended data structure. The service header to this structure contains:

      The following is a listing of the acu_ss_deflect_ret_result extended data structure:

      struct acu_ss_deflect_ret_result
      {
        struct acu_ext_hdr ext_hdr; /* Extension header           */
        struct acu_ss_hdr  ss_hdr;  /* Supp. services header      */
      };
      
      
      No additional data is sent in this structure.

      Figure 38 shows the exchange of messages that takes place when Call Deflection is activated for an NAI. In this scenario, user A is calling user B, and user B (for example, PBX) deflects the call to user C.


      chap711.gif

      Figure 38. Deflect All Calls at Served User

      7.4.3 Deactivating Call Deflection (All Calls on an NAI)Top of Page

      To deactivate call deflection for an NAI, the application sends an ACU request message to the stack to the ACU_MGMT_SAPI, containing an acu_ss_deactivate_deflect_invoke extended data structure. The service header to this structure must contain:

      The following is a listing of the acu_ss_deactivate_deflect_invoke extended data structure:

      struct acu_ss_deactivate_deflect_invoke
      {
        struct acu_ext_hdr ext_hdr; /* Extension header           */
        struct acu_ss_hdr  ss_hdr;  /* Supp. services header      */
      };
      
      
      No additional data is sent in this structure.

      Successful Call Deflection Deactivation (All Calls on an NAI)Top of Page

      If call deflection is successfully deactivated, the stack returns an ACU indication message to the application, containing an acu_ss_deactivate_deflect_ret_result extended data structure. The service header to this structure contains:

      The following is a listing of the acu_ss_activate_deflect_ret_result extended data structure:

      struct acu_ss_deactivate_deflect_ret_result
      {
        struct acu_ext_hdr ext_hdr; /* Extension header           */
        struct acu_ss_hdr  ss_hdr;  /* Supp. services header      */
      };
      
      
      No additional data is sent in this structure.

      Unsuccessful Call Deflection Deactivation (All Calls on an NAI)Top of Page

      If call deflection is not successfully deactivated, the stack returns an ACU indication message to the application, containing an acu_ss_reject extended data structure. The service header to this structure contains:

      For more information about the acu_ss_reject structure, see Section 3.9.

      7.4.4 Invoking Call Deflection for a Single Call (At Served User)Top of Page

      The call deflection service can be invoked by the served user on an incoming call if the call state is WAIT_INCOMING.

      The stack must not be configured to automatically send the ALERT on incoming calls. Otherwise, the deflection will fail due to invalid states at the network side.

      Note: Note that the ALERT is sent by default on the user side when no structure is passed to isdnStartProtocol. To change this behavior, change the settings of the CC_VOICE_ALERT_RQ and CC_DATA_ALERT_RQ bits in the in_calls_behavior substructure (described in the AG ISDN Messaging API Developer's Reference Manual). You can cause the stack to send a PROC RQ instead by setting the CC_SEND_CALL_PROC_RQ bit.

      To invoke call deflection for a call, the application sends an ACU request message to the stack, containing an acu_ss_deflect_invoke extended data structure. The service header to this structure must contain:

      The following is a listing of the acu_ss_deflect_invoke extended data structure:

      struct acu_ss_deflect_invoke
      {
       struct acu_ext_hdr        ext_hdr;            /*Extension header        */
       struct acu_ss_hdr         ss_hdr;             /*Supp. services header   */
       struct acu_address        deflect_to;         /*Number to direct call to*/
       struct acu_ss_association charge_association;/*Optional, used when AOC-E*/
       };                                            /*service has been invoked*/
      
      
      The following is a list of the fields in this structure (other than the header fields), and when they are used.

      Field

      Description

      Must be filled in this request?

      deflect_to

      Full address and subaddress of deflected-to party

      Yes

      charge_association

      Optional charge identifier, used when AOC-E service has been invoked. (See Section 8.3.4 .)

      Optional

      Successful Call Deflection Invocation (Single Call)Top of Page

      If call deflection is successfully invoked for the call, the stack returns an ACU indication message to the stack, containing an acu_ss_deflect_ret_result extended data structure. The service header to this structure contains:

      The following is a listing of the acu_ss_deflect_ret_result extended data structure:

      struct acu_ss_deflect_ret_result
      {
        struct acu_ext_hdr ext_hdr; /* Extension header           */
        struct acu_ss_hdr  ss_hdr;  /* Supp. services header      */
      };
      
      
      No additional data is sent in this structure.

      Unsuccessful Call Deflection Invocation (Single Call)Top of Page

      If call deflection is not successfully invoked for the call, the stack returns an ACU indication message to the application, containing an acu_ss_deflect_ret_error extended data structure. The service header to this structure contains:

      The following is a listing of the acu_ss_deflect_ret_error extended data structure:

      struct acu_ss_deflect_ret_error
      {
        struct acu_ext_hdr ext_hdr; /* Extension header                       */
        struct acu_ss_hdr  ss_hdr;  /* Supp. services header                  */
        ushort             err_id;  /* From DEFLECT_RETERR_... constants      */
        pad6
      };
      
      
      The err_id field contains the reason for the error, from DEFLECT_RETERR constants (see Appendix B).

      Figure 39 shows the exchange of messages that takes place when Call Deflection is invoked for a call. In this scenario, user A is calling user B, and user B (for example, PBX) deflects the call to user C.

      Note: The following diagrams are representative of exchanges, and are not intended to be complete. Many factors impact the message flow, including the subscription option configurations at the network side of the interface.
      chap712.gif

      Figure 39. Deflect Single Call at Served User

      7.4.5 Deflection Notification (At Deflected-To User)Top of Page

      When the deflected-to user receives a connection indication, the user is notified that the call is forwarded. An ACU indication message is sent, containing an acu_ss_notify_diversion extended data structure. The service header to this structure contains:

      The following is a listing of the acu_ss_notify_diversion_invoke extended data structure:

      struct acu_ss_notify_diversion_invoke
      {
        struct acu_ext_hdr    ext_hdr;        /* Extension header               */
        struct acu_ss_hdr     ss_hdr;         /* Supp. services header          */
        struct op_byte_field  reason;         /* Reason for diversion, from     */
                                              /* ACU_SS_DIVERSION_ constants    */
        struct op_byte_field  basic_service;  /* From ACU_SS_BASIC_SERVICE_     */
                                              /* constants                      */
        struct acu_conn_id    related_conn_id;/* Identifies related connection  */
        struct op_byte_field  subscription;   /* Subscription option for        */
                                              /* presentation                   */
        struct acu_party_num  redir_nb;       /* At directed-to user, number    */
                                              /* doing redirection              */
        struct acu_party_num  orig_redir_nb;  /* At directed-to user, first     */
                                              /* number doing redirection       */
        struct acu_party_num  nominated_nb;   /* Indicates new destination      */
                                              /* number to calling user         */
        struct acu_party_name redir_name;     /* Name of user invoking the      */
                                              /* diversion                      */
        struct acu_party_name orig_redir_name;/* At diverted-to user, first     */
                                              /* name doing redirection         */
        uchar                 completed;      /* ON  = diversion completed,     */
                                              /* OFF = diversion in progress    */
        uchar                 diversion_count;/* Passed up to application in    */
        pad6                                  /* acu_ss_divert_invoke           */
      };
      
      The following table lists the fields in this structure (other than the header fields), and when they are used.

      Fields

      Description

      Must be filled in message sent from originating node?

      Will be filled in message received by diverted-to user node?

      reason

      Reason for diversion, if available. From SS_DIVERSION constants.

      Yes

      Yes

      basic_service

      Voice, data, etc. From SS_BASIC_SERVICE constants.

      Not included

      Not included

      related_conn_id

      Related connection ID.

      Yes

      Yes

      subscription

      Subscription option for presentation.

      Not included

      Not included

      redir_nb

      Number of user redirecting call.

      Optional

      Optional

      orig_redir_nb

      Number of first user redirecting call.

      Optional

      Optional

      nominated_nb

      ETS 300 only. Indicates new destination number to calling user.

      Not included

      Not included

      redir_name

      Q.SIG only. Name of user invoking the diversion.

      Optional

      Optional

      orig_redir_name

      Q.SIG only. Name of original redirecting user.

      Optional

      Optional

      completed

      ON/OFF. ON indicates diversion is completed. OFF indicates diversion is in progress.

      Not included

      Yes

      diversion_count

      Passed up to application in acu_ss_divert_invoke structure. Meaningless in request messages.

      Yes

      Yes


      chap713.gif

      Figure 40. Connection Request At Deflected-to user

      7.4.6 Deflection Notification (At Originating User)Top of Page

      The originating user is notified that a call is forwarded. An ACU indication or confirmation message is sent (such as ACU_CONN_CO, ACU_ALERT_IN, a PROGRESS message or a FACILITY message), containing an acu_ss_notify_diversion extended data structure. (See Figure 41.) The service header to this structure contains:

      See Section 7.4.5 for a listing of this structure.

      The following table lists the fields in this structure (other than the header fields), and when they are used.

      Fields

      Description

      Will be filled in message received by originating node?

      reason

      Reason for diversion, if available. From SS_DIVERSION constants.

      Optional

      basic_service

      Voice, data, etc. From SS_BASIC_SERVICE constants.

      Not included

      related_conn_id

      Related connection ID.

      Yes

      subscription

      Subscription option for presentation.

      Optional

      redir_nb

      Number of user redirecting call.

      Not included

      orig_redir_nb

      Number of first user redirecting call.

      Not included

      nominated_nb

      ETS 300 only. Indicates new destination number to calling user.

      Yes

      redir_name

      Q.SIG only. Name of user invoking the diversion.

      Optional

      orig_redir_name

      Q.SIG only. Name of original redirecting user.

      Not included

      completed

      ON/OFF. ON indicates diversion is completed. OFF indicates diversion is in progress.

      Yes

      diversion_count

      Passed up to application in acu_ss_divert_invoke structure. Meaningless in request messages.

      Not included


      chap714.gif

      Figure 41. Connection Request At Originating User

      
      



      Table of Contents Index NMS Glossary Previous Page Next Page Version


      Want to send us feedback on our documentation? Email: Tech_Pubs@nmss.com
      Copyright © 2000, Natural MicroSystems, Inc. All rights reserved.