Accesible Letter Soup vuelve a estar disponible en la App Store

Tras unos meses de ausencia, la Sopa de letras accesible vuelve a la AppStore con una versión renovada tanto en su base técnica como en sus posibilidades de juego y personalización.

Para hacer posible este regreso, el código del juego ha sido actualizado y rehecho, adaptándolo a las tecnologías actuales y a las últimas versiones de las librerías de Apple. Esta renovación permite que Accesible Letter Soup vuelva a estar disponible sobre una base moderna, preparada para los dispositivos y versiones actuales de iOS y iPadOS.

La accesibilidad continúa siendo uno de los aspectos fundamentales del juego. Esta nueva versión incorpora nuevas características de accesibilidad y amplía las opciones de personalización, con el propósito de que cada usuario pueda adaptar la experiencia de juego tanto como sea posible a sus necesidades y preferencias.

También se ha ampliado el contenido. Accesible Letter Soup incorpora nuevas colecciones de palabras, mientras que las colecciones que ya estaban presentes en versiones anteriores han sido revisadas y ahora contienen un mayor número de palabras. De este modo, las partidas ofrecen más variedad y nuevas posibilidades para seguir jugando.

El juego está disponible en español, inglés e italiano, permitiendo disfrutar de las diferentes colecciones de palabras en los tres idiomas.

Esta nueva versión supone el regreso de Accesible Letter Soup a la App Store, pero también una renovación del proyecto que conserva su objetivo original: ofrecer un juego de palabras accesible, configurable y capaz de adaptarse a diferentes formas de jugar.

Puedes obtener la sopa de letras accesible en la AppStore.

Primera edición de los Premios Juan Carlos Ramiro: un reconocimiento a la innovación en tecnologías accesibles

El Centro de Innovación para las Tecnologías Accesibles (CINTAC) ha convocado la primera edición de los Premios Juan Carlos Ramiro para las Tecnologías Accesibles.

Esta iniciativa está destinada a reconocer proyectos y organizaciones que utilizan la tecnología para eliminar barreras, mejorar la autonomía de las personas y favorecer la igualdad de oportunidades.

El galardón nace con el propósito de destacar iniciativas que incorporan la accesibilidad como un elemento fundamental de la innovación tecnológica. La convocatoria busca dar visibilidad a soluciones que ya están produciendo resultados concretos y demostrables, más allá de las propuestas teóricas o experimentales.

La primera edición culminará el próximo 27 de octubre de 2026, con una ceremonia de entrega organizada por CINTAC en colaboración con la Consejería de Digitalización de la Comunidad de Madrid.

Un homenaje a Juan Carlos Ramiro

Los premios llevan el nombre de Juan Carlos Ramiro Iglesias, fundador de CINTAC y una figura destacada en el desarrollo de la accesibilidad y la defensa de los derechos de las personas con discapacidad en España.

A lo largo de su trayectoria profesional, Juan Carlos Ramiro desempeñó diferentes responsabilidades relacionadas con las políticas públicas de discapacidad, la inclusión social y las tecnologías accesibles.

Entre 2007 y 2010 ocupó el cargo de director general de Coordinación de Políticas Sectoriales sobre la Discapacidad del Gobierno de España. Durante esta etapa participó en el desarrollo de iniciativas normativas relacionadas con la accesibilidad y la no discriminación en ámbitos como el transporte, la edificación, las tecnologías de la información y las relaciones con las administraciones públicas.

También desarrolló su actividad profesional en instituciones como Fundación ONCE y el Ministerio de Trabajo y Asuntos Sociales, además de dirigir el Centro Nacional de Tecnologías de la Accesibilidad (CENTAC), organización que posteriormente evolucionó hasta convertirse en CINTAC.

Su trayectoria estuvo vinculada a la consideración de la accesibilidad como un derecho y a la necesidad de incorporar las tecnologías en los procesos de inclusión social.

La creación de estos premios pretende mantener vivo ese legado mediante el reconocimiento de iniciativas que contribuyen a transformar los avances tecnológicos en oportunidades reales para todas las personas.

Tres categorías para reconocer la accesibilidad tecnológica

La convocatoria contempla tres categorías principales, correspondientes a diferentes ámbitos de desarrollo e implantación de las tecnologías accesibles.

La categoría de Sector Público está destinada a reconocer proyectos promovidos desde las administraciones y organismos públicos que contribuyan a eliminar barreras y mejorar el acceso de la ciudadanía a productos, servicios y entornos tecnológicos.

La categoría de Sector Privado se dirige a empresas y organizaciones que desarrollen soluciones tecnológicas innovadoras con un impacto positivo y demostrable en la accesibilidad y la inclusión.

Finalmente, la categoría de Sector Académico reconoce iniciativas procedentes del ámbito educativo y de la investigación, especialmente aquellas que aporten soluciones aplicables a las necesidades de las personas y contribuyan al desarrollo de tecnologías accesibles.

