Feedback

  • Contents
 

Structure of IP Notification Messages

For the purpose of the IC SOAP implementation, message transport is not limited to any kind of protocol.  SOAP requests are sent as notifications containing payload data as well as transport-specific out-of-band information.  As HTTP is most frequently used as transport for SOAP requests through the internet, an ISAPI listener is provided.  However, any kind of client who "talks" Notifier could issue SOAP requests.  For example, a SOAP Notifier COM object can directly send SOAP packets to IC.

HTTP and Notifier protocols transport SOAP messages between components in the IC environment.

Request Message Structure

Since Interaction Processor does not directly support Notifier Requests, notifications are used to emulate the request/response mechanism.  The SOAP request notifications use the IC's eSOAP_REQUEST_OBJECT object type and an object ID that identifies the client.

Field Name

Type

Description

Version

int

2 (Version number of the message structure). 

RequestId

DWORD

Request identifier specified by the client to identify the response.  The server must send it back in the response.

ClientName

string

Name of the client

Respond

bool

False     Server must not send a response back to the client.

True      Server must send a response to the client. 

InitiatorEvent

string

String of the notification Event-ID.  Often same as SOAPAction.

The notification event ("Initiator Event") can either be explicitly specified or the SOAPAction is will be used as default.  In early editions of this API, the Notification Event was always the SOAPAction, but since a handler may only trigger on one specific event (or a wildcard event), the framework was expanded so that the notification event ("Initiator Event") can now be specified explicitly.

SOAPAction

string

SOAP Action name

TransportInfoSize

DWORD

Size in bytes of the transport information data block

TransportInfoData

BYTE[]

Transport information data.  This is an XML document that encodes transport specific information.  For example, for HTTP it contains the verb as well as the HTTP header fields.  The default character set is UTF-8, but the data block may contain an XML declaration with the appropriate encoding attribute.  This field may be omitted (Size = 0). 

PayloadSize

DWORD

Size in bytes of the SOAP payload data block

PayloadData

BYTE[]

This is the data of the SOAP envelope.  The default character set is UTF-8, but the data block may contain XML declaration with the appropriate encoding attribute.

Response Message Structure

The response is sent back to the client with the object type eSOAP_RESPONSE_OBJECT. The object ID uniquely identifies the client and is used to send the response back to the right client.  The clients use GetNotifierSequenceNumber to obtain a unique identifier to identify themselves.  Clients that do not expect a response must set the ‘Respond' flag in the request data block to ‘false'.  The Message data of the request and response have the following structure.

Field Name

Type

Description

Version

int

2 (Version number of the message structure). 

RequestId

DWORD

Request identifier specified by the client to identify the response.  The server fills this slot with the value in the request data. 

ResultCode

enum

Enumeration indicating how the request was processed.

Succeeded (0)

The SOAP request was processed successfully and without fault. 

Failed (1)

The SOAP request failed.  This flag is set by the ‘SOAP Send Response' tool when the body contains a <Fault> element.  A client can thus check for a failed request without having to unpack the payload.

Unhandled (2)

The Initiator fired, but the handler did not invoke ‘SOAP Send Response' to return a response (the ‘SOAP Request' handle went out of scope). 
The payload and transport control data are empty.

TransportControlSize

DWORD

Size in bytes of the transport control data block

TransportControlData

BYTE[]

Transport control data.  This is an XML document that contains transport specific out-of-band control data.  For example, for HTTP it contains additional HTTP header fields or status codes to convey special failures.  The default character set is UTF-8, but the data may contain an XML declaration with the appropriate encoding attribute.  Data block may be empty. 

PayloadSize

DWORD

Size in bytes of the SOAP response payload data block.  The default character set is UTF-8, but the data may contain an XML declaration with the encoding attribute. 

PayloadData

BYTE[]

This is the data of the SOAP response envelope.  The data block is empty if the ‘Unhandled' flag is set.