# Reenvio de alertas para terceiros

A partir da configuração de alertas, é possível reenviar, em tempo real, os alertas emitidos pela plataforma para terceiros. Esses terceiros podem ser um sistema próprio da empresa ou outra plataforma.

#### Configuração de reenvio de alertas “Atribuir servidor de destino”

A opção para configurar o reenvio de alertas está localizada no módulo de alertas, nas opções do canto superior direito, e se chama “Atribuir servidor de 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)

<article class="text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&:has([data-writing-block])>*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]" data-scroll-anchor="true" data-testid="conversation-turn-28" data-turn="assistant" data-turn-id="33e586fe-4057-4545-978c-fc37cf9dbbc2" dir="auto" tabindex="-1">Após acessar o módulo, devemos definir o servidor de destino para onde desejamos que os alertas sejam reenviados e também selecionar quais alertas queremos que sejam enviados ao host.  
**IMPORTANTE:** essa opção de “Atribuir servidor de destino” está disponível apenas para o distribuidor e quando o acesso é realizado com login como cliente. O cliente final não terá acesso a essa opção.  
  
[![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)

</article>Na opção “Histórico de envios”, será possível consultar um histórico de todos os envios realizados de cada alerta e o respectivo resultado.

#### Forma de receber os dados dos alertas

A plataforma envia cada alerta por meio de uma requisição HTTP realizada ao servidor de destino.  
As informações e os dados do alerta são enviados por meio de dados POST dentro da requisição HTTP.  
As chaves que serão recebidas dentro da requisição POST serão as seguintes.

`idalert `  
`device `  
`date `  
`time `  
`description `  
`latitude `  
`longitude `  
`speed `  
`address `  
`vehicle `  
`patent`

**Um exemplo em linguagem PHP de como receber esses dados seria o seguinte:**

```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"];
?>
```

O código acima é o que você deve colocar no seu servidor de destino que receberá os alertas, por exemplo: **https://miservidor.com/receive\_alerts.php**<a class="decorated-link cursor-pointer" data-end="223" data-start="181" rel="noopener" target="_new">  
</a>Com o exemplo acima, você deve conseguir receber os dados e, a partir daí, fica por conta de vocês definir qual ação realizar com as informações recebidas, como, por exemplo, salvá-las em um banco de dados.

**Exemplo de como receber os dados utilizando a linguagem 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();
        }
    }
}
```