En cada categoría se seleccionarán tres proyectos finalistas, entre los cuales se elegirá un ganador que recibirá el correspondiente Premio Juan Carlos Ramiro para las Tecnologías Accesibles.

Además de estos tres reconocimientos, CINTAC ha establecido una distinción especial al impulso de las tecnologías accesibles, cuya elección corresponde directamente a su Junta Directiva.

Requisitos para participar en la convocatoria

La primera edición de los premios está dirigida a organizaciones que desarrollen proyectos relacionados con las tecnologías accesibles y que puedan acreditar resultados concretos derivados de su aplicación.

Uno de los principales requisitos establecidos en las bases es demostrar una trayectoria continuada de al menos tres años en el desarrollo de la iniciativa presentada.

Este criterio pretende garantizar que los proyectos candidatos cuentan con una experiencia suficiente para valorar su funcionamiento y su contribución efectiva a la accesibilidad.

Las organizaciones participantes también deberán aportar evidencias verificables que permitan comprobar los resultados obtenidos. Estas evidencias pueden incluir indicadores de impacto, informes, testimonios, certificaciones u otros documentos que acrediten la aplicación real de las soluciones desarrolladas.

Los proyectos deberán estar alineados con los principios recogidos en el Manifiesto de CINTAC sobre tecnologías accesibles.

La documentación exigida incluye un formulario oficial de inscripción, una memoria descriptiva del proyecto con una extensión máxima de cinco páginas, las evidencias que acrediten sus resultados, una justificación de su adecuación a los criterios establecidos y una declaración responsable.

La accesibilidad y el impacto real como criterios de evaluación

Uno de los aspectos más relevantes de esta convocatoria es la importancia que se concede a los resultados prácticos de los proyectos.

Los premios no buscan reconocer únicamente el desarrollo de tecnologías novedosas, sino valorar su capacidad para resolver problemas de accesibilidad y mejorar las condiciones de participación de las personas.

Entre los criterios de evaluación se encuentran la eliminación o reducción de barreras, la mejora de la autonomía personal y la experiencia de uso de las soluciones tecnológicas.

También se tendrá en cuenta la incorporación de la accesibilidad desde las primeras fases del diseño, evitando que se considere una característica adicional que deba incorporarse una vez desarrollado el producto o servicio.

La contribución a la inclusión y la igualdad de oportunidades constituye otro de los elementos fundamentales de la evaluación.

Además, el jurado analizará el impacto de las iniciativas, su sostenibilidad y sus posibilidades de crecimiento o aplicación en otros contextos.

La valoración de las candidaturas corresponderá a un jurado independiente integrado por miembros del Consejo Asesor de CINTAC, que aplicará criterios públicos y homogéneos para determinar los proyectos finalistas y ganadores.

Calendario de la primera edición

El periodo de presentación de candidaturas comenzó el 15 de septiembre de 2026 y permanecerá abierto hasta el 19 de octubre de 2026.

Una vez finalizado el plazo de inscripción, el jurado procederá a evaluar las propuestas recibidas de acuerdo con los criterios establecidos en las bases.

El anuncio de los proyectos finalistas está previsto para el 22 de octubre de 2026.

La entrega de los galardones tendrá lugar el 27 de octubre de 2026, durante un encuentro organizado por CINTAC junto con la Consejería de Digitalización de la Comunidad de Madrid.

La ceremonia reunirá a representantes de diferentes ámbitos relacionados con la innovación, la transformación digital y la accesibilidad tecnológica.

El primer reconocimiento de los Premios Juan Carlos Ramiro

Aunque la entrega de los premios correspondientes a los sectores público, privado y académico tendrá lugar el 27 de octubre, la primera distinción de esta edición ya ha sido concedida.

El Premio Juan Carlos Ramiro Iglesias al Impulso de las Tecnologías Accesibles ha recaído en Miguel López-Valverde Argüeso, consejero de Digitalización de la Comunidad de Madrid.

El reconocimiento fue entregado el 23 de septiembre de 2026, durante la séptima edición de los Premios Pericia Tecnológica de la Asociación Profesional de Peritos de Nuevas Tecnologías (PETEC), celebrada en el espacio HUB232 de Las Rozas, Madrid.

El galardón, concedido directamente por la Junta Directiva de CINTAC, fue recogido en representación del consejero por José Antonio Sánchez, viceconsejero de Digitalización.

La entrega estuvo a cargo de Amanda Palazón y Jorge Ruiz, miembros de la directiva de CINTAC.

Durante la ceremonia se recordó una circunstancia relacionada con la trayectoria de Juan Carlos Ramiro. Dos años antes, el propio Juan Carlos no había podido acceder con su silla de ruedas al escenario utilizado para la celebración de los premios.

Aquella barrera arquitectónica motivó una actuación posterior para instalar una rampa de acceso al escenario, una mejora que permitió hacer accesible el espacio.

La entrega del primer premio que lleva su nombre en ese mismo escenario constituye un ejemplo de cómo la eliminación de barreras puede producir mejoras permanentes que beneficien a otras personas.

