Привет, Как собрать согласие на sms в laravel из klaviyo php-sdk в laravel

#php #laravel #api #sdk

Вопрос:

Эй, ребята, кто-нибудь знает, как добавить SMS-контент в klaviyo из этого пакета в laravel.

В принципе, я добавил этот фрагмент кода, в котором я могу добавить профиль и увидеть зеленую галочку рядом с электронной почтой пользователя, но для SMS она там не отображается. Прочитав некоторые аналогичные проблемы, с которыми сталкиваются другие, я обнаружил, что нам нужна конечная точка подписки API для добавления согласия на SMS, но я все еще не могу найти способ сделать это с помощью этого пакета. Любая помощь и предложения будут оценены по достоинству.

 use KlaviyoKlaviyo as Klaviyo;
use KlaviyoModelEventModel as KlaviyoEvent;
use KlaviyoModelProfileModel as KlaviyoProfile;


class KlaviyoformsController extends Controller
{
    public function index()
    {
        $client = new Klaviyo('Your_private_key', 'public key');
        $event =
            new KlaviyoEvent(
                array(
                    'event' => 'Lead',
                    'customer_properties' => array(
                        '$email' => "someone@mailinator9.com",
                        '$consent' => ['sms', 'email'],
                        'sms_consent' => true,
                        'email_consent' => true,
                        '$first_name' => "Thomas9",
                        '$last_name' => "Jefferson",
                        '$phone_number' => "1234567890"
                    ),
                    'properties' => array()
                )
                );
        



        $client->publicAPI->track( $event, true );
        return view('klaviyoform::dashboard.index');
    }
}
```
 

Ответ №1:

У вас должна быть форма захвата для отправки согласия в Laravel, которая затем подпишет их с соответствующими данными о согласии. Вы должны явно запросить согласие как по электронной почте, так и по sms.

 $client = new Klaviyo('Your_private_key', 'public key');

$customer_properties =  [
    '$email' => "someone@mailinator9.com",
    '$first_name' => "Thomas9",
    '$last_name' => "Jefferson",
    'phone_number' => "1234567890"
];

$consents = [];

if (request()->get('sms_consent', false)) {
  $consents['sms_consent'] = true;
}

if (request()->get('email_consent', false)) {
  $consents['email_consent'] = true;
}

foreach ($consents as $type => $consented) {
  if ($consented) {
    $consents['$consent'] = array_merge(
        data_get($consents, '$consent', []), 
        [explode('_', $type)[0]] //e.g. sms, email
    );
  }
}

$client->lists->addSubscribersToList('ListId', array_merge($customer_properties, $consents));
 

Это относительный код psuedo, но цель ясна: определить, разрешили ли они как sms, так и согласие по электронной почте. Если это так, мы добавим их свойства согласия.

Как только данные о согласии будут добавлены в этот список, вы можете безопасно отправлять им sms и/или электронную почту в зависимости от выбора клиентов.

Комментарии:

1. Эй, спасибо за объяснение, я пытался внести изменения, но потом возникла эта проблема Cannot access offset of type string on a string . Это потому, что структура массива может быть неправильной?