在 webhook 端点中执行 Javascript


Executing Javascript in a webhook endpoint

这是我第一次尝试创建 webhook 端点,我遇到了一些问题。我正在将网络钩子从JotForm发送到服务器上的php文件。php 执行完美,但我文件中也有一些引用外部脚本并运行函数的脚本。

最终目标是使用Marketo的API将提交数据从jotform发送到我们的Marketo CRM。但是,终结点中的脚本似乎未执行。如果我设置它,那么同样的脚本就可以完美地工作,以便用户实际点击带有此脚本的页面,但是如果我尝试通过幕后的 webhook 执行它,它就不起作用。知道我错过了什么吗?以下是完整的代码:

<?php
//Strips all slashes in an array
function stripslashes_deep($value){
    $value = is_array($value) ?
                array_map('stripslashes_deep', $value) :
                stripslashes($value);
    return $value;
}
$result = stripslashes_deep($_REQUEST['rawRequest']);
//Convert json to php variable
$obj = json_decode($result, true);
//Initialize input variables
$theName = $obj['q1_name'];
$theEmail = $obj['q3_email'];
?>
<!----------------Marketo Munchkin API------------------------------>
<script src="http://munchkin.marketo.net/munchkin.js" type="text/javascript"></script>
<script>
  mktoMunchkin("OUR_MARKETO_ID");
  mktoMunchkinFunction(
   'associateLead',
   {
      Email: <?php echo "decodeURIComponent('"" . rawurlencode($theEmail) . "'")" ?>,
      FirstName: <?php echo "decodeURIComponent('"" . rawurlencode($theName) . "'")" ?>
   },
   '<?php echo hash('sha1', 'our-secret-key' . $theEmail); ?>'
);
</script>
<!---------------------------------------------------------------->

代码中的"OUR_MARKETO_ID"和"我们的密钥"包含我们的凭据。

我应该有其他方法执行 JS 吗?

如果我设置它,那么同样的脚本就可以完美地工作,以便用户实际点击带有此脚本的页面,但是如果我尝试通过幕后的 webhook 执行它,它不起作用。

这似乎表明,任何调用你的webhook的东西都没有评估javascript。JotForm可能会使用简单的HTTP客户端甚至低级Curl命令来调用您的Webhook,而不是执行javascript的真实浏览器。

我认为你需要放弃javascript并使用PHP。在服务器端执行所有这些操作是确保它运行的唯一方法,无论哪种客户端调用您的 webhook。

看起来Marketo提供了一个可以在PHP中使用的SOAP api。也许synchLead方法正是您需要的:

http://developers.marketo.com/documentation/soap/synclead/