Una iniciativa para impulsar la accesibilidad desde la innovación

La creación de los Premios Juan Carlos Ramiro se enmarca en la actividad desarrollada por CINTAC para promover tecnologías que puedan ser utilizadas por todas las personas, independientemente de sus capacidades o circunstancias.

En un contexto de creciente digitalización de los servicios públicos, las actividades profesionales, la educación y las relaciones sociales, la accesibilidad tecnológica adquiere una importancia cada vez mayor.

El desarrollo de nuevas herramientas digitales puede facilitar la autonomía y la participación social, pero también puede generar barreras cuando las necesidades de determinados grupos de usuarios no se tienen en cuenta durante su diseño.

Por este motivo, iniciativas como estos premios contribuyen a dar visibilidad a proyectos que incorporan la accesibilidad desde su concepción y que pueden servir como referencia para otros desarrollos tecnológicos.

La exigencia de resultados verificables y de una trayectoria consolidada permite, además, centrar el reconocimiento en soluciones cuya utilidad pueda ser evaluada a partir de experiencias reales.

Con esta primera edición, CINTAC establece un nuevo espacio de reconocimiento para las organizaciones que trabajan en la eliminación de barreras mediante la tecnología.

Los Premios Juan Carlos Ramiro aspiran así a vincular la innovación con la accesibilidad universal, al tiempo que mantienen presente la trayectoria de una persona que dedicó buena parte de su actividad profesional a impulsar la igualdad de oportunidades de las personas con discapacidad.

Más información y presentación de candidaturas

Las organizaciones interesadas en participar pueden consultar las bases oficiales de la convocatoria y acceder a la información necesaria para presentar sus proyectos a través de la página web de CINTAC.

Para ampliar la información sobre esta primera edición, pueden consultarse las Bases oficiales y requisitos de participación en los Premios Juan Carlos Ramiro.

Accesible Othello vuelve a estar disponible en la App Store

Después de un tiempo de ausencia, Accesible Othello vuelve a estar disponible en la App Store y sigue estando disponible para iPhone y iPad.
El juego, internamente, ha sufrido una renovación profunda. El código ha sido actualizado y rehecho para adaptarlo a las tecnologías actuales de Apple y utilizar las últimas versiones de sus librerías. El objetivo no ha sido únicamente recuperar el juego, sino construir una base renovada sobre la que pueda seguir evolucionando.
La nueva versión mantiene la esencia de Accesible Othello y presta una atención especial a uno de sus principios fundamentales: la accesibilidad. Se han incorporado nuevas características destinadas a facilitar el uso del juego y a ofrecer una experiencia más adaptable a las distintas necesidades de los usuarios.
También se han ampliado las posibilidades de personalización, permitiendo configurar diferentes aspectos de la experiencia de juego. La intención es que cada usuario pueda ajustar el juego de la forma que le resulte más cómoda y adecuada.
Esta actualización implica algo más que la vuelta de Accesible Othello a la App Store. Es una renovación técnica y funcional que permite recuperar el proyecto sobre una base moderna, manteniendo su compromiso con la accesibilidad y ampliando las posibilidades para adaptar la experiencia a cada jugador.
Puedes obtener Accessible Othello en la AppStore.

La inteligencia artificial también mejora la accesibilidad en MacOS27

La inteligencia artificial está llegando a muchos rincones de macOS, y las funciones de accesibilidad no son una excepción. Con macOS 27, Apple incorpora nuevas herramientas y mejora otras ya existentes que permiten a las personas con discapacidad obtener más información sobre imágenes, ventanas y otros elementos visuales de la pantalla sin necesidad de recurrir a aplicaciones de terceros.

Las principales novedades de macOS 27 están relacionadas, en su mayoría, con el uso de la inteligencia artificial para mejorar u optimizar funciones que ya había. Esto también ha beneficiado a la accesibilidad del sistema operativo.

La inteligencia artificial empieza a proporcionar información sobre aquello que, hasta ahora, quedaba fuera del alcance del lector de pantalla.

Ver con la inteligencia artificial

Una de las funciones más solicitadas por una persona ciega es la de obtener una descripción de una imagen o contenido visual. Hasta hace unos años esto sólo se podía conseguir con la asistencia de otra persona. Gracias a la inteligencia artificial, obtener una descripción de una imagen es algo que se consigue de forma relativamente sencilla utilizando algún servicio o aplicación de terceros.

Apple suele seguir la filosofía de, poco a poco, incluir las funciones o servicios más demandados por los usuarios dentro del propio sistema operativo para que esa función esté optimizada y mejore la experiencia general de los usuarios.

En versiones anteriores de macOS ya estaba disponible la función de describir imágenes usando VoiceOver, aunque eran descripciones breves y poco precisas. Con macOS 27 se ha mejorado tanto la velocidad como la prosa en el resultado. Esta nueva versión se llama descripción inteligente de imágenes y se sigue utilizando pulsando las teclas Control+Opción+Mayúsculas+L.

