Enviar notificaciones en la aplicación dentro de aplicaciones basadas en modelos

La tabla de notificaciones almacena notificaciones para cada usuario. Su aplicación basada en modelos sondea automáticamente el sistema en busca de nuevas notificaciones y las muestra en el centro de notificaciones. El remitente de la notificación o su administrador del sistema pueden configurar cómo se muestra la notificación y cómo se puede descartar. Las notificaciones aparecen en el centro de notificaciones hasta que el destinatario las descarta o caducan. De forma predeterminada, una notificación caduca después de 14 días, pero su administrador puede anular esta configuración.

Cada fila de notificación está destinada a un solo usuario, identificado por el valor de columna Propietario. Si es necesario enviar una notificación a varios usuarios, se debe agregar un registro para cada destinatario. El remitente controla al destinatario a través de la columna Propietario.

Este tema describe los pasos para enviar notificaciones dentro de la aplicación a un usuario específico mediante una API de cliente.

Habilitar la característica de notificación en aplicación

Para usar la función de notificación en aplicación, debe habilitar el parámetro de configuración Notificaciones en la aplicación. Este parámetro de configuración se almacena dentro de la aplicación basada en modelo.

  1. Inicie sesión en Power Apps.

  2. Abra la solución que contiene la aplicación basada en modelo.

  3. Seleccione la aplicación basada en modelo y haga clic en el menú dividido Editar para abrirla utilizando el diseñador de aplicaciones modernas

  4. Abra Configuración y cambie a Próximos

  5. Habilite "Notificaciones en aplicación"

    Página personalizada como página principal

  6. Haga clic en Guardar para guardar los cambios en los parámetros de configuración.

  7. Haga clic en Publicar en la aplicación basada en modelo.

Enviar notificaciones en aplicación básicas

Debido a que el sistema de notificación usa una tabla, puede usar cualquier funcionalidad de tabla para crear nuevas notificaciones.

Captura de pantalla de una notificación de bienvenida.

Los siguientes ejemplos usan la tabla de notificación y un registro de notificación para crear notificaciones.

Las notificaciones en aplicación se pueden enviar mediante la API createRecord.

var systemuserid = "Guid of the user";
var notificationRecord =
{
  "title": "Welcome",
  "body": "Welcome to the world of app notifications!",
  "ownerid@odata.bind": "/systemusers(" + systemuserid + ")",
  "icontype": 100000000, // info
  "toasttype": 200000000 // timed
}
// Create notification record
Xrm.WebApi.createRecord("appnotification", notificationRecord).
  then(
      function success(result) {
          console.log("notification created with ID: " + result.id);
      },
      function (error) {
          console.log(error.message);
          // handle error conditions
      }
  );

Sondeo de notificaciones

Las notificaciones en aplicación usan sondeos para recuperar notificaciones periódicamente cuando la aplicación se está ejecutando. Las nuevas notificaciones se recuperan al inicio de la aplicación basada en modelo y cuando se producen navegaciones en la página, siempre que la última recuperación haya sido hace más de un minuto. Si un usuario permanece en una página durante mucho tiempo, se recuperarán nuevas notificaciones.

Tabla de notificación

Las siguientes son las columnas para la tabla Notificación (appnotification).

Visualización de columnas Nombre de la columna Descripción
Nombre title El título de la notificación.
Propietario ownerid El usuario que recibe la notificación.
Cuerpo body Detalles sobre la notificación.
IconType icontype La lista de iconos predefinidos. El valor predeterminado es Info. Para obtener más información, vaya a Cambiar el icono de notificación más adelante en este tema.
Tipo de notificación toasttype La lista de comportamientos de notificación. El valor predeterminado es Timed. Para obtener más información, vaya a Cambiar el comportamiento de notificación más adelante en este tema.
Caducidad (segundos) ttlinseconds La cantidad de segundos desde que se debe eliminar la notificación si aún no se descartó.
Datos data JSON que se usa para la extensibilidad y el análisis de datos más completos en la notificación. La longitud máxima es de 5000 caracteres.

