我所发布的API所期望的数据需要以一种方式结构化,即它被包装在根对象和行数组中。我需要在发布之前重组提要提供的数据。
我需要将请求格式化为如下格式
{
"root": {
"row": [
{
"Ref_Id": "test123",
"First_Name": "Test",
"Last_Name": "Post",
"Mobile": "1234567890",
"Zip_Code": "12345",
"Notes": "This is a test post"
}
]
}
}
但是在发布之后,这是正在发送的内容
[body] => {"Ref_Id":"test123","First_Name":"Test","Last_Name":"Post","Mobile":"1234567890","Zip_Code":"12345","Notes":"This is a test post"}
我尝试钩入过滤器gform_webhooks_request_data
add_filter( 'gform_webhooks_request_data_11', 'modify_data', 10, 4 );
function modify_data( $request_data, $feed, $entry, $form ){
$wrapper_open = '{"root":{"row":[';
$wrapper_close = ']}}';
return $wrapper_open . $request_data . $wrapper_close;
}
但这不起作用
[body] => "{"root":{"row":[Array]}}"
我已经被这个问题困扰了好几个月了,现在我找到了解决办法。
Gravity Plus制作了这个优秀的插件,它允许出站webhook以原始格式合并标记,这意味着你可以按照你需要的任何方式配置模式。
这对于在Gravity Forms之间发布数据非常有用,而API和Webhooks插件的限制实际上不允许你这样做。
这是一个插件的链接https://gravityplus.pro/gravity-forms-post-to-3rd-party/plugin-support/
在本例中,您只需激活附加组件,将其从JSON转为Raw模式,然后输入:
{
"root": {
"row": [
{
"Ref_Id": "test123",
"First_Name": "Test",
"Last_Name": "Post",
"Mobile": "1234567890",
"Zip_Code": "12345",
"Notes": "This is a test post"
}
]
}
}
只需将值替换为merge标签。