La función sigue describiendo la imagen o elemento visual que está en el foco de VoiceOver, pero manteniendo nuestra privacidad, ya que todo el procesamiento se puede hacer en nuestro propio equipo o con los servicios de la Nube de Apple.

Esta mejora resulta especialmente útil cuando navegamos por páginas web, documentos o aplicaciones en las que encontramos fotografías, ilustraciones u otros elementos gráficos que no disponen de una descripción accesible. VoiceOver puede ofrecernos así información adicional sin que tengamos que abandonar la aplicación que estamos utilizando.

Ver toda la pantalla

De describir una imagen a describir toda la pantalla hay un pequeño paso, pero esto da mucha ayuda a una persona ciega, ya que se obtiene información de qué está sucediendo en un momento dado en el ordenador o cómo se distribuyen los elementos en la pantalla.

Ya hay aplicaciones, como BeMyEyes para macOS, que realizan esta función.

Apple, como novedad en macOS 27, ha incorporado la posibilidad de aplicar esta descripción de una imagen a toda la pantalla. Apple lo ha llamado descripción inteligente de la pantalla. La función es tan nueva que aún no tiene atajo de teclado asignado por defecto en VoiceOver.

Podemos asignarle un atajo utilizando las opciones de personalización de los comandos de VoiceOver.

La descripción de la pantalla obtenida con esta función de VoiceOver aporta información sobre qué aplicaciones hay abiertas, el texto de la aplicación principal y la distribución de las distintas ventanas abiertas y visibles en pantalla.
Como punto interesante y diferenciador frente a otras apps que realizan este análisis de la pantalla es que la descripción de la imagen o de la pantalla se puede obtener con la cortina de pantalla de VoiceOver activada, ya que la imagen se obtiene desde el propio sistema operativo y no haciendo una captura de pantalla.

La descripción no se limita a reconocer un elemento concreto, sino que puede aportar el contexto visual que normalmente se pierde al utilizar únicamente un lector de pantalla. Saber dónde están las ventanas, qué aparece alrededor de la aplicación que estamos utilizando o qué información visual está presente puede ayudar a comprender mejor el estado general del escritorio.

Además, poder utilizar esta función con la cortina de pantalla activada evita tener que elegir entre privacidad y acceso a la información visual. Para una persona ciega que utiliza habitualmente esta característica de VoiceOver, la descripción inteligente de la pantalla puede integrarse en su forma habitual de utilizar el Mac sin necesidad de modificarla.

Cómo enviar notificaciones a Slack desde PHP, macOS y Windows

En la actualidad trabajamos con máquinas que realizan procesos largos
o, incluso, esas máquinas están lejos de nosotros. Cuando sucede algún
evento que nos interese, como que ha terminado de procesar un fichero
grande o nuestro sitio web está recibiendo un ataque, recibir una
notificación de este hecho podría ayudarnos a ser más proactivos y vivir
más tranquilos.

Construir un sistema de notificaciones puede ser una tarea enorme e,
incluso, cara económicamente. Pero existen alternativas ya
construidas.

Una forma sencilla de construir nuestro propio sistema de
notificaciones consiste en utilizar Slack y su posibilidad de crear aplicaciones o bots.

La ventaja es que nuestros programas no necesitan conocer cómo
funciona el sistema de notificaciones de Windows, MacOS, Android o iOS.
Solamente tienen que enviar un mensaje a Slack.

¿Qué es Slack?

Slack es una plataforma de comunicación basada principalmente en mensajes organizados mediante espacios de trabajo, canales y conversaciones.

Slack está principalmente orientada a equipos de trabajo pero también
puede resultar útil como herramienta personal. Slack dispone de
aplicaciones para diferentes sistemas operativos y dispositivos móviles,
por lo que un mensaje enviado a nuestro espacio de trabajo puede
convertirse inmediatamente en una notificación en nuestro ordenador,
teléfono móvil o smartWatch, dependiendo de cómo tengamos configuradas
las notificaciones.

Esta característica permite utilizar Slack como intermediario entre
nuestros programas y nuestros dispositivos.

Aprender creando

La mejor forma de aprender algo es haciendo algo práctico. Vamos a
crear la infraestructura necesaria para enviar desde nuestro PC con
Windows, nuestro Macbook con MacOS o nuestro hosting web con PHP un
mensaje a Slack para que nos llegue a todos nuestros dispositivos
conectados a Slack.

Técnicamente haremos esto: nuestro programa detectará un determinado
acontecimiento y realizará una petición HTTPS a la API de Slack. Slack
recibirá el mensaje y se encargará de distribuirlo a nuestros
dispositivos conectados.

