【问题标题】:Getresponse API 2 (Adding Custom fields and contacts using PHP)Getresponse API 2(使用 PHP 添加自定义字段和联系人)
【发布时间】:2015-07-17 23:15:34
【问题描述】:

我是编码和 Web 开发的新手,我希望自己从未做过 API 深入研究!然而,据说我的进步超出了预期。我现在在尝试将自定义字段添加到添加联系人功能时遇到问题。当用户点击我的感谢页面时,我试图获取代码以添加隐藏的表单输入字段。我不想在我的主页上使用 Getresponses 自己的表单构建器,所以最好使用 API。在添加联系人时,我的代码运行完美,但是当我添加 set_contact_customs 时,代码不会执行并且失败并出现以下错误:(请求有返回错误:数组)所以我理解它与 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();
}

?>

【问题讨论】:

    标签: php api custom-fields getresponse


    【解决方案1】:
    1. API 2 并不真正存在:在 GetResponse they say 版本“1.5.0 - 这是我们 API 的最后一个 JSON/RPC 版本”中,尤其是如果您在 10 个月前发言。现在他们正准备对 v3 进行 beta 测试。所以我假设你在谈论 1.5 并回答它(我对 v3 不熟悉,也许它有所不同)。

    2. 你必须send contact id with set_contact_customs,但你没有。

    3. 当它说“请求错误:数组”时,它与您的数组无关(即使问题出在您的数组中,因为您没有发送联系人 ID),他们正在发送一个数组作为错误消息的响应。

    4. 我很想告诉你,从哪里获取联系人 ID 以便发送它,但我现在自己在寻找它。 :)

    更新:

    好的,我从互联网上的各个部分组合起来,现在这是工作格式。

    1. 您不需要 add_contact 然后更新它,您可以一次性完成,将“customs”参数添加到 add_contact 调用(GR 说,我们不应该期望立即添加联系人,因此如果您立即调用该函数,您甚至可能无法获得更新的对象)。

      add_contact 的字段描述为here

    2. “customs”参数的外观应该有所不同。而不是:

      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. 如果您仍希望更新现有联系人,请按照以下方法在更新调用中发送联系人 ID:

      $result = $client->set_contact_customs(
         $api_key, array(
            'contact' => $contact_id,
            'customs' => $custom_fields_array
          )
      );
      
    4. 要首先找到联系人 ID,您应该致电 get_contacts。既然有人说(我没有测试过),在不同的活动中,具有相同电子邮件地址的联系人具有不同的联系人 ID,您应该通过活动和带有它的电子邮件。

      当您can see 时,可以在“campaigns”参数中发送活动(然后应该使用您为 add_contact 获得的活动 ID)或在“get_campaigns”(然后可以使用活动名称甚至前缀) )。

      这是带有广告系列 ID 的调用,用于您的代码:

      $result = $client->get_contacts(
          $api_key, array(
             'campaigns' => array( 'My-Camp-ID' ),
             'email' => array( 'EQUALS' => $emailaddress )
          )
      );
      
    5. 要从 get_contacts 中检索联系人 ID,请执行与检索活动 ID 相同的建议:

      $contact_id = array_pop( array_keys( $result ) );
      if ( empty( $contact_id ) ) {
          //still not ok
      }
      else {
          //you can call set_contact_customs
      }
      
    6. 为了使该错误消息更具描述性,而不仅仅是“请求有返回错误:数组”,请打开您的 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 上无休止地帮助我的人,他们只是在几年前回答了别人的问题。谢谢!希望我的回答也能节省一些人的时间、精力和心情。 :)

    【讨论】:

    • 由于这是一个老问题,我现在会接受这个作为最佳答案,原因有两个:首先,你已经付出了巨大的努力来为 StackOverflow 做出贡献,其次你已经走出了你的在使用正确格式的同时列出详细示例的方法。干得好。
    猜你喜欢
    • 2018-05-17
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2017-10-19
    相关资源
    最近更新 更多