Importante

  • El campo appmoduleid no se usa y no debe configurarse en la entidad appnotification.

Cambiar el comportamiento de las notificaciones

Puede cambiar el comportamiento de las notificaciones en la aplicación configurando el Tipo de notificación a uno de los siguientes valores.

Tipo de notificación Comportamiento valor
Programada La notificación aparece durante un breve periodo (el valor predeterminado es cuatro segundos) y luego desaparece. 200000000
Oculto La notificación aparece solo en el centro de notificaciones y no como una notificación del sistema. 200000001

Cambiar el icono de notificación

Puede cambiar el icono de las notificaciones en la aplicación configurando el Tipo de icono a uno de los siguientes valores. Cuando utilice un icono personalizado, especifique el parámetro iconUrl dentro del parámetro data.

Tipo de icono valor Imagen
Información 100000000 Icono de información
Correcto 100000001 Icono de correcto
Error 100000002 Icono de error
Advertencia 100000003 Icono de advertencia
Mención 100000004 Icono de mención
Personalizado 100000005

Uso de Markdown en el título y el cuerpo

El campo datos admite la anulación de las cadenas simples del título y el cuerpo con un subconjunto limitado basado en Markdown.

A continuación se muestra el Markdown admitido.

Estilo de texto Markdown
Negrita **Bold**
Cursiva _Italic_
Lista de viñetas - Item 1\r- Item 2\r- Item 3
Lista numerada 1. Green\r2. Orange\r3. Blue
Hipervínculos [Title](url)

En el cuerpo, se pueden incluir líneas nuevas usando \n\n\n\n.

Puede controlar dónde se abre un enlace de navegación si configura el parámetro navigationTarget.

Objetivo de navegación Comportamiento Ejemplo
dialog Se abre en el cuadro de diálogo central. "navigationTarget": "dialog"
inline Predeterminado. Se abre en la página actual. "navigationTarget": "inline"
newWindow Se abre en una nueva pestaña del explorador. "navigationTarget": "newWindow"

Administrar la seguridad de las notificaciones

La característica de notificación en aplicación usa tres tablas. Un usuario debe tener los roles de seguridad correctos para recibir notificaciones y enviarse notificaciones a sí mismo o a otros usuarios.

Uso Privilegios de tabla obligatorios
El usuario no tiene una campana de notificación en aplicación y no recibe ninguna notificación en la aplicación Ninguno: privilegio de lectura en la tabla de notificaciones de la aplicación.
El usuario puede recibir notificaciones en aplicación
  • Básico: privilegio de lectura en la tabla de notificaciones de la aplicación.
  • Los privilegios Crear, Lectura, Escritura y Anexar en la configuración de usuario de la aplicación basada en modelo.
  • Privilegios Lectura y Anexar a sobre la definición de configuración.
El usuario puede enviar notificaciones en aplicación a él mismo Básico: privilegios Crear y Lectura en la tabla de notificaciones de la aplicación.
El usuario puede enviar notificaciones en aplicación a otros Privilegio de Lectura con nivel de acceso local, profundo o global en la tabla de notificación de la aplicación según la unidad de negocio del usuario receptor.

Almacenamiento de notificación

La tabla de notificaciones de la aplicación utiliza la capacidad de almacenamiento de la base de datos de la organización. Debido a esto, es importante tener en cuenta el volumen de notificaciones enviadas y la configuración de vencimiento. Más información: capacidad de almacenamiento de Microsoft Dataverse

Ejemplos

Los siguientes ejemplos muestran cómo crear notificaciones que incluyen acciones, definiciones de cuerpo personalizadas e iconos personalizados.

Notificación con una acción que tiene un título y una URL

Este ejemplo muestra cómo crear una notificación agregando un título y una URL al parámetro acciones.