Esto permite crear multitud de automatizaciones. Por ejemplo:

  • avisarnos cuando finaliza una copia de seguridad;
  • recibir una alerta cuando se produce un error en nuestra página
    web;
  • conocer cuándo termina una tarea programada;
  • avisarnos si queda poco espacio disponible en un servidor;
  • recibir el resultado de un proceso ejecutado mediante
    cron;
  • saber cuándo termina una conversión de vídeo que tarda varias
    horas;
  • recibir una alerta cuando un determinado servicio deja de
    funcionar;
  • conocer cuándo ha finalizado un proceso en nuestro Mac;
  • o recibir desde Windows el resultado de un script de
    mantenimiento.

Slack gratuito y el
límite de aplicaciones

Para realizar este tutorial podemos utilizar un espacio de trabajo
gratuito de Slack.

Conviene distinguir entre una aplicación y un bot. En este artículo crearemos una aplicación personalizada de Slack y dentro de ella utilizaremos un usuario bot para enviar los mensajes.

En el plan gratuito existen límites sobre las aplicaciones e
integraciones que podemos instalar. Por ejemplo, actualmente Slack
establece un límite de 10 aplicaciones de terceros o
aplicaciones personalizadas instaladas
en un espacio de trabajo gratuito.

Podemos crear una única aplicación, por ejemplo, llamada
Notificaciones y utilizar la misma aplicación para enviar notificaciones desde nuestro MacBook, nuestro PC y nuestro hosting web. Incluso podemos crear diferentes canales y desde el programa elegir dónde publicar.

Con este enfoque una única aplicación de Slack puede centralizar las
notificaciones procedentes de muchos sistemas diferentes.

Crear nuestra aplicación en
Slack

El primer paso consiste en crear una aplicación de Slack.

Debemos acceder a la web de la
API de Slack
y crear una nueva aplicación.

Podemos darle un nombre descriptivo como
Notificaciones.

También tendremos que indicar el espacio de trabajo de Slack en el
que queremos instalarla.

Una aplicación de Slack puede disponer de diferentes permisos. Como
en nuestro caso únicamente queremos publicar mensajes, debemos conceder
al bot el permiso OAuth chat:write. Este permiso permite que la aplicación publique mensajes.

Después instalaremos la aplicación en nuestro espacio de trabajo.
Durante el proceso, Slack generará un Bot User OAuth
Token
.

Los tokens de bot suelen comenzar por xoxb-, por ejemplo:

xoxb-XXXXXXXXXXXX-XXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXX

Este token es una credencial secreta.

No debemos publicarlo en una página web, subirlo a un repositorio
público ni incluirlo en un ejemplo que vayamos a compartir con otras
personas.

Cualquier persona que consiga un token válido podría utilizar los
permisos asociados a nuestra aplicación.

Si accidentalmente hacemos público el token, debemos revocarlo y
generar unas credenciales nuevas.

Añadir el bot al canal

También necesitaremos un lugar en el que publicar las
notificaciones.

Podemos crear, por ejemplo, un canal llamado
#notificaciones.

Una vez hecho esto necesitaremos conocer el identificador del
canal.

Los identificadores de canales de Slack tienen un aspecto similar a
C0123456789. Este identificador será el que utilizaremos al llamar a la API.

Slack permite otras formas de organizar y enviar mensajes, pero para
un sistema personal de alertas un canal específico suele ser el enfoque
apropiado.

Cómo se envía un mensaje a
Slack

Slack proporciona el método de su API
chat.postMessage.

La petición se realiza mediante HTTPS utilizando la URL
https://slack.com/api/chat.postMessage.

Debemos enviar nuestro token mediante la cabecera HTTP:

Authorization: Bearer TOKEN

y proporcionar como mínimo el canal y el contenido del mensaje.

Conceptualmente enviaremos un documento JSON parecido a este:

{
    "channel": "C0123456789",
    "text": "Copia de seguridad terminada correctamente"
}

Esta operación es independiente del lenguaje de programación que
utilicemos.

Por esta razón podemos realizar exactamente la misma petición desde
PHP, AppleScript, PowerShell, Python, Java, C# o prácticamente cualquier
entorno capaz de efectuar una petición HTTPS.

Vamos a ver tres ejemplos.

Enviar una
notificación a Slack desde PHP

Supongamos que tenemos una página web alojada en un hosting PHP y
queremos recibir una notificación cuando sucede algún
acontecimiento.

Podría tratarse de una tarea ejecutada mediante cron, una copia de seguridad o un proceso interno de nuestra aplicación.

Una implementación sencilla utilizando cURL sería la siguiente:

<?php

$token = getenv('SLACK_BOT_TOKEN');
$canal = 'C0123456789';

$datos = [
    'channel' => $canal,
    'text' => 'Mensaje enviado desde mi servidor PHP'
];

$curl = curl_init('https://slack.com/api/chat.postMessage');

curl_setopt_array($curl, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $token,
        'Content-Type: application/json; charset=utf-8'
    ],
    CURLOPT_POSTFIELDS => json_encode($datos)
]);

$respuesta = curl_exec($curl);

curl_close($curl);

echo $respuesta;

El token se obtiene mediante:

getenv('SLACK_BOT_TOKEN')

en lugar de escribirlo directamente en el código.

