Tip |
---|
Available since version Paper Plane 11.0 (Paper Plane). |
The Unity Pricefx Messaging API allows the external application front-end frontend to interact with Pricefx Unity front-endPricefx frontend. Via the API you can ask Unity Pricefx to create a new quote, update or fetch quote inputs, etc.
To enable the Messaging API, set up the Feature Flag feature flag feIntegration.active
to value true
.
To call Unity Pricefx from the external app front-endfrontend, use the window.postMessage() method from JavaScript in the browser.
Example , when Unity is embedded inside of of Pricefx embedded in an external application:
Code Block | ||
---|---|---|
| ||
const iframe = document.getElementById('pfx-iframe'); const messageHandler = (event) => console.log(event.data); window.addEventListener(messageHandler); iframe.contentWindow.postMessage({ "source": "pfxParentMessage", "type": "getUserData" }, *); |
In this case, you will attach a handler that logs the message it receives from UnityPricefx, and also will message Unity Pricefx requesting the logged in user data.
Example , when of an external application is embedded in UnityPricefx:
Code Block | ||
---|---|---|
| ||
const messageHandler = (event) => console.log(event.data); window.addEventListener(messageHandler); window.parent.postMessage({ "source": "pfxParentMessage", "type": "getUserData" }, *); |
The messages must have 2 fields: source
and type
. For most messages, there will be also a the payload
field which will contain additional data for the sent message.Source
source
refers to the origin of the message, which can be eitherpfxParentMessage
orpfxChildMessage
.
...
type
defines which kind of message is being sent, and can be any of the following values described in the tables below.
Some kinds of messages will also return data , which will be also sent through postMessage too.
Please note that the messages Note: Messages described in the table below (except for getUserData
and addClicLineItems
) have the same signature as described in here.
The following messages are available for both cases (where Unity Pricefx is either the parent or a child page):
Message type | Payload | Description | Example | Response |
---|---|---|---|---|
|
None | Returns the logged in user data. |
|
| ||||||||||
|
|
| Gets |
a header field’s value from the CLIC, i.e. quote displayed. This is only enabled when a detail page is open. |
|
| ||||||||||
|
|
|
| Updates |
a header field’s value. This is only enabled when a detail page is open. |
|
None |
|
None | Recalculates the CLIC displayed. This is only enabled when a detail page is open. |
|
None | |
|
|
| Returns the line items matching the given queryData criteria. This is only enabled when a detail page is open. |
|
| ||||||||||
|
|
|
|
|
Adds a list of SKUs to the current CLIC displayed, with the option of filling some of its inputs. This is only enabled when a detail page is open. |
|
None |
There are also messages which are exclusive to the case where Unity Pricefx is embedded inside in an external application, since they manipulate the window location:
Message type | Payload | Description | Example | Response |
---|---|---|---|---|
|
|
|
|
| Creates a new quote/RBA/contract/compensation plan. Values of this new CLIC can be passed through |
which reuses context linking and has the exact same API. |
|
None | ||
|
| Navigates |
Pricefx to the given target page. |
|
None |
There are also events in Unity Pricefx that will trigger a message. When submitting or recalculating a CLIC, a message will be sent containing all CLIC data, like belowsuch as:
Code Block | ||
---|---|---|
| ||
{ "source": "pricefx", "type": "QUOTE_RECALCULATED", "payload": { "version": 7, "typedId": "2147493723.Q", "uniqueName": "P-2147493723", "label": "New Quote", "targetDate": "2023-05-29", "workflowStatus": "DRAFT", ... } } |
...