{
  "data": {
    "actions": [
      {
        "title": "Open Bing",
        "data" : {
          "url": "https://bing.com"
        }
      }
    ]
  }
}

Notificación con una acción

Este ejemplo muestra cómo crear una notificación agregando una acción al parámetro acciones.

Notificación de la aplicación con una sola acción.

var systemuserid = "<user-guid>";
var notificationRecord = 
{
    "title": "Congratulations",
     "body": "Your customer rating is now an A. You resolved 80% of your cases within SLA thi week and average customer rating was A+",
     "ownerid@odata.bind": "/systemusers(" + systemuserid + ")",
    "icontype": 100000001, // success
    "data": JSON.stringify({
    "actions": [
     {
        "title": "View cases",
        "data": {
      "url": "?pagetype=entitylist&etn=incident&viewid=00000000-0000-0000-00aa-000010001028&viewType=1039"
      }      
     }
    ]
   })
}
Xrm.WebApi.createRecord("appnotification", notificationRecord).
  then(
      function success(result) {
          console.log("notification created with single action: " + result.id);
      },
      function (error) {
          console.log(error.message);
          // handle error conditions
      }
  );

Notificación con varias acciones

Este ejemplo muestra cómo crear una notificación que incluye varias acciones.

Notificación de aplicación con varias acciones.

// Notification with multiple actions as center dialog 
var systemuserid = "<user-guid>";
var notificationRecord = 
{
    "title": "Upcoming Service Reminder",
     "body": "This is to inform you that you have an upcoming service request for your vehicle.",
     "ownerid@odata.bind": "/systemusers(" + systemuserid + ")",
    "icontype": 100000000, // info
    "data": JSON.stringify({
      "actions": [
       {
        "title": "Coho Winery",
        "data": {
          "url": "?pagetype=entityrecord&etn=account&id=b0a19cdd-88df-e311-b8e5-6c3be5a8b200",
          "navigationTarget": "dialog"
             }      
       },
       {
         "title": "Service Appointment",
        "data": {
          "url": "?pagetype=entityrecord&etn=appointment&id=96db3cf0-e605-ec11-94ef-000d3a36469a",
          "navigationTarget": "dialog"
           }
       }
    ]
   })
}
Xrm.WebApi.createRecord("appnotification",notificationRecord).
  then(
      function success(result) {
          console.log("notification created with multiple actions: " + result.id);
      },
      function (error) {
          console.log(error.message);
          // handle error conditions
      }
  );

Notificación con una definición de cuerpo personalizada

Este ejemplo muestra cómo crear una notificación agregando una definición de cuerpo personalizada que incluye un enlace en línea.

Notificación con un bloque de texto que incluye un enlace en línea.

var systemuserid = "<user-guid>";
var notificationRecord = 
{
    "title": "SLA critical",
   "body": "Records assigned to you is critically past SLA.",
   "ownerid@odata.bind": "/systemusers(" + systemuserid + ")",
    "icontype": 100000002, // failure
    "data": JSON.stringify({
    "body": "Case record [Complete overhaul required (sample)](?pagetype=entityrecord&etn=incident&id=0a9f62a8-90df-e311-9565-a45d36fc5fe8) assigned to you is critically past SLA and has been escalated to your manager."
    })
}
Xrm.WebApi.createRecord("appnotification",notificationRecord).
  then(
      function success(result) {
          console.log("notification created with custom body: " + result.id);
      },
      function (error) {
          console.log(error.message);
          // handle error conditions
      }
  );

A continuación se presenta otro ejemplo de una definición de cuerpo personalizada. Este incluye un enlace en línea y formato en negrita.

Notificación con un bloque de texto que incluye un enlace en línea y texto en negrita.