Siempre que nuestro hosting lo permita, resulta preferible almacenar
credenciales y secretos mediante variables de entorno o mediante algún
mecanismo de configuración situado fuera del directorio público de
nuestra página web.

Crear una función
PHP para enviar mensajes

Si vamos a utilizar Slack desde diferentes partes de nuestra
aplicación PHP, podemos encapsular el código anterior en una
función:

function enviarSlack($mensaje)
{
    $token = getenv('SLACK_BOT_TOKEN');
    $canal = 'C0123456789';

    $datos = [
        'channel' => $canal,
        'text' => $mensaje
    ];

    $curl = curl_init('https://slack.com/api/chat.postMessage');

    curl_setopt_array($curl, [
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => [
            'Authorization: Bearer ' . $token,
            'Content-Type: application/json; charset=utf-8'
        ],
        CURLOPT_POSTFIELDS => json_encode($datos)
    ]);

    $respuesta = curl_exec($curl);

    curl_close($curl);

    return $respuesta;
}

Ahora podemos enviar una notificación simplemente escribiendo:

enviarSlack('La copia de seguridad ha terminado correctamente.');

Para enviar una notificación de que se ha terminado la copia de
seguridad sería algo como:

if ($copiaCorrecta) {
    enviarSlack('✅ Copia de seguridad terminada correctamente.');
} else {
    enviarSlack('⚠️ Se ha producido un error durante la copia de seguridad.');
}

Podemos incluir en el mensaje cualquier información que resulte
útil:

enviarSlack(
    "Nuevo pedido recibido.\n" .
    "Número: " . $pedido . "\n" .
    "Importe: " . $importe . " euros"
);

De esta manera, un acontecimiento producido en nuestro hosting puede
generar inmediatamente una notificación en nuestro teléfono.

Enviar una
notificación desde un Mac con AppleScript

El mismo sistema puede utilizarse desde macOS.

AppleScript no necesita disponer de una implementación específica de
la API de Slack. Podemos utilizar el comando curl incluido en macOS mediante do shell script.

Un ejemplo sería:

set slackToken to "xoxb-XXXXXXXXXXXX"
set slackChannel to "C0123456789"
set slackMessage to "El proceso del Mac ha terminado correctamente"

set jsonData to "{\"channel\":\"" & slackChannel & "\",\"text\":\"" & slackMessage & "\"}"

set command to "curl -s -X POST " & ¬
    "-H " & quoted form of ("Authorization: Bearer " & slackToken) & " " & ¬
    "-H " & quoted form of "Content-Type: application/json; charset=utf-8" & " " & ¬
    "--data " & quoted form of jsonData & " " & ¬
    quoted form of "https://slack.com/api/chat.postMessage"

do shell script command

En un script real debemos evitar almacenar el token directamente en
el código cuando exista la posibilidad de que ese archivo pueda ser
compartido.

Una posibilidad es guardarlo en una variable de entorno, un archivo
de configuración protegido o utilizar el llavero de macOS.

Avisarnos cuando
termina un proceso en el Mac

Supongamos que utilizamos nuestro Mac para ejecutar una tarea que
tarda mucho tiempo.

Nuestro AppleScript podría realizar primero el proceso:

do shell script "/ruta/a/mi/programa"

y después enviar el mensaje a Slack:

set slackMessage to "El proceso ha terminado."

De esta manera podemos abandonar el ordenador y recibir una
notificación en el teléfono cuando la tarea haya finalizado.

También podríamos utilizar el resultado del proceso para enviar
mensajes diferentes dependiendo de si la operación ha terminado
correctamente o se ha producido algún error.

Enviar
una notificación desde Windows con un archivo BAT

Windows también puede participar en nuestro sistema de
notificaciones.

Podemos utilizar PowerShell para realizar la petición HTTP e
invocarlo desde un archivo .bat.

Por ejemplo, podemos crear un archivo llamado
notificar.bat con el siguiente contenido:

@echo off

set "SLACK_TOKEN=xoxb-XXXXXXXXXXXX"
set "SLACK_CHANNEL=C0123456789"
set "SLACK_MESSAGE=El proceso de Windows ha terminado"

powershell -NoProfile -Command ^
  "$headers = @{ Authorization = 'Bearer %SLACK_TOKEN%' }; ^
   $body = @{ channel = '%SLACK_CHANNEL%'; text = '%SLACK_MESSAGE%' } | ConvertTo-Json; ^
   Invoke-RestMethod -Uri 'https://slack.com/api/chat.postMessage' -Method Post -Headers $headers -ContentType 'application/json; charset=utf-8' -Body $body"
Ejecutar la
notificación después de otro programa

Una utilidad interesante de los archivos BAT consiste en encadenar
varios comandos.

Por ejemplo:

@echo off

backup.exe

if %ERRORLEVEL% EQU 0 (
    call notificar.bat
)

En este ejemplo se ejecuta primero:

backup.exe

y se consulta posteriormente su código de salida.

Podemos desarrollar el ejemplo para generar una notificación
diferente cuando se produzca un error:

@echo off

backup.exe

if %ERRORLEVEL% EQU 0 (
    set "RESULTADO=La copia de seguridad ha terminado correctamente"
) else (
    set "RESULTADO=ERROR: la copia de seguridad ha fallado"
)

A continuación podemos utilizar el valor de RESULTADO como contenido del mensaje enviado a Slack.

El principio es exactamente el mismo que en PHP y AppleScript:
nuestro programa detecta un acontecimiento y realiza una petición a la
API de Slack.

Comprobar la respuesta de
Slack

Hay un detalle importante que no debemos ignorar en una
implementación real.

No basta con comprobar que la conexión HTTPS se ha realizado
correctamente.

La API de Slack devuelve un documento JSON indicando si la operación
ha tenido éxito.

Una respuesta correcta contendrá un valor equivalente a:

{
    "ok": true
}

Mientras que, si existe algún problema, recibiremos una respuesta
similar a:

{
    "ok": false,
    "error": "..."
}

Por tanto, nuestros scripts deberían comprobar el campo
ok cuando sea importante asegurarnos de que la notificación ha sido aceptada por Slack.

Esto permite detectar situaciones como un token incorrecto, permisos
insuficientes o un canal al que la aplicación no puede acceder.

Seguridad

El elemento más delicado de todo este sistema es el token OAuth del
bot.

Debemos tratarlo igual que una contraseña.

En particular, conviene seguir varias reglas:

  • no publicarlo en GitHub ni en otros repositorios públicos;
  • no incluirlo en artículos, capturas de pantalla o
    documentación;
  • evitar almacenarlo directamente dentro del código;
  • impedir que pueda descargarse desde nuestro servidor web;
  • utilizar variables de entorno o mecanismos seguros de almacenamiento
    de credenciales;
  • revocarlo inmediatamente si sospechamos que ha quedado
    expuesto.

También es aconsejable conceder a la aplicación únicamente los
permisos que necesita.

Para los ejemplos de este tutorial nos interesa utilizar
chat:write.

No existe ninguna razón para conceder acceso a mensajes, usuarios,
archivos u otros recursos si nuestra aplicación solamente necesita
publicar una notificación.

Aplicar el principio del mínimo privilegio reduce las consecuencias
de una posible filtración del token.

No utilizar Slack
como sistema de registro

Aunque podemos enviar mensajes automáticos, Slack no debería
convertirse en el registro completo de actividad de nuestro
servidor.

No sería razonable, por ejemplo, enviar una notificación por cada
petición HTTP recibida por una página web.

Las notificaciones deben reservarse para acontecimientos que
realmente queremos conocer.

El envío masivo puede encontrarse con los límites de frecuencia
establecidos por Slack.

Para almacenar grandes cantidades de acontecimientos debemos utilizar
archivos de registro, bases de datos o plataformas específicas de
monitorización. Slack puede actuar como la última etapa del sistema y
avisarnos únicamente cuando ocurre algo que requiere nuestra
atención.

Limitaciones de la cuenta
gratuita

El plan gratuito de Slack es suficiente para un sistema doméstico o
un pequeño sistema de notificaciones como el descrito en este tutorial,
pero debemos tener presentes sus restricciones.

Slack también establece limitaciones sobre el historial disponible en
los espacios de trabajo gratuitos y aplica límites de frecuencia a las
llamadas realizadas contra su API.

Estas restricciones no suelen representar un problema para un sistema
que envía unas pocas alertas al día, pero son importantes si pretendemos
utilizar Slack para registrar automáticamente una gran cantidad de
acontecimientos.

Usar VoiceOver mientras compartes la pantalla con otro Mac

La administración remota de ordenadores presenta un problema particular para las personas que utilizan un lector de pantalla. No basta con transmitir la imagen del escritorio remoto ni con enviar las pulsaciones del teclado. Para que el usuario pueda trabajar de forma autónoma es necesario que la información de accesibilidad del ordenador remoto también esté disponible para el lector de pantalla.

En MacOS no había una solución estable para realizar esto. Pero con la aparición de MacOS 27 Apple ha incorporado una solución dentro del propio sistema operativo. Cuando un usuario de VoiceOver controla otro Mac mediante la aplicación Compartir Pantalla o mediante Apple Remote Desktop, el lector de pantalla puede activarse temporalmente en el ordenador remoto y permitir la exploración de su interfaz desde el Mac local.

Esta nueva característica está incluida entre las capacidades de accesibilidad disponibles en macOS 27 y representa una mejora especialmente relevante para usuarios ciegos que necesitan realizar tareas de soporte, administración o asistencia remota.

El problema de utilizar un lector de pantalla a través de una conexión remota

Una sesión de pantalla compartida está diseñada fundamentalmente para transmitir una representación visual de un escritorio remoto y permitir que otro ordenador envíe órdenes mediante el teclado y el dispositivo apuntador (ratón o trackpad). La mayoría de aplicaciones enfocadas en facilitar el acceso remoto a un dispositivo lo que hacen es una captura de imagen contínua y la envían al dispositivo controlador.

