# Reenvío de alertas a terceros

Desde la configuración de alertas podrás reenviar, en tiempo real, las alertas emitidas por la plataforma a otros terceros. Estos terceros pueden ser un sistema propio de la empresa u otra plataforma.

#### Configuración de reenvío de alertas "Asignar servidor destino"

La opción para configurar el reenvío de alertas se encuentra en el módulo de alertas, en las opciones de arriba a la derecha y se llama "Asignar servidor destino".

[![image-1667840748177.png](https://docs.redgps.com/uploads/images/gallery/2022-11/scaled-1680-/image-1667840748177.png)](https://docs.redgps.com/uploads/images/gallery/2022-11/image-1667840748177.png)Luego de acceder al módulo, debemos definir el servidor destino a dónde queremos que se reenvíen las alertas y además debemos seleccionar que alertas queremos que se envíen al host.  
**IMPORTANTE:** Esta opción de "Asignar servidor destino" solo se encuentra disponible para el distribuidor y para cuando se realiza en login as en un cliente. El cliente final no tendrá acceso a esta opción.

[![image-1667840868465.png](https://docs.redgps.com/uploads/images/gallery/2022-11/scaled-1680-/image-1667840868465.png)](https://docs.redgps.com/uploads/images/gallery/2022-11/image-1667840868465.png)

En la opción de "Historial de envíos" podrás revisar un histórico de todos los envíos realizados de cada alerta y el resultado del mismo.

#### Forma de recibir los datos de las alertas

La plataforma envía cada alerta por medio de una petición HTTP que se realiza al servidor destino.   
La información y datos de la alerta, se envían por medio de datos POST dentro de la petición HTTP.   
Las llaves que recibirán dentro de la petición POST serán las siguientes.  
  
`idalert `  
`device `  
`date `  
`time `  
`description `  
`latitude `  
`longitude `  
`speed `  
`address `  
`vehicle `  
`patent`

**Un ejemplo en lenguaje PHP de la forma de recibir estos datos sería el siguiente**

```PHP
<?php
echo 'idAlert ' .	$_POST["idalert"];
echo 'device ' .	$_POST["device"];
echo 'date ' .		$_POST["date"];
echo 'time ' .		$_POST["time"];
echo 'description '.$_POST["description"];
echo 'position ' .	$_POST["latitude"].','.$_POST["longitude"];
echo 'speed ' .		$_POST["speed"];
echo 'address ' .	$_POST["address"];
echo 'vehicle ' .	$_POST["vehicle"];
echo 'patent ' .	$_POST["patent"];
?>
```

El código anterior es el que debes colocar en tu servidor destino que recibirá las alertas, ejemplo: **https://miservidor.com/receive\_alerts.php** Con el ejemplo anterior debes poder recibir los datos y ya queda de parte de ustedes definir qué acción realizar con la información recibida, como por ejemplo guardarla en una base de datos.

**Ejemplo de como recibir los datos utilizando lenguaje C#**

```C#
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;

namespace DumpHttpRequests
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            if (!HttpListener.IsSupported)
            {
                Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
                return;
            }
            // URI prefixes are required,
            var prefixes = new List<string>() { "http://*:8000/" };

            // Create a listener.
            HttpListener listener = new HttpListener();
            // Add the prefixes.
            foreach (string s in prefixes)
            {
                listener.Prefixes.Add(s);
            }
            listener.Start();
            Console.WriteLine("Listening...");
            while (true)
            {
                // Note: The GetContext method blocks while waiting for a request.
                HttpListenerContext context = listener.GetContext();

                HttpListenerRequest request = context.Request;

                string documentContents;
                using (Stream receiveStream = request.InputStream)
                {
                    using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
                    {
                        documentContents = readStream.ReadToEnd();
                    }
                }
                Console.WriteLine($"Recived request for {request.Url}");
                Console.WriteLine(documentContents);

                // Obtain a response object.
                HttpListenerResponse response = context.Response;
                // Construct a response.
                string responseString = "Respuesta  a la peticion";
                byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
                // Get a response stream and write the response to it.
                response.ContentLength64 = buffer.Length;
                System.IO.Stream output = response.OutputStream;
                output.Write(buffer, 0, buffer.Length);
                // You must close the output stream.
                output.Close();
            }
            listener.Stop();
        }
    }
}
```