var systemuserid = "<user-guid>";
var notificationRecord = 
{
    "title": "SLA Missed",
   "body": "Records assigned to you is critically past SLA.",
   "ownerid@odata.bind": "/systemusers(" + systemuserid + ")",
    "icontype": 100000003, // warning
    "data": JSON.stringify({
    "body": "Case record [Average order shipment time (sample)](?pagetype=entityrecord&etn=incident&id=0a9f62a8-90df-e311-9565-a45d36fc5fe8) **assigned** to you just went out of SLA."
    })
}
Xrm.WebApi.createRecord("appnotification",notificationRecord).
then(
      function success(result) {
          console.log("notification created with custom body and bold styling: " + result.id);
      },
      function (error) {
          console.log(error.message);
          // handle error conditions
      }
  );

Notificación con un icono personalizado

Este ejemplo muestra cómo agregar un icono personalizado a una notificación, Dentro de la notificación, establezca iconType en Personalizado y en el cuerpo incluya iconUrl con un valor que apunte a un recurso web. El icono puede ser un tipo de archivo SVG o PNG.

Notificación con un icono personalizado.

var systemuserid = "<user-guid>";
var notificationRecord = 
{
  "title": "Welcome",
  "body": "Welcome to the world of app notifications!",
  "ownerid@odata.bind": "/systemusers(" + systemuserid + ")",
  "icontype": 100000005, // custom
  "data": "{ 'iconUrl': '/WebResources/cr245_AlertOn'}"
}
Xrm.WebApi.createRecord("appnotification", notificationRecord).
  then(
      function success(result) {
          console.log("notification created with custom icon: " + result.id);
      },
      function (error) {
          console.log(error.message);
          // handle error conditions
      }
  );

Notificación con un título y cuerpo personalizados

Este ejemplo agrega un título personalizado y una definición de cuerpo que permite múltiples enlaces, formato en negrita y formato en cursiva.

Notificación que incluye un título personalizado, varios enlaces, texto en negrita y formato de cursiva.

var systemuserid = "<user-guid>";
var notificationRecord = 
{
    "title": "Complete overhaul required (sample)",
   "body": "Maria Campbell mentioned you in a post.",
   "ownerid@odata.bind": "/systemusers(" + systemuserid + ")",
    "icontype": 100000004, // mention
    "data": JSON.stringify({
    "title": "[Complete overhaul required (sample)](?pagetype=entityrecord&etn=incident&id=0a9f62a8-90df-e311-9565-a45d36fc5fe8)",
    "body": "[Maria Campbell](?pagetype=entityrecord&etn=contact&id=43m770h2-6567-ebm1-ob2b-000d3ac3kd6c) mentioned you in a post: _\"**[@Paul](?pagetype=entityrecord&etn=contact&id=03f770b2-6567-eb11-bb2b-000d3ac2be4d)** we need to prioritize this overdue case, [@Robert](?pagetype=entityrecord&etn=contact&id=73f970b2-6567-eb11-bb2b-000d3ac2se4h) will work with you to engage with engineering team ASAP.\"_",
     "actions": [
      {
        "title": "View record",
       "data": {
       "url": "?pagetype=entityrecord&etn=incident&id=0a9f62a8-90df-e311-9565-a45d36fc5fe8"
       }
      }
     ]
    })
}
Xrm.WebApi.createRecord("appnotification",notificationRecord).
  then(
      function success(result) {
          console.log("notification created with custom title and body: " + result.id);
      },
      function (error) {
          console.log(error.message);
          // handle error conditions
      }
  );

Notificaciones en aplicación frente a notificaciones de inserción

El conector de notificación de Power Apps es para notificaciones de inserción, que son independientes de las notificaciones en aplicación. Las notificaciones de inserción solo aparecen en la lista de notificaciones del dispositivo móvil para abrir la aplicación. Las notificaciones en aplicación aparecen cuando la aplicación está abierta. Recomendamos limitar el uso de notificaciones de inserción a elementos de alta prioridad, para evitar abrumar al usuario. Para más información, vaya a: