- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过 Twilio 仅使用 PHP(如果可能,不使用 JavaScript 或 cron)发送和管理传真来 self 的 linux+Apache+Wordpress 站点。 (开发是在我的本地主机上使用 ngrok 在 Wordpress 网站上进行的。)
我已经能够设置一个 Wordpress 页面 ( template ) 来使用 Twilio's fax API 发送传真.但是,在发送传真后,Twilio 会回复 JSON in a POST response。 (我认为),并期待我的网站以某种方式做出回应。我有一个回调 URL,但这似乎是一个异步调用,我不知道如何通过 Wordpress 处理它。 (为了安全和方便,我想留在 Wordpress 站点内。)
我没有管理服务器之间此类通信的经验;我一直在阅读 Twilio 文档,但我认为我在某个地方犯了一个根本性的错误...我了解了什么需要完成的要点,但不是如何作品。
如何在 Wordpress 中使用 PHP 管理 Twilio 的异步调用?
最佳答案
Twilio 可以设置为使用 REST API 标准。 (Wordpress 有 setting up REST routes and endpoints 的教程。)
使用 register_rest_route
在 Wordpress 上创建自定义 Twilio 端点。这可以设置为 POST 或 GET,但它必须匹配 your Twilio fax number 设置。
例如,将以下内容放入您的主题的 functions.php
文件中(如果您还没有这样做,您应该先输入 create a child theme):
function process_twilio_fax_response( $request ) {
$params = $request->get_params();
// $params should have the data Twilio POSTed as JSON to the API.
// For example, $params['account_sid'] should have the account_sid.
}
// This code registers the API endpoint and tells wordpress to call process_twilio_fax_response
// when data is POSTed to /wp-json/twilio/callback
add_action( 'rest_api_init', function () {
register_rest_route( 'twilio', '/callback', array(
// WP_REST_Server:READABLE = GET only
// WP_REST_Server:CREATABLE = POST only
// WP_REST_Server:EDITABLE = POST, PUT, PATCH
// WP_REST_Server:DELETABLE = DELETE only
// WP_REST_Server:ALLMETHODS = GET, POST, PUT, PATCH, DELETE
'methods' => WP_REST_Server:CREATABLE,
'callback' => 'process_twilio_fax_response',
) );
} );
这将在/wp-json/twilio/callback(例如 https://www.example.com/wp-json/twilio/callback
)创建一个端点,可以在 your Twilio fax number 上配置作为 “传真进来” URL(或“传真状态更改”或“主处理程序失败”)。
当 Twilio 向端点发出 POST 请求时,将使用作为参数传递的请求对象调用回调函数(在本例中为 process_twilio_fax_response
)。然后,您可以通过调用参数上的 get_params()
方法(在本例中为 $request->get_params()
)将 JSON 数据作为关联数组获取。
请注意,此示例没有身份验证、卫生或验证,所有这些对于任何面向公众的 REST 路由都是必需的。
如果您在 localhost
上调试,回调 URL 将为 http://localhost/wp-json/twilio/callback
。 Twilio 将无法 POST 到 localhost
,因为它只能在本地访问,但您可以使用 ngrok 在 linux 上通过随机临时 URL 设置网络隧道。在 your Twilio fax number 设置中,将对 localhost
域的任何引用更改为 ngrok 域,保持所有其他 URL 资源、查询等相同。例如:
https://localhost/SomeWordpressDomainName/wp-json/twilio/callback
成为
https://randomDomainNameFromNGROK.ngrok.io/SomeWordpressDomainName/wp-json/twilio/callback
关于php - Twilio 传真 - 如何在 PHP 中管理 Wordpress 中的状态响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59483779/
我是一名优秀的程序员,十分优秀!