无法检查 klaviyo laravel 包中短信的同意状态

Posted

技术标签:

【中文标题】无法检查 klaviyo laravel 包中短信的同意状态【英文标题】:Not able to check consent status for sms in klaviyo laravel package 【发布时间】:2021-10-27 13:14:17 【问题描述】:

我尝试将 klaviyo 与 laravel 与这段代码集成但它只添加了电子邮件的同意(klaviyo 中电子邮件旁边的绿色复选框),但它也应该以与电子邮件相同的方式添加对 SMS 的同意。我在这里做错了什么?到目前为止,我已经尝试过 this 和 this,但遇到了不同的错误。

 public function chnages()
    
        $client = new Klaviyo('Private_Api_key', 'Public_key');
        $profile = new KlaviyoProfile(
            array(
                '$email' => 'thomas1.jefferson@mailinator.com',
                '$first_name' => 'Thomas11',
                '$last_name' => 'Jefferson',
                '$consent' => ['sms','email'],
                '$sms_consent' => true,
                '$phone_number' => "1234567890",
                'Plan' => 'Premium'
            )
        );
        // dd($profile);
        $client->lists->addSubscribersToList('Klaviyo_list_id', array($profile));
    

【问题讨论】:

【参考方案1】:

所以这里是我为 laravel 提出的正确代码,基本上,您必须将请求从表单发送到此函数,然后从 here 跟进此代码和 API 文档。 注意:SMS 同意只能从订阅端点传递,所以我已经提到了 URL。 请随时在此线程上提问和建议。

        public function forform(Request $request)
    
        $ifsmscheckd = $request->input('sms_consent') ? true : false; //if input is there then its true
        if ($ifsmscheckd) 
            // if both checkd
            $curl = curl_init();
            curl_setopt_array($curl, [
                CURLOPT_URL => "https://a.klaviyo.com/api/v2/list/LIST_ID/subscribe?api_key=PRIVATE_KEY",
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => "",
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 30,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => "POST",
                CURLOPT_POSTFIELDS => json_encode([
                    'profiles' => [
                        [
                            'email' => $request->input('name'),
                            'phone_number' => $request->input('phone_number'),
                            'sms_consent' => $request->input('sms_consent') ? true : false,
                            '$consent' => ['sms', 'email']
                        ],
                    ],
                ]),
                CURLOPT_HTTPHEADER => [
                    "Accept: application/json",
                    "Content-Type: application/json"
                ],
            ]);

            $response = curl_exec($curl);
            $err = curl_error($curl);
            curl_close($curl);
            if ($err) 
                echo "cURL Error #:" . $err . "cmdskcmdsl";
             else 
                echo $response;
            
        
        else
            return;
        
    

【讨论】:

【参考方案2】:

参考正确的解决方案,以免误导! https://***.com/a/69004266/1060364

【讨论】:

嗨,是的,我已经尝试过这样做,但它仍然会创建自定义属性,例如同意短信、电子邮件。不是我们现在拥有的那些绿色检查,例如 ibb.co/9rLbwrs 在 woocom wordpress 中的同意。 为了获得同意,我们必须使用 $dollar 符号作为其 klaviyo 属性传递它,但它必须与订阅端点做一些我根本不知道的事情。有这个文档help.klaviyo.com/hc/en-us/articles/…,但是代码示例是在 python 中的,我猜这不是重点,我们如何从表单请求中用 php 做到这一点? 啊——你说得对。同意变量也被保留。至于添加和订阅之间的区别。 AFAIK,在 Klaviyo 中,API 有一个“添加到列表”和一个“订阅到列表”——听起来一样,但不是。订阅将遵守单/双选择等列表设置,我认为是添加同意的设置(至少对于电子邮件)。添加到列表,是在您将联系人同步到 Klaviyo 以稍后附加自定义属性但您不希望它暗示他们订阅的情况下添加它而不需要上述要求。 看起来您编写了自己的 GET 请求来执行此操作。对不起,我带你走错路了!

以上是关于无法检查 klaviyo laravel 包中短信的同意状态的主要内容,如果未能解决你的问题,请参考以下文章

从Intent服务发送短信 - 无法接收广播以检查是否发送了短信

如何将数字转换为 Klaviyo 中的逗号分隔值

laravel 怎么使用阿里大于短信发送

laravel 怎么响应阿里云短信异步通知接口?

laravel+阿里大于实现发送验证码短信

laravel 怎么使用阿里大于短信发送