Getresponse API 2 (добавление пользовательских полей и контактов с помощью PHP)

Im, новый для кодирования и веб-разработки, поскольку это и погружение в глубокий конец API, – это то, чего я бы никогда не сделал! Однако, будучи сказанным, я продвинулся дальше, чем ожидалось. У меня возникают проблемы при попытке добавить настраиваемые поля в функцию добавления контактов. Я пытаюсь получить код для добавления полей ввода скрытой формы, когда пользователь попадает на мою страницу с благодарностью. Я не хочу использовать собственный конструктор форм Getresponses для моей главной страницы, поэтому лучше использовать API. У меня есть код, который работает отлично, когда дело доходит до добавления контакта, однако, когда я добавляю set_contact_customs, код не выполняется и не работает со следующей ошибкой: (Request have return error: Array). Поэтому я понимаю, что это связано с массивом set_contact_customs однако я не знаю, что это я сделал неправильно. Любые советы и помощь очень ценятся, так как я все еще изучаю основы, поэтому выбирая то, что вы говорите, это отличная кривая обучения. Благодарю.

— Ниже приведена рабочая версия без set_contact_customs —-

<?php // Add contact to selected campaign id try{ $result_contact = $client->add_contact( $api_key, array ( 'campaign' => 'My-Camp-ID', 'name' => $fullname, 'email' => $emailaddress ) ); echo "<p style='color: blue; font-size:24px;'>No Errors, Contact and Custom Fields have been added...</p>"; } catch (Exception $e) { echo $e->getMessage(); } ?> 

— Вот код, который вызывает проблемы (с помощью set_contact_customs) —-

  <?php // Add contact to selected campaign id try{ $result_contact = $client->add_contact( $api_key, array ( 'campaign' => 'My-Camp-ID', 'name' => $fullname, 'email' => $emailaddress ) ); $result_contact = $client->set_contact_customs( $api_key, array( 'Survey Type' => $surveytype, 'Survey Cost' => $surveycost ) ); echo "<p style='color: blue; font-size:24px;'> Contact Added </p>"; } catch (Exception $e) { echo $e->getMessage(); } ?> 

Solutions Collecting From Web of "Getresponse API 2 (добавление пользовательских полей и контактов с помощью PHP)"

  1. API 2 на самом деле не существует: в GetResponse говорят, что версия «1.5.0 – это последняя версия нашего API JSON / RPC», особенно если вы говорили 10 месяцев назад. Теперь они готовятся к бета-тестированию v3. Поэтому я предполагаю, что вы говорили о 1.5 и отвечали на это (я не знаком с v3, может быть, там другое).

  2. Вы должны отправить идентификатор контакта с помощью set_contact_customs , и вы этого не сделали.

  3. Когда он говорит: «request error: array», он не относится к вашему массиву (хотя проблема в вашем массиве, потому что вы не отправляете ему идентификатор контакта), они отправляют массив в качестве ответа с Сообщения об ошибках.

  4. Я хотел бы рассказать вам, где получить идентификатор контакта, чтобы отправить его, но я ищу его сейчас. 🙂

ОБНОВИТЬ:

Хорошо, я объединил его с частями по всему Интернету, и теперь вот рабочий формат.

  1. Вам не нужно добавлять add_contact, а затем обновлять его, вы можете сделать это за один раз, добавив параметр «таможня» к вызову add_contact (GR говорит, что мы не должны ожидать, что контакт будет добавлен немедленно, так что вы может даже не заставить кого обновить, если вы сразу вызовете эту функцию).

    Здесь описываются поля add_contact.

  2. Параметр «таможня» должен выглядеть по-другому. Вместо:

     array( 'Survey Type' => $surveytype, 'Survey Cost' => $surveycost ) 

    должен быть:

     array( array( 'name' => 'Survey Type', 'content' => $surveytype ), array( 'name' => 'Survey Cost', 'content' => $surveycost ) ) 

    Кстати, из того, что я тестировал, – благословенно, вам не нужно определять в GR UI эти пользовательские поля сначала, независимо от того, что вы отправляете, будут добавлены или обновлены (в их пределах для пользовательских имен полей и значений).

    При вызове add_contact у меня возникла ошибка при попытке отправить одно настраиваемое поле с пустым контентом. Когда я отправил его с помощью set_contact_customs, я не получил никаких ошибок; Я хотел видеть, если бы он удалял поле или значение поля – ничего не делал.

  3. Если вы все еще хотите обновить существующий контакт, вот как отправить идентификатор контакта с вызовом обновления:

     $result = $client->set_contact_customs( $api_key, array( 'contact' => $contact_id, 'customs' => $custom_fields_array ) ); 
  4. Чтобы сначала найти идентификатор контакта, вы должны вызвать get_contacts . И так как было сказано (я его не тестировал), что в разных кампаниях контакты с одним и тем же адресом электронной почты имеют разные идентификаторы контактов, вам следует передать как кампанию, так и электронную почту с ней.

    Как вы можете видеть , кампанию можно отправить в параметре «campaign» (тогда должен использоваться идентификатор кампании, который вы получили для add_contact) или в «get_campaigns» (тогда можно использовать название кампании или даже префикс).

    Вот вызов с идентификатором кампании, для вашего кода:

     $result = $client->get_contacts( $api_key, array( 'campaigns' => array( 'My-Camp-ID' ), 'email' => array( 'EQUALS' => $emailaddress ) ) ); 
  5. Чтобы получить идентификатор контакта из get_contacts, сделайте то же самое, что рекомендуется для получения идентификатора кампании:

     $contact_id = array_pop( array_keys( $result ) ); if ( empty( $contact_id ) ) { //still not ok } else { //you can call set_contact_customs } 
  6. Чтобы сообщение об ошибке было более наглядным, вместо просто «Request have return error: Array» откройте ваш jsonRPCClient.php, который вы, несомненно, включите в свой файл с помощью этих вызовов функций GR, и найдите следующую строку:

     !is_null($response['error']) => 'Request have return error: ' . $response['error'], 

    и замените его следующим, по крайней мере:

     !is_null($response['error']) => 'Request have returned error: ' . var_export($response['error'], true), 

    Теперь ваш код будет использовать любимую функцию var_export и если вы допустите ошибку, вы увидите в своем журнале ошибок что-то вроде:

     Request have returned error: array ( 'message' => 'Invalid params', 'code' => -32602, ) 

Я посвящаю этот тщательный ответ всем тем, кто помогал мне бесконечно здесь, на StackOverflow, просто отдавая свои ответы на чужие вопросы, иногда лет назад. Спасибо! Надеюсь, мой ответ сэкономит время, усилия и настроение. 🙂