Чтобы устранить эту ошибку, я изменил use Twilio\TwiML;
на use Twilio\Twiml;
, хотя я читал, что Twiml
- это развеяно , но я не мог заставить его работать по-другому.
После этого я все еще получаю ошибку Invalid Content-Type
и вижу в отладчике, что тип контента: Content-Type application/json; charset=UTF-8
.Поэтому я добавил следующую строку в свою функцию: header('content-type: text/xml');
.
Теперь я получаю ошибку Document parse failure
, и мое тело ответа выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say voice="alice">hello world!</Say>
</Response>
null
Чтобы решить эту проблему,Я добавил функцию die()
в конец своей функции.И вот наконец-то все работает.Полный рабочий код:
<?php
require_once( plugin_dir_path( __FILE__ ) . 'twilio-php-master/Twilio/autoload.php');
use Twilio\Twiml;
defined( 'ABSPATH' ) or die( 'Nope!' );
function respond_incoming( $data ) {
$response = new TwiML;
$response->say("hello world!", array('voice' => 'alice'));
header('content-type: text/xml');
echo $response;
die();
}
add_action( 'rest_api_init', function () {
register_rest_route( 'callcenter', '/incoming/', array(
'methods' => array('POST'),
'callback' => 'respond_incoming',
) );
} );