这是我第一次尝试创建webhook端点,我遇到了一些问题。我正在从JotForm向我的服务器上的php文件发送一个webhook。 php正在执行完美,但我在文件中也有一些引用外部脚本并运行函数的脚本。
最终目标是使用Marketo的Marketo将提交数据从jotform发送到我们的API 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”和“our-secret-key”包含我们的凭据。
我应该采用另一种方式执行JS吗?
答案 0 :(得分:2)
如果我设置它以便用户实际点击一个包含此脚本的页面,这个相同的脚本可以正常工作,但如果我尝试通过幕后的webhook执行它,它就不起作用。
这似乎表明无论是什么调用你的webhook都没有评估javascript。 JotForm可能使用简单的HTTP客户端甚至是低级Curl命令调用您的webhook,而不是执行javascript的真实浏览器。
我认为你需要抛弃javascript并使用PHP。无论客户端调用您的webhook,执行所有服务器端操作都是确保其运行的唯一方法。
看起来Marketo提供了一个可以在PHP中使用的SOAP api。也许synchLead
方法就是您所需要的: