Comprobación de comentarios

La llamada comment‑check es la llamada que harás más frecuentemente. Utiliza varios argumentos y características del contenido enviado y devuelve un pulgar hacia arriba o hacia abajo. El rendimiento puede disminuir drásticamente si eliges excluir puntos de datos. Cuanta más información envíes a Akismet sobre cada comentario, mayor será la precisión. Recomendamos pecar de exceso que de defecto.

Este método se llama con la siguiente URL:

https://rest.akismet.com/1.1/comment-check

Importante: todos los parámetros se deben enviar usando el método POST.

Parámetros

api_key (requerido)
Tu clave de API de Akismet. Puedes encontrarla en el escritorio de tu cuenta en https://akismet.com/account/

blog (requerido)
La página de inicio o URL principal de la instancia que realiza la solicitud. Para un blog o wiki, esto sería la página de inicio. Nota: debe ser una URI completa, incluyendo http://.

user_ip (requerido)
Dirección IP del remitente del comentario.

user_agent
Cadena de agente de usuario del navegador web que envía el comentario, generalmente la variable HTTP_USER_AGENT cgi. No debe confundirse con el agente de usuario de tu biblioteca Akismet.

referrer (atención a cómo está escrito)
El contenido del encabezado HTTP_REFERER debe enviarse aquí.

permalink
La URL permanente completa de la entrada a la que se envió el comentario.

comment_type
Una cadena que describe el tipo de contenido que se envía.

Ejemplos:

  • comment: un comentario de blog.
  • forum‑post: una publicación de foro de nivel superior.
  • reply: una respuesta a una publicación de foro de nivel superior.
  • blog‑post: una publicación de blog.
  • contact‑form: un formulario de contacto o envío de formulario de comentarios.
  • signup: una nueva cuenta de usuario.
  • message: un mensaje enviado entre solo unos pocos usuarios.

Puedes enviar un valor no listado anteriormente si ninguno de ellos describe con precisión tu contenido. Esto se explica con más detalle aquí.

comment_author
Nombre enviado con el comentario.

comment_author_email
Dirección de correo electrónico enviada con el comentario.

comment_author_url
URL enviada con el comentario. Solo envía una URL que haya sido introducida manualmente por el usuario, no una URL generada automáticamente como la URL del perfil del usuario en tu sitio.

comment_content
El contenido que se ha enviado.

comment_date_gmt
La fehca y hora UTC de la creación del comentario, en formato ISO 8601. Puede omitirse para solicitudes de comprobación de comentarios si el comentario se envía a la API en el momento de su creación.

comment_post_modified_gmt
La fecha y hora UTC de la publicación de la entrada, página o hilo en el que se publicó el comentario.

blog_lang
Indica el idioma o idiomas utilizados en el blog o sitio, en formato ISO 639‑1, separados por comas. Un sitio con artículos en inglés y francés podría usar «en, fr_ca».

blog_charset
La codificación de caracteres para los valores del formulario incluidos en los parámetros comment_*, como «UTF-8» o «ISO-8859-1».

user_role
El rol de usuario del usuario que envió el comentario. Este es un parámetro opcional. Si lo estableces en «administrator», Akismet siempre devolverá false.

is_test
Este es un parámetro opcional. Puedes usarlo para enviar consultas de prueba a Akismet.

recheck_reason
Si estás enviando contenido a Akismet para que se vuelva a comprobar, como una publicación que se ha editado o comentarios pendientes antiguos que te gustaría volver a verificar, incluye el parámetro recheck_reason con una cadena que describa por qué se está volviendo a verificar el contenido. Por ejemplo, recheck_reason=edit.

honeypot_field_name
Si utilizas un campo honeypot en tu implementación, incluye el nombre del campo en tu solicitud, así como el valor de ese campo. Por ejemplo, si tienes un campo honeypot así: <input type=»text» name=»hidden_honeypot_field» style=»display: none;» />, entonces debes incluir dos parámetros adicionales en tu solicitud: honeypot_field_name=hidden_honeypot_field y hidden_honeypot_field=[el valor del input].

comment_context
El parámetro comment_context proporciona contexto para el entorno en el que se publicó el comentario: una lista de etiquetas o categorías aplicadas a la publicación de blog principal o al sitio en el que se publicó el comentario.

Especifica comment_context usando una notación en estilo PHP del parámetro arraycomment_context[]=cooking&comment_context[]=recipes&comment_context[]=bbq Ten en cuenta que cualquier etiqueta o categoría debe tomarse de la publicación principal o del entorno; no deben ser proporcionadas por los autores de los comentarios.

Otras variables del entorno del servidor
En PHP, hay un conjunto de variables llamado $_SERVER que contiene información sobre el servidor web en sí, así como una key/value para cada encabezado HTTP enviado con la solicitud. Esta información es muy útil para Akismet. Cómo interactúa el contenido enviado con el servidor puede ser muy revelador, así que incluye la mayor cantidad posible de él.

