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

2023-12-03

我对编码和 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();
}

?>

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

  2. 你必须使用 set_contact_customs 发送联系人 ID,而你没有。

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

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

UPDATE:

好的,我从互联网上的各个片段中将其组合起来,现在这是工作格式。

  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,您应该致电获取联系人。而且既然有人说过(我没有测试过),在不同的营销活动中,具有相同电子邮件地址的联系人具有不同的联系人 ID,因此您应该传递营销活动及其电子邮件。

    As you 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 上不断帮助我的人,他们只是在几年前就回答了别人的问题。谢谢你!希望我的回答也能节省别人的时间、精力和心情。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Getresponse API 2(使用 PHP 添加自定义字段和联系人) 的相关文章

  • 将多个文件上传到服务器并

    我的第一篇文章所以要温柔 我尝试过搜索此内容 并且有很多类似的帖子 但我似乎找不到任何与我的问题完全相似的内容 而且我已经在这个问题上花了几个小时了 我正在用 PHP 5 3 和 MySQL 构建一个系统 部分功能是要求用户根据之前的一些选
  • 如何将 pChart 创建的图像保存到文件中?

    我正在使用以下内容 chartImage gt autoOutput statistics image png 问题是这段代码将图像输出到浏览器 如果它将图像保存到具有我指定的目录和名称的文件中 我会更喜欢它 我该怎么做呢 我正在查看 pC
  • 我们如何在 python 中使用 ms office communicator 客户端公开的 API,这可能吗?

    我想使用 ms office communicator 客户端 api 并且我想在 python 中使用这些 API 可以吗 gt gt gt import win32com client gt gt gt msg win32com cli
  • 清理货币字符串的快速方法[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 取消货币格式 https stackoverflow com questions 5139793 php unformat money 如何去掉所有不是数字或点的东西 替换 with 使用轻正
  • 在 Facebook 图表发布功能中包含换行符和项目符号点

    我试图允许我的用户将项目符号列表从我的网络应用程序发布到他们的 Facebook feed 该列表以表格形式创建 带有项目符号和换行符 然后可以对其进行编辑和提交 我的代码在发送常规文本 将表单内容发布到 FB 提要 时工作正常 但当消息包
  • 从 PHP PDO 执行时 MySQL 提交是否同步?

    使用 MySQL 的 PHP PDO 接口 假设我有以下代码来结束事务 假设它已正确开始 pdo gt query commit 当函数返回时 对日志的写入是否已刷新 也就是说 事务是否已提交 或者我只是提出了提交请求 假设我没有设置任何延
  • PDO 限制和偏移量[重复]

    这个问题在这里已经有答案了 可能的重复 LIMIT 中的 PHP PDO 绑定值 https stackoverflow com questions 2269840 php pdo bindvalue in limit 我在prepare语
  • “imagecolorat”和透明度

    如何才能获得透明度上一个像素的值image imagecolorat 仅选取图像中指定位置的像素颜色索引 通过该索引 我可以获取 RGB 值 但不能获取透明值 希望您理解 并提前感谢您 解决方案可能如下 colorIndex imageco
  • 在 Laravel 上将百万行数据从一个数据库复制到另一个数据库

    使用 Laravel Eloquent 我从旧 Mysql 数据库的一张表中复制 700 万行数据 并将这些行放在新 Mysql 数据库的不同表中 问题是 执行此操作花费了几乎一天的时间 并且我需要对近 80M 行重新执行此操作 我一次使用
  • 如何在特定视图上禁用 yii-debug-toolbar?

    我怎样才能禁用yii debug toolbar在特定视图上 特别是在部分渲染视图上 这可能吗 p s Yii debug toolbar不幸的是 它不作为下面的标签存在 将其放入您的布局或视图文件中 if class exists yii
  • PHP - 解析具有固定列宽的文本文件

    我是 PHP 和 Laravel 的新手 我需要打开文件并解析内容以将它们传递到数据库 文本文件具有固定的列宽 它没有分隔符或标题 我认为使用子字符串并将每个子字符串分配给变量将是正确的方法 但我仍在学习该语言的过程中 我不知道如何实现这一
  • 如何在自定义短代码中获取 WooCommerce 产品对象以避免错误

    我有一个函数 我试图使用产品 id 获取当前产品的产品简短描述 但我不断收到未捕获错误 调用成员函数 get short description on bool in 我有以下简码函数 我试图使用产品 ID 获取当前 WooCommerce
  • 在codeigniter中处理存储过程输出参数

    我在 mysql 中有一个带有输出参数的存储过程 我需要将结果发送到使用 codeigniter 的 php 寄存器模式 public function registerUser data sql call register new use
  • 限制检索的行数 MySql、Laravel

    问题 我的问题是使用 Mysql 或 Laravel 通过查询返回的行数是否有限制 首先 我使用 Laravel 5 2 我试图从日志表中检索数据 该表最近已超过 10k 行 现在从那时起 或大约那个时候 用于检索数据的常用 Laravel
  • 如何在没有 SSH 的情况下安装/使用 Composer

    伙计们 我有一个共享主机 我无法使用 SSH 或使用 php 调用 shell shell exec 出于安全原因 我无法因资金问题升级我的服务器 但我需要安装Composer 并使用 SDK 来完成我的项目 有什么方法可以安装 使用com
  • PHP 从 MSSQL 存储过程获取返回值

    我无法从 SQL Server MSSQL 2012 SP 获取 OUTPUT 参数以返回 PHP 我的存储过程是 CREATE PROCEDURE spGetNextSeqID ID AS INT OUTPUT AS BEGIN BEGI
  • 使用Zend实现文件上传进度

    您好 我正在尝试使用 Zend 实现上传进度 但是我还没有找到任何详细的教程 指针会很有用 Thanks 我不记得曾经看过完整详细的教程来解释如何使用 Zend Framework 获取上传进度条 但这里有一些提示 如果您已经了解有关 PH
  • 从浏览器中删除cookie?

    有什么方法可以指示网络浏览器完全delete一个人的cookie是用PHP设置的吗 我不想expiry或者等待浏览器closed 对于删除 我的意思是实际上不再将其列在 cookie 列表中 尝试这样删除所有 cookie foreach
  • PHP 相对于 ASP.NET 有什么优势? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何从视图中使用模型函数? - 拉拉维尔 5.4

    我在模型类中创建了一个函数 它是 public function scopetest query return query gt pluck name 我的控制器代码是 public function index books Book al

随机推荐

  • this:不能在静态上下文中使用 this

    你能帮我用下面的代码吗 错误是 无法在静态上下文中使用此 public class Sample2 param args public static void main String args Sample2 sam new Sample2
  • 将 boost numpy 与 Visual Studio 2019 和 python 3.8 结合使用

    我想将 Boost Numpy Boost 版本 1 72 与 Visual Studio 2017 和 Python 3 8 结合使用 在我的测试程序中 我收到链接错误 boost numpy38 vc141 mt gd x32 1 72
  • 如何通过代码打开窗口的系统菜单?

    我有一个 C WinForms 无边框窗口 我重写 WndProc 并处理 WM NCHITTEST 消息 对于这种形式的区域 我的命中测试函数返回 HTSYSMENU 双击该区域成功关闭窗体 但右键单击它不会显示窗口的系统菜单 在任务栏中
  • Core Data SUBQUERY 和 NSFetchedResultsController 的键路径错误

    如果这是重复的 我们深表歉意 20 分钟的搜索没有找到确切的情况或解决方案 我有一个包含三个类的核心数据堆栈XClass YClass and ZClass XClass与 具有一对多关系YClass YClass与 具有一对多关系ZCla
  • 为什么此 toDataURL 行是安全错误?

    如果将来自另一个站点的图像加载到页面 然后将其作为合成中的部分成分写入画布 请使用 context drawImage image 0 0 w h 似乎任何不安全的事情都已经在画布上发生了 那为什么会 window location can
  • 长按NavigationView只能作用于左侧部分,不能作用于所有NavigationLink?

    下面是一个NavigationView 视图弹出到Destination2当长按 NavigationLink 并Destination1正常点击时 但图中NavigationLink的右侧区域无法长按 有谁知道原因吗 谢谢 import
  • WIX:继续安装之前应关闭以下应用程序

    我的应用程序有托盘图标 当我卸载它时 我有一个窗口 其中建议关闭 my tray app exe 带有文本 在继续安装之前应关闭以下应用程序 我使用wix CloseApplication Element Util Extension 来关
  • 如何使用 javafx-maven-plugin 运行包含 jfoenix 的 Maven java fx 项目

    我试图创建编译我的应用程序并创建一个可执行文件 目前我认为最好使用的工具是 javafx maven plugin 我无法让它工作 所以我从根据此创建项目时生成的基本代码开始 https www youtube com watch v 4v
  • Google Gmail SMTP 设置不允许我使用 PHPMailer 发送电子邮件

    我在 Gmail 上创建了一个帐户 因为前一个帐户也给我带来了同样的问题 以便我的应用程序可以使用 google smtp 服务器发送电子邮件 我正在使用 PHPMailer 库并要求它显示任何日志错误 我总是收到类似的消息 它略有不同 有
  • Android 中的 RTSP 客户端

    可能有人问过同样的问题 但我没有找到任何适合我的解决方案 我正在尝试在 android 中播放 RTSP 流 服务器是 Darwin 流服务器 目前我尝试了VideoView和MediaPlayer 当我使用3G时 这两个都工作正常 但有时
  • 确定 PHP 调用函数的位置

    你们知道我如何从哪个文件中确定该函数内部调用的函数吗 我正在考虑使用 debug backtrace 但这看起来并不是一种优雅的方式 而且他们还在另一个问题中列举了其他原因here 那么还有什么其他选择呢 多谢 我前段时间从某个地方借用了这
  • 在 Angular2 路由中使用 Resolve

    在 Angular 1 中我的配置如下所示 routeProvider when news templateUrl newsView html controller newsController resolve message functi
  • Umbraco 7 更新 Umbraco 路线

    我正在尝试创建一个 Umbraco 7 MVC 应用程序 在此过程中 我希望能够创建在幕后管理数据的自定义控制器 通过我的研究 我发现使用 SurfaceController 是最成功的 但是 该路线将 umbraco surface 添加
  • 如何在 apache 服务器上运行 socket.io(仅限客户端)

    我想在我的 apache 服务器上运行 socket io 的客户端 我已将 socket io 目录上传到我的网络服务器 并尝试了主站点的简单客户端连接示例套接字 io但它不起作用 我不知道需要什么才能让它工作并连接我正在运行的服务器 我
  • 将参数传递给返回集合的 OData (GET) 方法

    我在用OData v3 如何将参数传递给OData控制器并返回一个集合 我正在尝试做的示例 EnableQuery AllowedQueryOptions AllowedQueryOptions All public IQueryable
  • Firestore Cloud Function 空集合

    我有一个问题困扰了我好几天 我正在尝试创建一个从 Firestore 数据库读取的 Firebase Cloud 函数 我的 Firestore 数据库如下所示 问题是我无法列出users像这样 db collection users ge
  • Azure DevOps管道:取消队列中的多个待处理作业

    在 Azure DevOps 管道中 如何取消作业池的所有待处理作业 我有很多工作在排队 但看不到在哪里可以取消我正在等待的所有工作 Azure Devops 尚不具备从 UI 部分批量取消所有待处理作业的功能 您可以编写脚本来调用rest
  • 我可以有一个空的 Java 类吗?

    我正在创建一个基于网格的游戏 我需要实现一组在网格内占据随机位置的障碍物 我创建了一个抽象类ALifeForm 它保存网格中每个项目的通用方法 显然 抽象类无法初始化 所以我要创建一个新类AObstacle 这将延长ALifeForm 唯一
  • 模板实例化检查类中存在的成员

    我有一组类 其中有一个或多个类型为memberA memberB memberC 的成员 并非所有班级都有所有成员 我想创建一个模板来设置成员 例如 template
  • Getresponse API 2(使用 PHP 添加自定义字段和联系人)

    我对编码和 Web 开发还很陌生 而深入研究 API 是我希望自己从未做过的事情 然而话虽这么说 我的进步比预期的要远 我现在在尝试将自定义字段添加到添加联系人功能时遇到问题 我试图获取代码以在用户点击我的感谢页面时添加隐藏的表单输入字段