Data
When you subscribe to caast.on
method (details here) you will receive data in order to apply some custom logic on your side
In every emitted events the following data is made available for you to interact with your environment. We choose to expose a common data presented below. You will also have custom data related to the listening event. You will find more informations about witch event send additionnal data by reading the following.
Common data
{
// Config key will store here all the informations regarding the Website configuration,
// translations, defined colors etc..
"config": { ... },
// User key will store user information, more details below because this object can be extended
"user": {
"uuid": "1d5f65e4d53b20fcb223a7dc0aec3ea0"
},
// UserAccess key will store the current user ban status informations
"userAccess": {
"hardBan": null,
"softBan": null
},
// FromCaastIframe key will return a boolean indicating if current data is retrieved from an iframe or from the main Caast instance
"fromCaastIframe": false
}
Note that the questions
key will be missing if the modal is not yet opened.
user
When using the setUser method, you will add additional informations on the user object in global config, the object will now have a custom_fields
entry in it, regrouping all the data you've provided
"user": {
"uuid": "1d5f65e4d53b20fcb223a7dc0aec3ea0",
"custom_fields": {
"email": "[email protected]",
"first_name": "David",
"last_name": "Copperfield"
}
}
The user entry can also be altered when a user set his nickname or decide to go as anonymous in the ChatRoom, you will then receive an object additional keys
"user": {
"uuid": "1d5f65e4d53b20fcb223a7dc0aec3ea0",
"custom_fields": {
"email": "[email protected]",
"first_name": "David",
"last_name": "Copperfield"
},
"author": "davidCopperfield"
}
// OR
"user": {
"uuid": "1d5f65e4d53b20fcb223a7dc0aec3ea0",
"custom_fields": {
"email": "[email protected]",
"first_name": "David",
"last_name": "Copperfield"
},
"anonymous": true
}
lives
When navigation on a launcher or on a landing, Caast will emit this data containing all the contents available on the page. The data is organized and grouped by broadcasting state.
coming
contains lives not yet diffused
current
contains lives currently streaming
passed
contains lives which have been streamed or static video
The structure of each contents is detailed in the live section.
"lives": {
"coming": { "data": [{...}, {...}, {...}] },
"current": { "data": [{...}] },
"passed": { "data": [{...}, {...}] }
}
When watching a live event, you will receive duration: Infinity
, the seconds
value will be an approximate current time.
You may encounter duration: NaN
value on some onLivePlay
events, this is caused by the play event triggered before all content metadata was loaded. If you want to be sure of the current content duration, listen to the onMetaData
contentId
When listening to an event using onLivePlay, onLivePause, onLiveSubscription, onRelatedClick,onModalTrigger,onModalShow or onModalClose method, you will receive additional information regarding the current content id.
For legacy purpose you can still retrieve live_id
, but this new variable must be used if possible
"contentId": "f20aa128931a449b9478f5fb69e07c3b"
content
When listening to an event using onLivePlay, onLivePause, onLiveSubscription, onRelatedClick,onModalTrigger,onModalShow or onModalClose method, you will receive additional information regarding the current content details.
For legacy purpose you can still retrieve live
, but this new variable must be used if possible
"content": {
"attributes": {
// If finished, total duration of the content in seconds
"cachedDuration": 1803,
// Indicate if chat is enabled on this content
"chatEnabled": true,
"chatTabEnabled": false,
// Description of the content
"description":"My content description",
// Orientation of the video for this content
"displayMode":"landscape",
// Media url for portrait thumbnail
"displayPortraitThumbnailUrl":null,
// Media url for landscape thumbnail
"displayThumbnailUrl":"https://mediadev.caast.tv/...",
// End date for the content, can be null if live not yet finished
"endDate":"2023-02-14T11:00:52.000Z",
// Indicate if a live is finished
"isFinished":true,
// Indicate if likes are enabled
"likesEnabled":true,
// Indicate if likes are enabled
"liveIsReady":true,
// Name of the content
"name":"My content name",
// Indicate if premoderation is active
"premoderation":false,
// Indicate if automatic premoderation is active, which means it will be automatically disabled when live starts
"premoderationAutomatic":false,
// Indicate if the content must start at a specific timecode, this value can be override by product/url specific configuration
"startAtTimecode":0,
// Start date fior the content
"startDate":"2023-02-13T16:20:00.000Z",
// Indicate if a content has a teaser
"teaserVideoId":"UOTNfdpF3hVye4RszSncjI9V00ao02Br3bsICHS01SXegM",
// Indicate the total number of presented products
"totalProducts":0,
// Indicate the total number of questions
"totalQuestions":0,
// Indicate content type, can be "Live" or "Video"
"type":"Live",
// Video ID for the replay
"videoId":"ryeTnqlUCkC00U6D1E5p9i7xbYTaG8LcEMUOit8K02gnk",
},
"id": "f20aa128931a449b9478f5fb69e07c3b"
}
landing
When navigating on a landing page, Caast will emit this data containing details about the current landing configuration.
"landing": {
"id": "",
"type": "landing",
"attributes": {
"name":"My Homepage landing",
"insertAfter": "",
"insertBefore": "",
"insertBetween": "",
"isSlider": false,
"itemPerRow": 3
}
}
products
When listening to an event using onProductLoaded method, you will receive additional informations regarding the presented products.
"products": [{
"id": "86f2e89f7373402cadca39278652a589",
"type": "productLive",
"attributes": {
"additionalCartData":{},
"additionalPicturesUrl":[],
"complementaryInformationsFiltered": {},
"name":"",
"description": "",
"discountPriceLabel": "",
"inStock": "",
"parentProviderRef": false,
"pricing": {
"discountPrice": "",
"price":"",
},
"ref": "",
"thumbnailUrl": "",
"url": ""
}
}]
productTimestamps
When listening to an event using onProductLoaded method, you will receive additional informations regarding the presented products timestamps. This data can be useful if you want to analyze what segment of your content is being watched and what products are being presented.
"productTimestamps": [{
"id": "",
"type": "productTimestamp",
"attributes": {
"productId": "86f2e89f7373402cadca39278652a589",
"secondsEnd":0,
"secondsStart": 30,
"timestampEnd":"",
"timestampStart": "",
}
}]
player
When listening to an event using onLivePlay, onLivePause or onCollectionContentChange method, you will receive additional informations regarding the player state.
"player": {
"seconds": 36.8,
"duration": 196
}
isTeaser
When listening to an event using onLivePlay, onLivePause or onCollectionContentChange method, you will receive additional informations indicating if the played media is a teaser on your content
"isTeaser": false
question_id
When listening to an event using onQuestionClick method, you will receive additional informations regarding the question id.
"question_id": "452159334435456999954edb1a04d779"
product_id
When listening to an event using onProductClick method, you will receive additional informations regarding the product id.
"product_id": "925da3518ec44b29a0cf2ed86a3610e6"
product_ref
When listening to an event using onProductClick method, you will receive additional informations regarding the product ref.
"product_ref": "128627"
product_detailed
When listening to an event using onProductDetailsClick, onProductDetailsShow, onProductOpen or onBasketAdd method, you will receive additional informations regarding the product details. This information regroup all the product available variations and properties, contrary to the currentProductDetails
which contain the current matching variation for the selected product.
"product_detailed": {
...
}
message
When listening to an event using onMessageSubmit method, you will receive additional informations regarding the submitted message.
"message": {
"author": "davidCopperfield",
"message": "Abracadabra !"
}
from_caast
When listening to an event using onProductClick method, you will receive additional informations regarding the context of the action. If this event is coming from our direct add to cart method you will receive this data.
"from_caast": "true"
share
When listening to an event using onShare method, you will receive additional informations regarding the context of the action.
"share": {
"type": "mobile" | "url" | "facebook" | "twitter" | "linkedin" | "messenger" | "whatsapp",
"url": "https://..."
}
The mobile
type is emitted when the user is using the native share option only available on mobile devices. You cannot have further informations on what application the link is going to be shared on after this event is triggered.
emoji
When listening to an event using onReaction method, you will receive additional informations regarding the emoji the user just sent.
"emoji": "❤️"
extensionDetails
When listening to an event using onExtensionDetailsClick, onExtensionDetailsShow, or onExtensionDetailsClose method, you will receive additional informations regarding the extension details. Below is an exemple of what this object looks like.
"extensionDetails": {
"attributes": {
"configuration": {
"title": "Extension card title",
"text": "Extension card text",
"background_color": "#27ccb8",
"text_color": "#d60707"
},
"extensionId": "ea21a60968e74473918f18b854629504",
"extensionNoReload": true,
"extensionUrl": "https://story.tl/demo-asus?transparent=1&mode=mobile",
"thumbnailUrl": null,
"triggerId": "919f9e6d5d1540bda2fb9293b85a8a92",
"triggerName": "pushed_box" | "announcement"
},
"id": "bc5b8bff46f74ee68937485672960f1f",
"type": "extensionTrigger"
}
relatedCurrentContentId
When listening to an event using onRelatedClick method, you will receive additional informations regarding the related current content being watched. Below is an exemple of what this object looks like.
"relatedCurrentId": "f20aa128931a449b9478f5fb69e07c3b"
relatedNextContentId
When listening to an event using onRelatedClick method, you will receive additional informations regarding the next related content being clicked. Below is an exemple of what this object looks like.
"relatedNextId": "49f5fe9b753a43e2807e81e59c66fca3"
collection
When navigation on a collection page, Caast will emit this data containing details about the current collection configuration.
"collection": {
"id": "",
"type": "collection",
"attributes": {
"name":"Collection for Fashion universe"
}
}
collectionItems
When navigation on a collection page, Caast will emit this data containing details about the current collection contents.
The structure of each content is detailed in the live section.
"collectionItems": [{...}, {...}],
collectionId
When listening to an event using onCollectionInView method, you will receive additional informations regarding the current collection being loaded. Below is an exemple of what this object looks like.
"collectionId": "d7df2370e4114bcc979bf09782ff0cd2"
collectionCurrentContentId
When listening to an event using onCollectionContentChange method, you will receive additional informations regarding the current content being watched. Below is an exemple of what this object looks like.
"collectionCurrentContentId": "f20aa128931a449b9478f5fb69e07c3b"
collectionNextContentId
When listening to an event using onCollectionContentChange method, you will receive additional informations regarding the next content being loaded. Below is an exemple of what this object looks like.
"collectionNextContentId": "49f5fe9b753a43e2807e81e59c66fca3"
rating
When listening to an event using onReviewStarRating method, you will receive additional informations regarding the note a user has attributed to your content. The returned note is between 1 and 5.
"rating": 3
survey
When listening to an event using onSurveyShow, onSurveyVote and onSurveyClose method, you will receive additional informations regarding the survey.
"survey" : {
"attributes": {
"activeBackgroundColor": null,
"activeColorText": null,
"textColor": null,
"cardColor": null,
"createdAt:": "2023-03-13T12:00:00.000Z",
"question": "What is the most beautiful color ?",
"answers": [
{
"attributes": {
"answer": "Red"
},
"id": "471027ec63744cf68fb07ac614fa5bc5",
"type": "surveyAnswer"
},
{
"attributes": {
"answer": "Blue"
},
"id": "0bd0354d898b43e09b40e3da93877a81",
"type": "surveyAnswer"
}
]
},
"id": "c04b03b9495d4baa8b3fa1af5e05ab83",
"type": "survey"
}
surveyAnswer
When listening to an event using onSurveyVote method, you will receive additional informations regarding the survey's answer the user selected.
"surveyAnswer": {
"attributes": {
"answer": "Red"
},
"id": "471027ec63744cf68fb07ac614fa5bc5",
"type": "surveyAnswer"
}