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.
Inicie sesión en Power Apps.
Abra la solución que contiene la aplicación basada en modelo.
Seleccione la aplicación basada en modelo y haga clic en el menú dividido Editar para abrirla utilizando el diseñador de aplicaciones modernas
Abra Configuración y cambie a Próximos
Habilite "Notificaciones en aplicación"

Haga clic en Guardar para guardar los cambios en los parámetros de configuración.
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.

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
appmoduleidno 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 |
|
| Correcto | 100000001 |
|
| Error | 100000002 |
|
| Advertencia | 100000003 |
|
| Mención | 100000004 |
|
| 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.
Cambiar el objetivo de navegación en un enlace de notificació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 |
|
| 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.

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.

// 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.

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.

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.
![]()
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.

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:
- Conector de notificaciones de Power Apps
- Conector V2 de notificaciones de Power Apps
- Crear notificaciones de inserción para Power Apps Mobile
Artículos relacionados
Comentarios
Enviar e ver os comentarios