[ 'Authorization' => 'Basic ' . base64_encode( $sid . ':' . $token ), 'Accept' => 'application/json', ], 'timeout' => 20, ]); if ( is_wp_error( $response ) ) { return new WP_Error( 'twilio_error', $response->get_error_message() ); } $body = json_decode( wp_remote_retrieve_body( $response ), true ); if ( empty( $body['contents'] ) ) { return []; } // Devuelves solo lo que te interese para el selector del plugin $templates = []; foreach ( $body['contents'] as $content ) { $templates[] = [ 'sid' => $content['sid'], // HXXXXXXXXXXXXXXXXX 'name' => $content['friendly_name'], 'language' => $content['language'], 'date_created' => $content['date_created'], // Aquí podrías luego hacer otra llamada a approval_fetch si quieres ver estado en WhatsApp 'approval_url' => $content['links']['approval_fetch'] ?? null, ]; } return $templates; } function alexr_twilio_get_template_raw( $content_sid ) { $sid = get_option('alexr_twilio_sid'); $token = get_option('alexr_twilio_token'); $url = 'https://content.twilio.com/v1/Content/' . urlencode( $content_sid ); $response = wp_remote_get( $url, [ 'headers' => [ 'Authorization' => 'Basic ' . base64_encode( $sid . ':' . $token ), 'Accept' => 'application/json', ], 'timeout' => 20, ]); if ( is_wp_error( $response ) ) { return $response; // WP_Error } $body = json_decode( wp_remote_retrieve_body( $response ), true ); if ( empty( $body['types']['twilio/text']['body'] ) ) { return new WP_Error( 'no_body', 'No se ha encontrado el body del template.' ); } return [ 'sid' => $body['sid'], 'name' => $body['friendly_name'] ?? '', 'language' => $body['language'] ?? '', 'raw_body' => $body['types']['twilio/text']['body'], ]; } function alexr_send_whatsapp_template( $to_phone, $content_sid, $variables = [] ) { $sid = get_option('alexr_twilio_sid'); $token = get_option('alexr_twilio_token'); // Puede ser un número WhatsApp o un Messaging Service SID $from = get_option('alexr_twilio_from'); // ej: 'whatsapp:+1415XXXXXXX' o 'MGXXXXXXXXXXXX' $url = 'https://api.twilio.com/2010-04-01/Accounts/' . $sid . '/Messages.json'; $body = [ 'To' => 'whatsapp:' . $to_phone, // ya en formato +34.... 'From' => $from, 'ContentSid' => $content_sid, // HX421d15c... ]; if ( ! empty( $variables ) ) { // Las keys deben corresponder con las variables del template: "1", "2", etc. $body['ContentVariables'] = wp_json_encode( $variables ); } $response = wp_remote_post( $url, [ 'body' => $body, 'headers' => [ 'Authorization' => 'Basic ' . base64_encode( $sid . ':' . $token ), ], 'timeout' => 20, ]); if ( is_wp_error( $response ) ) { return new WP_Error( 'twilio_error', $response->get_error_message() ); } $data = json_decode( wp_remote_retrieve_body( $response ), true ); return $data; // aquí tienes sid del mensaje, status, etc. }