gpt4 book ai didi

php - Twilio 传真 - 如何在 PHP 中管理 Wordpress 中的状态响应?

转载 作者:行者123 更新时间:2023-12-02 00:48:37 24 4
gpt4 key购买 nike

我想通过 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com