Ejemplo en PHP

$data = array(
    'blog' => 'http://yourgroovydomain.com',
    'user_ip' => '127.0.0.1',
    'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6',
    'referrer' => 'http://www.google.com',
    'permalink' => 'http://yourgroovydomain.com/blog/post=1',
    'comment_type' => 'comment',
    'comment_author' => 'admin',
    'comment_author_email' => 'test@example.com',
    'comment_author_url' => 'http://www.example.com',
    'comment_content' => 'It means a lot that you would take the time to review our software.  Thanks again.'
);

akismet_comment_check( '123YourAPIKey', $data );

// Devuelve true (es spam) o false (no es spam).
function akismet_comment_check( $api_key, $data ) {
    $request = 'api_key=' . urlencode( $api_key ) .
        '&blog=' . urlencode( $data['blog'] ) .
        '&user_ip=' . urlencode( $data['user_ip'] ) .
        '&user_agent=' . urlencode( $data['user_agent'] ) .
        '&referrer=' . urlencode( $data['referrer'] ) .
        '&permalink=' . urlencode( $data['permalink'] ) .
        '&comment_type=' . urlencode( $data['comment_type'] ) .
        '&comment_author=' . urlencode( $data['comment_author'] ) .
        '&comment_author_email=' . urlencode( $data['comment_author_email'] ) .
        '&comment_author_url=' . urlencode( $data['comment_author_url'] ) .
        '&comment_content=' . urlencode( $data['comment_content'] );
 
    $host = $http_host = 'rest.akismet.com';
    $path = '/1.1/comment-check';
    $port = 443;
    $akismet_ua = "WordPress/4.4.1 | Akismet/3.1.7";
    $content_length = strlen( $request );
    $http_request  = "POST $path HTTP/1.0rn";
    $http_request .= "Host: $hostrn";
    $http_request .= "Content-Type: application/x-www-form-urlencodedrn";
    $http_request .= "Content-Length: {$content_length}rn";
    $http_request .= "User-Agent: {$akismet_ua}rn";
    $http_request .= "rn";
    $http_request .= $request;
 
    $response = '';
    
    if( false != ( $fs = @fsockopen( 'ssl://' . $http_host, $port, $errno, $errstr, 10 ) ) ) {

    	fwrite( $fs, $http_request );

    	while ( !feof( $fs ) ) {
    		$response .= fgets( $fs, 1160 ); // One TCP-IP packet
        }

    	fclose( $fs );

    	$response = explode( "rnrn", $response, 2 );
    }

    if ( 'true' == $response[1] ) {
        return true;
    } else {
    	return false;
    }
}

Esta llamada devuelve «true» si es spam o «false» si no lo es.

Ejemplo de respuesta de spam

La llamada devuelve «true» si el comentario es spam. Si tienes problemas para obtener una respuesta de spam, puedes enviar «akismet‑guaranteed‑spam» como autor o «akismet-guaranteed-spam@example.com» como correo electrónico del autor. Cualquiera de los valores siempre devolverá una respuesta «true».

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 20:17:08 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           Content-length: 4
    [1] => true
)

Una respuesta de spam también puede incluir el encabezado X-akismet-pro-tip, así:

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 20:17:08 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           X-akismet-pro-tip: discard
           Content-length: 4
    [1] => true
)

Si el encabezado X-akismet-pro-tip se establece en discard, entonces Akismet ha determinado que el comentario es spam evidente, y puedes descartarlo de forma segura sin guardarlo en ninguna cola de spam. Lee más sobre esta función en esta entrada del blog de Akismet.

Ejemplo de respuesta de no spam

La llamada devuelve «false» si el comentario no es spam. Si tienes problemas para obtener una respuesta de no spam, puedes establecer «user_role» en «administrator» y el parámetro «is_test» en «true», y así siempre devolverá una respuesta «false».

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 20:17:08 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           Content-length: 4
    [1] => false
)

Ejemplo de respuesta de error

Si la llamada no devuelve ni true ni false, el encabezado X-akismet-debug-help proporcionará algo de contexto sobre el error que haya ocurrido. Ten en cuenta que el encabezado X-akismet-debug-help no siempre aparecerá si una respuesta no devuelve false o true.

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 16:34:54 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           X-akismet-debug-help: We were unable to parse your blog URI
           Content-length: 7
    [1] => invalid
)

Prueba tus datos

Es importante probar Akismet con una cantidad significativa de datos reales en vivo para poder sacar conclusiones sobre su precisión. Akismet funciona comparando el contenido con la actividad de spam real que está ocurriendo en este momento (y esto se basa en más que solo el contenido en sí), por lo que generar artificialmente comentarios de spam no es un enfoque viable.

Estamos aquí para ayudarte

Si te bloqueas o necesitas ayuda para solucionar algo, no dudes en ponerte en contacto con nosotros.