[英]Twilio fax - How to manage status responses in Wordpress in PHP?
我想從我的 linux+Apache+Wordpress 站點通過Twilio僅使用 PHP(沒有 JavaScript 或 cron,如果可能)發送和管理傳真。 (使用ngrok通過我的本地主機在 Wordpress 站點上進行開發。)
我已經能夠設置一個 Wordpress 頁面( 模板)來使用Twilio 的傳真 API發送傳真。 但是,在發送傳真后,Twilio 會在 POST 響應中使用JSON 進行回復(我認為),並希望我的網站以某種方式做出響應。 我有一個回調 URL,但這似乎是一個異步調用,我不知道如何通過 Wordpress 處理。 (如果可能的話,為了安全和方便,我想留在 Wordpress 網站內。)
我沒有管理服務器之間這種類型的通信的經驗; 我一直在閱讀 Twilio 文檔,但我認為我在某個地方犯了一個根本性的錯誤......我明白需要做什么的要點,但不知道它是如何工作的。
如何在 Wordpress 中使用 PHP 管理 Twilio 的異步調用?
可以將 Twilio 設置為使用 REST API 標准。 (Wordpress 有一個設置 REST 路由和端點的教程。)
使用register_rest_route
在 Wordpress 上創建自定義 Twilio 端點。 這可以設置為 POST 或 GET,但它必須與您的 Twilio 傳真號碼設置相匹配。
例如,將以下內容放入主題的functions.php
文件中(如果您還沒有創建子主題,則應在此之前創建一個子主題):
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
)創建一個端點,可以在您的 Twilio 傳真號碼上將其配置為“傳真進來" 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 設置網絡隧道。 在您的 Twilio 傳真號碼設置中,使用 ngrok 域更改對localhost
域的任何引用,保持所有其他 URL 資源、查詢等相同。 例如:
https://localhost/SomeWordpressDomainName/wp-json/twilio/callback
變成
https://randomDomainNameFromNGROK.ngrok.io/SomeWordpressDomainName/wp-json/twilio/callback
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.