Bronto PHP API для получения статуса подписки на определенный список для определенного электронного письма - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь выяснить, как использовать PHP и API Bronto для определения, подписан ли пользователь на конкретный список электронной почты или отписался от него.

Я использую приведенный ниже код, и моя проблема заключается в том, что независимо от того,если пользователь подписан или отписался, я всегда получаю статус «активный» для пользователя, и мне нужно видеть, не находится ли он в списке, но отписан или в списке и подписан.

В любом случае, знаючто я должен изменить?

 <?php
     $client = new SoapClient('https://api.bronto.com/v4?wsdl', array('trace' => 1, 
                             'features' => SOAP_SINGLE_ELEMENT_ARRAYS));

    try {
          //token
          $token = "abc 123 and yz";

          //print "logging in\n";
          $sessionId = $client->login(array('apiToken' => $token))->return;

           $session_header = new SoapHeader("http://api.bronto.com/v4",
               'sessionHeader',
               array('sessionId' => $sessionId));
           $client->__setSoapHeaders(array($session_header));

            // set up a filter to read contacts and match on email address
            $filter = array('email' => array(array('operator' => 'EqualTo',
                   'value' => 'fake.person@gmail.com'
                   ),
               ),
      ); 
            $contacts = $client->readContacts(array('pageNumber' => 1,
                  'includeLists' => false,
                  'filter' => $filter,
                  )
                )->return;

            // print matching contact email addresses
             foreach ($contacts as $contact) {
             //$contact->status  always seems to have a status of active or null ??
              if($contact->status ='subscribed')
             {
                echo " <a href='' class='btn btn-primary'>Unsubscribe</a>";
             }
              else if($contact->status ='Unsubscribed')
             {
               echo " <a href=''>Subscribe</a>";
             }
               //print $contact->email . ': ' . $contact->status . "\n";
            }

          } catch (Exception $e) {
            print "uncaught exception\n";
            print_r($e);
        }

1 Ответ

0 голосов
/ 24 января 2019

Я думаю, вы неправильно используете свойство объекта "status".Если вы посмотрите на эту страницу, https://help.bronto.com/bmp/reference/r_api_soap_contactfilter.html, показывает все вещи, которым соответствует статус.Честно говоря, я думаю, что было бы лучше использовать эту функцию фильтра, чтобы выбрать неподписанных пользователей и выполнить логику на основе результатов фильтра. Что возвращает $ contact-> status == "unsub"?Я имею в виду, что всегда есть метод https://help.bronto.com/bmp/reference/r_api_soap_readunsubscribes.html для выбора неподписавшихся пользователей и последующего выполнения логики для пользователей, которых нет в этой группе.

        // print matching contact email addresses
         foreach ($contacts as $contact) {
         //$contact->status  always seems to have a status of active or null ??
          if($contact->status != 'unsub')
         {
            echo " <a href='' class='btn btn-primary'>Unsubscribe</a>";
         }
          else if($contact->status =='unsub')
         {
            echo " <a href=''>Subscribe</a>";
         }
           //print $contact->email . ': ' . $contact->status . "\n";
        }

Я только что заметил, что ваши операторы не правы.у вас есть "=", не должно ли быть "=="?

...