Getresponse API 2(使用PHP添加自定义字段和联系人)

时间:2015-07-17 23:15:35

标签: php api custom-fields getresponse

我是编码和网络开发的新手,并且使用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();
}

?>

1 个答案:

答案 0 :(得分:4)

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

  2. 您必须send contact id with set_contact_customs,而您却没有。

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

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

  5. 更新:

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

    1. 你不需要add_contact然后更新它,你可以一次性完成,将'customs'参数添加到add_contact调用(GR说,我们不应该期望联系到立即添加,如果你立即调用该功能,你可能甚至不会让谁更新。

      add_contact的字段描述为here

    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. 如果您仍希望更新现有联系人,请按以下步骤通过更新电话发送联系人ID:

      $result = $client->set_contact_customs(
         $api_key, array(
            'contact' => $contact_id,
            'customs' => $custom_fields_array
          )
      );
      
    4. 要首先找到联系人ID,您应该致电get_contacts。并且由于已经说过(我还没有测试过),在同一个电子邮件地址的不同广告系列联系人中有不同的联系人ID,您应该同时传递广告系列和电子邮件。

      当您can see时,广告系列可以通过“广告系列”参数发送(然后是广告系列ID,您应该使用add_contact,或者使用“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,
      )
      
    7. 我将这个彻底的答案奉献给所有那些在StackOverflow上无休止地帮助我的人,只是在几年前给别人的问题答案。谢谢!希望我的回答也会节省一些时间,精力和心情。 :)