Hoy profundizaremos en el uso de la API de 360nrs a través de ejemplos prácticos en C#.
Explicaremos detalladamente cada bloque de código para enviar plantillas de WhatsApp, listar conversaciones, obtener detalles específicos y responder mensajes en conversaciones activas.
Además, se describirán casos de uso y se enfatizarán las mejores prácticas y beneficios técnicos para desarrolladores.
Contenidos
- Envío de plantilla de WhatsApp con C#
- Listado de conversaciones activas con C#
- Mostrar detalles de una conversación específica
- Mostrar los mensajes de una conversación
- Enviar un mensaje a una conversación activa
- Parámetros de la API y ejemplos de uso avanzados
- Buenas prácticas y beneficios técnicos en la integración con C#
Envío de plantilla de WhatsApp con C#
¿Qué hace este código?
Este ejemplo muestra cómo enviar un mensaje basado en una plantilla preaprobada mediante una solicitud POST a la API de WhatsApp de 360nrs. Se utiliza la librería RestSharp para simplificar la construcción y ejecución de la petición HTTP.
El código configura los encabezados necesarios, define el cuerpo de la solicitud en formato JSON y captura la respuesta del servidor.
Código en C#:
using System;
using RestSharp;
namespace HelloWorldApplication {
class HelloWorld {
static void Main(string[] args) {
// Creación del cliente apuntando a la URL de la API de WhatsApp Business de 360nrs
var client = new RestClient("https://dashboard.360nrs.com/api/rest/whatsapp");
client.Timeout = -1;
// Configuración de la solicitud POST
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic YOUR_AUTH_TOKEN");
request.AddHeader("Content-Type", "application/json");
// Definición del cuerpo de la solicitud con la plantilla a enviar
request.AddParameter("application/json", "{ \"templateId\": 123, \"from\": \"34666777555\", \"messages\": [ { \"to\": \"34666555444\" } ] }", ParameterType.RequestBody);
// Ejecución de la solicitud y captura de la respuesta
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
Posibles Respuestas del Servidor:
- 202 Accepted: La solicitud se ha procesado y el mensaje ha sido enviado correctamente.
- 207 Multi-Status: La respuesta contiene múltiples estados, donde algunos mensajes pueden haber fallado.
- 400 Bad Request: Se ha producido un error, por ejemplo, si la plantilla no es válida.
Listado de conversaciones activas con C#
¿Qué hace este código?
Este bloque de código realiza una solicitud GET para obtener un listado de todas las conversaciones activas en la plataforma de WhatsApp de 360nrs. Se configuran los encabezados necesarios y se ejecuta la solicitud para capturar y mostrar el JSON devuelto, que incluye información sobre el remitente, destinatario, número total de mensajes, estado de la sesión y otros metadatos.
Código en C#:
using System;
using RestSharp;
namespace HelloWorldApplication {
class HelloWorld {
static void Main(string[] args) {
// Creación del cliente apuntando al endpoint de conversaciones
var client = new RestClient("https://dashboard.360nrs.com/api/rest/whatsapp/conversations");
client.Timeout = -1;
// Configuración de la solicitud GET
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Basic YOUR_AUTH_TOKEN");
request.AddHeader("Content-Type", "application/json");
// Ejecución de la solicitud y muestra de la respuesta
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
Respuesta de ejemplo:
{
"data": [
{
"from": "34666777555",
"to": "34666555444",
"totalMessages": 10,
"status": "OPEN",
"isSessionActive": true,
"sessionExpiresAt": "2024-01-02T10:00:00+00:00",
"createdAt": "2024-01-01T10:00:00+00:00",
"updatedAt": "2024-01-01T10:00:00+00:00",
"links": {
"messages": "https://dashboard.360nrs.com/api/rest/whatsapp/conversations/34666777555/34666555444/messages"
},
"contact": {
"data": {
"msisdn": "34666555444",
"firstName": "First",
"lastName": "Last",
"email": "email@example.com",
"interest": "Interest example",
"comment": "Comment example",
"country": "ES"
}
}
}
],
"meta": {
"pagination": {
"total": 500,
"count": 100,
"per_page": 100,
"current_page": 1,
"total_pages": 5,
"links": {
"next": "https://dashboard.360nrs.com/api/rest/whatsapp/conversations&page=2"
}
}
}
}
Mostrar detalles de una conversación específica
¿Qué hace este código?
Este ejemplo muestra cómo obtener información detallada de una conversación específica entre dos números.
Se realiza una solicitud GET a un endpoint que incluye el remitente y destinatario, retornando datos como el total de mensajes, estado de la sesión y datos de contacto.
Código en C#:
using System;
using RestSharp;
namespace HelloWorldApplication {
class HelloWorld {
static void Main(string[] args) {
// Endpoint para obtener los detalles de una conversación específica
var client = new RestClient("https://dashboard.360nrs.com/api/rest/whatsapp/conversations/34666777555/34666555444");
client.Timeout = -1;
// Configuración de la solicitud GET
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Basic YOUR_AUTH_TOKEN");
request.AddHeader("Content-Type", "application/json");
// Ejecución de la solicitud y muestra de la respuesta
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
Respuesta de ejemplo:
{
"data": {
"from": "34666777555",
"to": "34666555444",
"totalMessages": 10,
"status": "OPEN",
"isSessionActive": true,
"sessionExpiresAt": "2024-01-02T10:00:00+00:00",
"createdAt": "2024-01-01T10:00:00+00:00",
"updatedAt": "2024-01-01T10:00:00+00:00",
"links": {
"messages": "https://dashboard.360nrs.com/api/rest/whatsapp/conversations/34666777555/34666555444/messages"
},
"contact": {
"data": {
"msisdn": "34666555444",
"firstName": "First",
"lastName": "Last",
"email": "email@example.com",
"interest": "Interest example",
"comment": "Comment example",
"country": "ES"
}
}
}
}
Mostrar los mensajes de una conversación
¿Qué hace este código?
Este fragmento de código utiliza una solicitud GET para obtener todos los mensajes pertenecientes a una conversación entre dos números. La respuesta incluye cada mensaje con detalles como el tipo (texto o plantilla), el contenido, tiempos de envío, entrega y lectura.
Código en C#:
using System;
using RestSharp;
namespace HelloWorldApplication {
class HelloWorld {
static void Main(string[] args) {
// Endpoint para obtener los mensajes de una conversación
var client = new RestClient("https://dashboard.360nrs.com/api/rest/whatsapp/conversations/34666777555/34666555444/messages");
client.Timeout = -1;
// Configuración de la solicitud GET
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Basic YOUR_AUTH_TOKEN");
request.AddHeader("Content-Type", "application/json");
// Ejecución de la solicitud y captura de la respuesta
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
Respuesta de ejemplo:
{
"data": [
{
"id": "f564433e-7cd1-47fa-af98-1bd632411b26",
"type": "text",
"msisdn": "34666555444",
"content": "User response",
"reactions": [],
"sentAt": "2024-01-01T11:00:00+00:00",
"deliveredAt": "2024-01-01T11:00:00+00:00",
"readAt": "2024-01-01T11:01:00+00:00",
"failedAt": null
},
{
"id": "a8249e62-55a8-4f17-bf6c-c7ad2d844374",
"type": "template",
"msisdn": "34666777555",
"content": "Template content",
"reactions": ["👍"],
"sentAt": "2024-01-01T10:00:00+00:00",
"deliveredAt": "2024-01-01T10:00:00+00:00",
"readAt": "2024-01-01T10:01:00+00:00",
"failedAt": null
}
],
"meta": {
"status": "OPEN",
"isSessionActive": true,
"sessionExpiresAt": "2024-01-02T10:00:00+00:00",
"pagination": {
"total": 500,
"count": 100,
"per_page": 100,
"current_page": 1,
"total_pages": 5,
"links": {
"next": "https://dashboard.360nrs.com/api/rest/whatsapp/conversations/34666777555/34666555444/messages&page=2"
}
}
}
}
Enviar un mensaje a una conversación activa
¿Qué hace este código?
Este ejemplo muestra cómo enviar un mensaje de texto a una conversación activa. Se utiliza una solicitud POST al endpoint correspondiente, enviando el contenido del mensaje en el cuerpo de la solicitud.
Es fundamental que la sesión esté activa, lo que se puede comprobar mediante los parámetros isSessionActive
y sessionExpiresAt
.
Código en C#:
using System;
using RestSharp;
namespace HelloWorldApplication {
class HelloWorld {
static void Main(string[] args) {
// Endpoint para enviar un mensaje a una conversación específica
var client = new RestClient("https://dashboard.360nrs.com/api/rest/whatsapp/conversations/34666777555/34666555444/messages");
client.Timeout = -1;
// Configuración de la solicitud POST
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic YOUR_AUTH_TOKEN");
request.AddHeader("Content-Type", "application/json");
// Definición del contenido del mensaje a enviar
request.AddParameter("application/json", "{ \"content\": \"Message content\" }", ParameterType.RequestBody);
// Ejecución de la solicitud y captura de la respuesta
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
Nota:
Solo es posible enviar mensajes a conversaciones con sesión activa. Si la sesión ha expirado, la única opción es enviar una plantilla preaprobada.
Parámetros de la API y ejemplos de uso avanzados
Parámetros clave:
Parámetro | Tipo | Obligatorio | Descripción |
---|---|---|---|
templateId | integer | Sí | ID de la plantilla de WhatsApp. La plantilla debe estar aprobada para su envío desde la plataforma. |
from | string | Sí | Número del remitente, el cual debe estar registrado en la plataforma. |
messages | array | Sí | Lista de mensajes a enviar. |
messages.*.to | string | Sí | Número del destinatario con prefijo internacional. Ejemplo: En España 34666666666 . |
messages.*.headerFields | array | No* | Variables de sustitución para la cabecera de la plantilla (si aplica). |
messages.*.bodyFields | array | No* | Variables de sustitución para el cuerpo del mensaje (si aplica). |
messages.*.callToActionFields | array | No* | Variables para los botones de acción (si aplica). |
campaignName | string | No | Nombre de campaña para agrupar estadísticas en el dashboard. |
tags | array | No | Lista de tags para filtrar estadísticas en el dashboard. |
Ejemplos de envío avanzado:
Envío de plantilla con variables y auto respuestas:
{ "templateId": 123, "from": "34666777555", "messages": [ { "to": "34666555444", "headerFields": ["headerField1"], "bodyFields": ["bodyField1", "bodyField2"], "callToActionFields": ["actionField1"], "defaultAnswer": "Example answer", "buttonAnswers": [ "first button answer", "second button answer" ] } ] }
Envío de plantilla con ubicación:
{ "templateId": 123, "from": "34666777555", "messages": [ { "to": "34666555444", "location": { "lat": "39.92516922986921", "long": "-0.10572674363232447", "name": "NRS-Group", "address": "Carrer, Av. Arcadi Garcia Sanz, 19, 12540 Vila-real, Castelló" } } ] }
Envío de plantilla con código de autenticación:
{ "templateId": 123, "from": "34666777555", "messages": [ { "to": "34666555444", "bodyFields": ["auth_code"] } ] }
Buenas prácticas y beneficios técnicos en la integración con C#
Buenas prácticas:
- Gestión de sesiones:
Asegúrate de verificar que la conversación tenga una sesión activa (isSessionActive
) antes de enviar mensajes. - Manejo de errores:
Implementa bloquestry-catch
y registra logs detallados para capturar errores en la comunicación con la API. - Uso de librerías robustas:
Emplea RestSharp para simplificar la creación y ejecución de solicitudes HTTP en C#. - Optimización de Consultas:
Usa parámetros de filtro, comolimit
, para reducir la carga de datos en las respuestas y mejorar el rendimiento. - Seguridad:
Protege tu token de autenticación utilizando variables de entorno o servicios de gestión de secretos y siempre utiliza HTTPS para las solicitudes.
Beneficios técnicos:
- Eficiencia en la automatización:
La integración con C# permite automatizar el envío de mensajes y la gestión de conversaciones, liberando recursos humanos y reduciendo tiempos de respuesta. - Escalabilidad y flexibilidad:
C# es ideal para construir aplicaciones escalables que se integren con otros sistemas empresariales como CRM, ERP y plataformas de e-commerce. - Monitoreo en tiempo real:
Con la API de 360nrs, puedes obtener estadísticas y reportes en tiempo real para analizar el rendimiento de tus campañas de mensajería.
¡Únete a la revolución de la comunicación empresarial con 360nrs!
La API de WhatsApp Business con C# de 360nrs te brinda la posibilidad de automatizar y gestionar mensajes de manera efectiva, integrándola en tus sistemas para una comunicación fluida y segura.
No esperes más para mejorar la atención al cliente, optimizar procesos y aumentar la conversión de ventas.
Regístrate ahora en 360nrs.com y prueba la API GRATIS para transformar la manera en que tu empresa se comunica. ¡Descubre el poder de una integración robusta con C# y revoluciona tu estrategia de mensajería empresarial!

Jaime Martínez – Product Manager 360NRS
Jaime Martínez, Product Manager en 360NRS, experto en comunicaciones móviles, marketing online, diseño, usabilidad y gestión de producto. Con más de 20 años de experiencia en el sector, Jaime ha liderado el desarrollo y evolución de productos digitales, impulsando estrategias centradas en el usuario que optimizan tanto la experiencia como el rendimiento de las soluciones. Su amplia trayectoria en diseño, marketing digital y gestión de producto aporta una visión estratégica clave para la innovación y el éxito de nuestras soluciones multicanal.
Deja una respuesta