Setting the Returned Product Attributes in Recommendations in Kotlin SDK

Dynamic Yield provides a default structure for product attributes returned in recommendation campaign responses. You can fine-tune these product attributes to match your business needs as described in this article. Note that when you use the chooseVariation function , you can override this default by creating a dedicated recsProductData object.

The default product attribute structure

The following is the default product structure (based on the Dynamic Yield product feed structure):

Open class DefaultRecsProductData : RecsProductData() { 
    var product_type: ProductType? = null 
    var group_id: String? = null 
    var name: String? = null 
    var url: String? = null 
    var price: Float? = null 
    var in_stock: Boolean? = null 
    var image_url: String? = null 
    var categories: List<String?>? = null 
    var keywords: List<String?>? = null 
    var extra: MutableMap<String, Any?> = mutableMapOf()
} 

Changing the default using Kotlin SDK

To add more fields to the product structure:

  1. Create a new class that inherits from RecsProductData and annotate the class with the @Serializable annotation (org.jetbrains.kotlinx:kotlinx-serialization-json).
@Serializable 
class CustomRecsProductData : RecsProductData() { 
    val color: String? = null 
} 
  1. Set this class as the new default product data structure by calling setDefaultProductDataType().
private fun changeTheDefaultRecsProductData() { 
    DYSdk.getInstance().setDefaultProductDataType(CustomRecsProductData.serializer()) 
}  
  1. After calling setDefaultProductDataType(), whenever chooseVariations is called for recommendations campaigns, the return value includes the fields you added to the new class. The product data will include the values in either a dedicated attribute (to the listed above attribute - product type, price, keywords, etc.), any additional attribute and it's value will be found inside the extra map.

,