Call deflection

Call Deflection services allow calls presented to the served user to be rerouted to a different address. Call deflection is a service that 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. This topic describes:

Activating call deflection for all calls on an NAI

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)

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.

Activation of call deflection

Activation of call deflection

Unsuccessful call deflection activation (all calls on an NAI)

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 The acu_ss_reject extended data structure.

Notification of a call deflection

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.

The following illustration 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.

Deflect all calls at served user

Deflect all calls at served user

Deactivating call deflection (all calls on an NAI)

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 listing shows 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)

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 listing shows 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)

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 The acu_ss_reject extended data structure.

Invoking call deflection for a single call

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 listing shows 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 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?

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 AOC and Explicit Call Transfer (ECT) services.)

Optional


Successful call deflection invocation (single call)

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 listing shows 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)

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 listing shows 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.

The following illustration 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 illustrations 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.

Deflect single call at served user

Deflect single call at served user

Deflection notification (at deflected-to user)

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 listing shows 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


Connection request at deflected-to user

Connection request at deflected-to user

Deflection notification (at originating user)

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

See Deflection notification (at deflected-to user) 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


Connection request at originating user

Connection request at originating user