簡體   English   中英

Twilio fax - 如何在 PHP 中管理 Wordpress 中的狀態響應?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM