#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
. Это потому, что структура массива может быть неправильной?