努力寻找这个问题的答案。
我有一个WordPress网站,并编写了一个简单的webhook,可以从Twilio调用并返回一条消息。
在Twilio中,我正在使用Studio Flow来调用Web钩子。一切都运行良好,直到从触发器读取回调数据为止。
我的网络钩子是这样的:
function register_receive_message_route() {
register_rest_route('receivedx/v1', 'recvsms', array(
'methods' => WP_REST_SERVER::READABLE,
'callback' => 'trigger_receive_sms',
));
}
function trigger_receive_sms($from) {
header ('Content-Type:application/json');
return '{"Message":"Thank you for accepting this position.","From":"From MCC","Body":"Hello"}';
}
当我点击我的网络钩子网址时,它会按预期返回 JSON 字符串,如下所示:
"{"Message":"Thank you for accepting this position.","From":"From MCC","Body":"Hello"}"
但是当它到达Twilio时,它已被损坏,如下所示:
"body": ""{\"Message\":\"Thank you for accepting this position.\",\"From\":\"From MCC\",\"Body\":\"Hello\"}""
然后,Twilio 给我一个错误,告诉我"正文:发送消息失败:消息正文是必需的。
我的小部件没有什么特别之处,经过许多天的与Twilio团队的聊天,他们向我保证我的流程设置正确。
我尝试将 \\ 替换为 \,但是当它到达 Twilio 时它仍然显示相同。
我在 3 个不同的 WordPress 安装上尝试了相同的网络钩子,结果都相同。我开始意识到 Twilio 在返回时正在对它做一些事情。
以前有没有人见过WordPress的这种行为?
谢谢
通过在发送到 Twilio 之前不将数据编码为 JSON 来解决。
只需为要发送的内容创建一个数组并返回该数组,Twilio Studio 就会在处理之前对其进行编码。
例如:
$message['消息'] = "这是一条消息"; $message['更多数据'] = "这是更多数据"; 返回$message
然后,您可以使用 {{widget.<>.parsed.message}} 等从小部件中检索结果...
希望这对某人有所帮助。