To store custom attributes for a contact in Engage, these plugins can be used:
magento/app/code/Voyado/ExtendedVoyado/etc/di.xml
<? xml version = "1.0" ?>
< config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "urn:magento:framework:ObjectManager/etc/config.xsd" >
< type name = "Voyado\Magento2\Helper\ContactAttributesHelper" >
< plugin name = "Voyado_ExtendedVoyado_Plugin_Sdk_To_Voyado" type= "Voyado\ExtendedVoyado\Plugin\Sdk\ToVoyado" />
</ type >
</ config >
magento/app/code/Voyado/ExtendedVoyado/Plugin/Sdk/ToVoyado.php
<? php
namespace Voyado\ExtendedVoyado\Plugin\Sdk ;
use Magento\Customer\Api\Data\ CustomerInterface ;
use Magento\Customer\Model\ Customer ;
use Voyado\Magento2\Helper\ ContactAttributesHelper as VoyadoContactAttributesHelper ;
class ToVoyado
{
/**
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function afterGetRequiredFieldsCustomer (
VoyadoContactAttributesHelper $object ,
array $requiredFieldsCustomer
) : array {
return array_merge ( $requiredFieldsCustomer , [ 'married' , 'region' ]);
}
/**
* @param CustomerInterface | Customer $customer
* @return \Swagger\Client\model\ ContactAttributes
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function afterGetContactAttributeDataFromCustomer (
VoyadoContactAttributesHelper $object ,
array $result ,
$customer
) : array {
$extraData = [
'married' => 'MarriedExtraPropertyDummyValue' ,
'region' => 'RegionExtraPropertyDummyValue' ,
];
return array_merge ( $result , $extraData );
}
}
When adding custom functionality to this extension, make sure to create your own plugin. Otherwise, you may interfere with the existing code and risk breaking it.