道歉,因为我可能不知道salesforce API的术语。我刚刚开始编程连接器以与salesforce进行交互,我被卡住了。
我有一个要求,每次在Leads部分添加新条目时,我都必须检索几个字段(Firstname和Product Code)并将其传递给使用PHP的其他软件。 / p>
<?php
require "conf/config_cleverbridge_connector.inc.php";
require "include/lc_connector.inc.php";
// Start of Main program
// Read basic parameters
if ($LC_Username === "")
{
$LC_Username = readParam("USER");
}
if ($LC_Password === "")
{
$LC_Password = readParam("PASSWORD");
}
$orderID = "";
$customerID = substr(readParam("PURCHASE_ID"), 0, 10);
$comment = readParam("EMAIL")."-".readParam("PURCHASE_ID");
// Create product array
$products = array();
$itemID = readParam("INTERNAL_PRODUCT_ID");
$quantity = 1;
if (!ONCE_PER_PURCHASED_QUANTITY)
{
$quantity = readParam("QUANTITY");
}
// Add product to the product array
$products[] = array (
"itemIdentification" => $itemID,
"quantity" => $quantity,
);
// Create the order
$order = array(
"orderIdentification" => $orderID,
"customerIdentification" => $customerID,
"comment" => $comment,
"product" => $products,
);
// Calling webservice
$ticket = doOrder($LC_Username, $LC_Password, $order);
if ($ticket)
{
Header("HTTP/1.1 200 Ok");
Header("Content-Type: text/plain");
print TICKET_URL.$result->order->ticketIdentification;
exit;
}
else
{
$error = "No result from WSConnector_doOrder";
trigger_error($error, E_USER_WARNING);
printError(500, "Internal Error.");
exit;
}
// End of Main program
?>
现在这是我得到并且必须使用的代码。它托管在不同的远程服务器上。 我对salesforce非常新,我不确定如何通过远程站点触发调用这个php文件。
基本思路是: 1.创建了Lead的新条目。 2.立即将2个字段(custID和prodID)发送到我上面粘贴的PHP文件(某些变量不同) 3.执行此处理并将2个字段发送回salesforce。
感谢任何帮助或指导。即使是阅读的链接也没关系,因为我完全无能为力。
PS:我有另一个例子,它使用JSON消息,如果这可能会有所不同。 感谢
答案 0 :(得分:0)
我将重新发布我评论中的链接:)
如果您的PHP端点在开放Web上可见(不是某个Intranet的一部分或只是您自己的localhost),那么最简单的事情就是从Salesforce发送出站消息。不需要编码,只需要在PHP端解析一些XML文档。另外,如果主机无法访问,它会自动尝试重新发送消息......
如果无法从SF服务器访问您的应用程序,那么我认为您的PHP应用程序必须是“演员”。每隔X分钟查询SF以获得新潜在客户或订阅Streaming API ...这意味着您必须在您的PHP应用程序上将凭据存储到SF并记住要么定期更改密码要么设置在“集成用户”上s配置文件“密码永不过期”复选框。
因此,您收到通知,生成门票,时间将其发回。您是否想要假装Lead的更新是由创建它的人完成的,或者您是否希望看到“上次修改者:Integration User”?出站邮件可以包含会话ID,您可以将其用作发起操作的人员(创建潜在客户并解除工作流程) - 至少在他们注销或会话超时之前。
对于回复消息,您可以使用SOAP或REST salesforce apis - 阅读文档以了解如何发送更新命令(如果您想明确它是由与此PHP应用程序关联的特殊用户完成的 - 如何登录API)。我认为用户的个人资料必须勾选“API已启用”,然后才能重新使用某个人的会话,所以也许最好有一个专门用于集成的帐户...
如果它是出站消息,请记住的另一件事是忽略从沙箱发送的消息,因此如果某人创建测试环境,您将不会调用您的“生产”数据库数据库。您还可以记住每次制作沙箱时都要修改出站邮件和远程站点设置,这样您就可以“与prod交谈,测试与测试交谈”。我知道你可以在OM中包含用户的会话ID - 所以也许你也可以添加组织的id(对于生产它将保持不变,每个新的沙箱都会有新的id)。
这种方法的问题在于它可能无法扩展。如果在一个批次中插入1000个潜在客户(例如使用数据加载器) - 您将收到包含1000个出站邮件的垃圾邮件。您的服务器必须能够处理此类负载......但这也意味着您正在使用1个API请求来发回每个更新。您可以在设置中检查API请求的限制 - &gt;公司信息。开发人员版本的限制非常低,沙箱更好,生产效果最好(这也取决于您购买了多少用户许可证)。这就是为什么我问过一些批处理的原因。
更多编码但更可靠的是每隔X分钟要求SF进行更改(Streaming API?普通查询?检查“web hook”答案)并一次性发送所有这些记录的更新。 SELECT Id, Name FROM Lead WHERE Ticket__c = null
(注意AND LastModifiedDate >= :lastTimeIChecked
)没有任何内容......