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

Getresponse API 2 (Adding Custom fields and contacts using PHP)

我是编码和 Web 开发的新手,但我希望我从未做过这样的事!然而,据说我的进步比预期的要远。我现在在尝试将自定义字段添加到添加联系人功能时遇到问题。我试图获取代码以在用户点击我的感谢页面时添加隐藏的表单输入字段。我不想为我的主页使用 Getresponses 自己的表单生成器,所以最好使用 API。在添加联系人时,我的代码 运行 非常完美,但是当我添加 set_contact_customs 时,代码不执行并失败并出现以下错误:(请求有 return 错误:数组)所以我理解它与 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. API 2 并不真正存在:在 GetResponse they say 版本“1.5.0 - 这是我们 [=105= 的最后一个 JSON/RPC 版本]”,特别是如果你在 10 个月前讲话。现在他们正准备对 v3 进行 beta 测试。所以我假设你说的是 1.5 并回答它(我不熟悉 v3,也许它有所不同)。

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

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

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

更新:

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

  1. 不需要add_contact再更新,可以一次性完成,在add_contact调用中添加'customs'参数(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. 为了使该错误消息更具描述性,而不仅仅是 '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,
    )
    

我将这个详尽的答案献给所有那些在 Whosebug 上无休止地帮助我的人,他们有时只是在几年前回答别人的问题。谢谢!希望我的回答也能节省一些人的时间、精力和心情。 :)