Esta forma de realizar la compartición de escritorio presenta limitaciones evidentes para alguien que depende de un lector de pantallas.

Un lector de pantalla no trabaja simplemente describiendo una imagen de la pantalla. VoiceOver consulta la infraestructura de accesibilidad de macOS para identificar ventanas, botones, campos de texto, tablas, barras de herramientas y otros objetos de la interfaz. También necesita conocer sus nombres, estados, relaciones jerárquicas y posibles funciones.

Disponer de la imagen del escritorio remoto no equivale a disponer de acceso a su interfaz de accesibilidad.

La solución adoptada por Apple consiste en integrar VoiceOver con el mecanismo de pantalla compartida para que el lector pueda trabajar temporalmente con el entorno accesible del ordenador remoto.

VoiceOver se activa temporalmente en el Mac remoto

Cuando se utiliza VoiceOver para controlar otro Mac usando Apple Remote Desktop o la aplicación Compartir Pantalla, macOS puede activar temporalmente VoiceOver en el ordenador remoto.

Este comportamiento no modifica de forma permanente la configuración de VoiceOver del equipo controlado.

Según explica Apple en la documentación de compartir pantalla con VoiceOver, cuando termina la sesión de pantalla compartida se restauran los ajustes originales del dispositivo remoto.

Esto permite utilizar las funciones necesarias para proporcionar accesibilidad durante la conexión sin dejar VoiceOver activado posteriormente ni alterar de manera permanente la configuración habitual del otro usuario.

Desde el punto de vista del diseño de accesibilidad, se trata de una decisión importante. El estado de accesibilidad necesario para la sesión pertenece a la propia sesión y no se convierte automáticamente en una modificación persistente del sistema remoto.

El Mac remoto no empieza a hablar

Activar VoiceOver temporalmente en el ordenador remoto podría provocar una situación problemática si ambos ordenadores comenzasen a reproducir simultáneamente la misma información.

Apple evita este comportamiento haciendo que VoiceOver no reproduzca sonidos ni muestre sus elementos visuales en el dispositivo remoto durante este tipo de sesión.

La salida utilizada por la persona que controla el ordenador se mantiene, por tanto, en el Mac local.

Esta separación resulta especialmente útil en situaciones de soporte técnico. Una persona ciega puede controlar mediante VoiceOver el ordenador de otra persona sin provocar necesariamente que el Mac remoto empiece a verbalizar toda la interfaz a través de sus propios altavoces.

También reduce la duplicación de información y facilita determinar qué sistema está produciendo cada respuesta.

Un cambio de tono diferencia el Mac local del remoto

Trabajar simultáneamente con dos sistemas hace que el usuario necesite saber si VoiceOver está describiendo la interfaz de su propio ordenador o la del ordenador remoto.

Para proporcionar esta referencia, VoiceOver modifica el tono de la voz cuando se interactúa con el dispositivo remoto.

En lugar de depender exclusivamente de mensajes adicionales que interrumpirían constantemente la navegación, VoiceOver utiliza una propiedad de la propia síntesis de voz para comunicar que se ha cambiado de contexto.

El usuario puede así reconocer auditivamente si se encuentra navegando por la interfaz local o por el Mac que está controlando.

Activación de la accesibilidad al comenzar una sesión

Cuando VoiceOver está activo en el Mac local y se inicia una sesión compatible de pantalla compartida, macOS solicita automáticamente que se activen los ajustes de accesibilidad necesarios en el equipo remoto.

Una vez concedido este acceso, el usuario puede desplazarse con VoiceOver hasta la pantalla compartida.

La pantalla remota se presenta como un elemento con el que es necesario interactuar, de forma similar a una tabla, un grupo u otros elementos complejos de la interfaz de macOS.
Para comenzar a explorar su contenido se utiliza el comando:
VO + Mayúsculas + Flecha abajo

Después de comenzar la interacción con la pantalla compartida, los comandos habituales de navegación de VoiceOver pueden utilizarse para recorrer la interfaz del ordenador remoto.

Esto significa que la sesión remota deja de ser únicamente una superficie visual dentro de una ventana y pasa a comportarse como un entorno accesible con el que VoiceOver puede interactuar.

Una herramienta especialmente útil para soporte técnico

Con esta nueva herramienta la posibilidad de proporcionar asistencia remota utilizando VoiceOver ya es posible de forma sencilla y sin necesidad de ninguna aplicación o servicio extra.

Apple Remote Desktop, por ejemplo, está diseñado específicamente para administrar equipos Mac de forma remota. La posibilidad de utilizar VoiceOver durante estas sesiones hace que una parte importante de esas tareas pueda realizarse sin depender de la inspección visual de la pantalla remota.

La accesibilidad deja así de estar limitada al ordenador situado físicamente delante del usuario y pasa a formar parte del propio mecanismo de uso remoto.