Integración con Talk¶
Resumen¶
Esta página explica cómo una app accede a las capacidades de Talk mediante el intermediario \OCP\Talk\IBroker: comprobar si Talk está disponible y crear, personalizar y eliminar conversaciones. Está dirigida a quienes desarrollan apps.
Fuente: documentación de Nextcloud, «developer_manual/digging_deeper/talk», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
Nextcloud Talk es la solución de chat y de conferencias de video y audio de APS Conecta Gestión. Las apps pueden acceder a las capacidades de Talk mediante una API pública.
Toda la comunicación de una app con el backend de Talk se gestiona a través de un intermediario \OCP\Talk\IBroker. Inyectar el intermediario de Talk en la clase para usarlo.
Comprobar la existencia de Talk¶
Talk es una app opcional. Tiene que estar instalada y habilitada para poder usarse.
<?php
/** @var \OCP\Talk\IBroker $broker */
if ($broker->hasBackend()) {
// Do something with it
} else {
// Hide Talk integration from a user or use other communication channels, if applicable
}
Crear una conversación¶
Una conversación nueva necesita un nombre y al menos un moderador. De forma predeterminada, esta conversación será privada.
<?php
/** @var \OCP\Talk\IBroker $broker */
/** @var \OCP\IUser $alice */
/** @var \OCP\IUser $bob */
$conversation = $broker->createConversation(
'Weekly 1:1',
[$alice, $bob]
);
Personalizar la conversación¶
Es posible ajustar los valores predeterminados:
setPublic: hacer pública la conversación (lo que permite que cualquiera con el enlace acceda a la conversación).setMeetingDate(desde APS Conecta Gestión 32.0.9, 33.0.3 y 34.0.0): marcar una conversación como relacionada con una reunión. Esto hará que Talk haga caducar automáticamente la conversación 4 semanas (el valor es configurable) después de la reunión, salvo que el propietario confirme que la conversación debe mantenerse.
<?php
/** @var \OCP\Talk\IBroker $broker */
/** @var \OCP\IUser $alice */
/** @var \OCP\IUser $bob */
$options = $broker->newConversationOptions();
$options->setPublic();
$options->setMeetingDate(
$this->timeFactory->getDateTime(new \DateTime('2026-04-07 13:00')),
$this->timeFactory->getDateTime(new \DateTime('2026-04-07 14:00')),
);
$conversation = $broker->createConversation(
'Weekly 1:1',
[$alice, $bob],
$options
);
Eliminar una conversación¶
Una conversación se puede eliminar por su id (token).
<?php
/** @var \OCP\Talk\IBroker $broker */
$broker->deleteConversation('abc123');