Adding custom data attributes
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); } }
Adding custom functionality with plugins
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.