Table of Contents Index NMS Glossary Previous Page Next Page Version


Chapter 6

Call Forwarding Services


6.1 Introduction
6.1.1 Call Forwarding in an ETS 300 Application
6.1.2 Call Forwarding in a Q.SIG Application
6.2 Using Call Diversion Services (ETS 300)
6.2.1 Activating Call Diversion (ETS 300)
6.2.2 Deactivating Call Diversion (ETS 300)
6.2.3 The Enquire Diversion Operation (ETS 300)
6.2.4 Diversion Has Taken Place (ETS 300)
6.2.5 The Remind Diversion Service (ETS 300)
6.3 Using Call Diversion Services (Q.SIG)
6.3.1 Invoking a Call Diversion (Q.SIG)
6.3.2 Call Diversion Notification (Q.SIG)
6.3.3 Unsuccessful Diversion (Q.SIG)
6.3.4 Call Diversion Messaging Diagrams (Q.SIG)
6.4 Call Deflection
6.4.1 Activating Call Deflection for All Calls on an NAI
6.4.2 Notification of a Call Deflection
6.4.3 Deactivating Call Deflection (All Calls on an NAI)
6.4.4 Invoking Call Deflection for a Single Call
6.4.5 Deflection Notification (at Deflected-To User)
6.4.6 Deflection Notification (at Originating User)

6.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:

6.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 29):

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.


chap61.gif

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

6.1.2 Call Forwarding in a Q.SIG ApplicationTop of Page

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

Section 6.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). NMS 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.

6.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.

6.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.

Field

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).

6.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 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).

6.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:

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).

6.2.4 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.

Field

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 32.) If the offered call is diverted multiple times, then the fields within the primitive may contain new information which should supersede previous information.


chap63.gif

Figure 32. 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.

Field

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


chap64.gif

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

6.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.


chap65.gif

Figure 34. Remind Diversion

6.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:

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

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

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

With the NMS 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_diversion_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 the acu_ss_diversion_invoke structure and when they are used. Header fields are not listed here.

Field

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

6.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 the acu_ss_notify_diversion_invoke structure and when they are used. Header fields are not listed here.

Field

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 37.)

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.

Field

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


chap615.gif

Figure 37. Q.SIG Diversion Notification

6.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.

6.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.
chap618.gif

Figure 38. 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.
chap68.gif

Figure 39. 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.


chap60.gif

Figure 40. 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.


chap69.gif

Figure 41. 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.


chap617.gif

Figure 42. Aborted Call Forward - No Response

6.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.

6.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.


chap610.gif

Figure 43. 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 2.9.

6.4.2 Notification of a Call DeflectionTop 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 44 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.


chap611.gif

Figure 44. Deflect All Calls at Served User

6.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 2.9.

6.4.4 Invoking Call Deflection for a Single CallTop 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: 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 NMS 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 7.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 45 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.
chap612.gif

Figure 45. Deflect Single Call at Served User

6.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 the acu_ss_notify_diversion_invoke structure and when they are used. Header fields are not listed here.

Field

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


chap613.gif

Figure 46. Connection Request at Deflected-to user

6.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 47.) The service header to the acu_ss_notify_diversion_invoke structure contains:

See Section 6.4.5 for a listing of the acu_ss_notify_diversion_invoke structure.

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

Field

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


chap614.gif

Figure 47. 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 © 2001, Natural MicroSystems, Inc. All rights reserved.