Une présentation de Pushover a été faite dans un précèdent article : Ici

Un projet de test en .Net est disponible sur Github

Client Pushover

La classe PushoverClient permet de se connecter à l’API Pushover, et permet entre autres d’envoyer des notifications.

    public class PushoverClient
    {
        public PushoverResponse SendNotification(string message)
        
        public PushoverResponse SendNotification(PushoverRequest pushoverRequest)
        
        public PushoverEmergencyResponse GetEmergencyStatus(string receiptId) 
        public PushoverCancelEmergencyResponse CancelEmergency(string receiptId) 
    }

Méthode du client Pushover

– SendNotification qui permet d’envoyer une notification sur un ou plusieurs devices.

– GetEmergencyStatus qui permet de récupérer le statut d’une notification de type Ermergency.

– CancelEmergency qui permet d’annuler une notification de type Emergency

Tokens

Il faut renseigner le Token de votre application et le Token de votre user pour pouvoir utiliser l’API (vous les trouverez sur votre compte Pushover)

Si vous utilisez le projet de test fourni, vous devez juste mettre vos Tokens dans le fichier de configuration, à la place du userKey et de la value du token.

<SoftFluent.Presence.Pushover.Configuration.PushoverConfigurationHandler url="https://api.pushover.net/1/{0}.json" userkey="ugpLUPszMqSYTyn62ME..." />
<SoftFluent.Presence.Pushover.Configuration.PushoverTokenConfigurationHandler>
    <token name="presence" value="ac2SzxJVQKqtrnTXgU..." />
</SoftFluent.Presence.Pushover.Configuration.PushoverTokenConfigurationHandler>

Il est possible de définir plusieurs applications dans votre fichier de configuration. Pour cela, il vous faudra modifier le code de l’application.

Format de réponse

Il est possible de spécifier le format des réponses JSON ou XML. Il vous suffit seulement de mettre à la fin de l’URL de l’api Pushover ‘.json’ ou ‘.xml’.

Priorité des messages

Il existe 5 priorités pour l’envoi de message :

public enum PushoverPriorityNotificationType
{
    LowestPriority = -2,
    LowPriority = -1,
    NormalPriority = 0,
    HighPriority = 1,
    EmergencyPriority = 2
}

 

– La priorité ‘LowestPriority’ ne génère aucune alerte sur le device, on peut voir le message dans la file des messages.

– La priorité ‘LowPriority’ envoie un message de priorité faible (pas de son, pas de vibration, seule une notification est affichée sur le device)

– La priorité ‘NormalPriority’ envoie un message avec du son, vibration et notification.

– La priorité ‘HighPriority’ envoie un message qui outrepasse la plage horaire renseignée par l’utilisateur.

– La priorité ‘EmergencyPriority’ envoie un message qui attend une confirmation de l’utilisateur.

Envoi d’une notification

Le code ci-dessous permet d’envoyer le message “first message” sur tous les devices en priorité normale avec comme titre le nom de l’application “Presence” qui a été définie lorsque vous avez déclaré l’application :

PushoverClient client = new PushoverClient();
client.SendNotification("first message");

Request Pushover

La classe PushoverRequest permet de définir un message dans lequel on pourra définir le titre, la priorité, le(s) device(s) de destination, une URL, un son spécifique et les propriétés ‘retry’ et ‘expire’ pour les messages de type ‘Emergency’.

    public class PushoverRequest
    {
        public static PushoverRequest CreateRequest(string message, string title = null, params string[] devices)
        public static PushoverRequest CreateRequest(string message, string title, PushoverPriorityNotificationType priority, params string[] devices)
        public static PushoverRequest CreateRequest(string message, string title, string url, string urlTitle, PushoverPriorityNotificationType priority, params string[] devices)
        public static PushoverRequest CreateRequest(string message, string title, int retry, int expire, params string[] devices)
        public static PushoverRequest CreateRequest(string message, string title, string url, string urlTitle, int retry, int expire, params string[] devices)
        public static PushoverRequest CreateRequest(string message, string title, PushoverPriorityNotificationType priority, PushoverSoundType? sound, params string[] devices)
        public static PushoverRequest CreateRequest(string message, string title, string url, string urlTitle, PushoverPriorityNotificationType priority, PushoverSoundType? sound, params string[] devices)
        public static PushoverRequest CreateRequest(string message, string title, int retry, int expire, PushoverSoundType? sound, params string[] devices)
        public static PushoverRequest CreateRequest(string message, string title, string url, string urlTitle, int? retry, int? expire, PushoverPriorityNotificationType? priority, PushoverSoundType? sound, params string[] devices)
    }

Le code ci-dessous permet d’envoyer le message “second message” seulement sur le device “Tel_Softfluent” avec une priorité faible, le titre du message sera SoftFluent.

PushoverClient client = new PushoverClient();
PushoverRequest request = PushoverRequest.CreateRequest("second message", "SoftFluent", PushoverPriorityNotificationType.LowPriority, "Tel_Softfluent");
client.SendNotification(request);

Emergency

Il est possible d’envoyer une notification de type Emergency. Cette notification va alerter l’utilisateur toutes les X secondes pendant Y secondes jusqu’à ce qu’il valide explicitement la notification en appuyant sur le bouton “validé” de la notification reçue sur un device.

On peut suivre l’état d’une notification Emergency, cela permet de savoir si elle a été validée ou non.

Callback

La classe  “PushoverCallbackService” permet d’avoir un squelette pour utiliser cette fonctionnalité.

Test de la callback

Code C# permettant de démarrer le service de callback :

ServiceHost host = new ServiceHost(typeof(PushoverCallbackService));
host.Open();

La configuration à mettre dans le fichier de configuration :

<configuration>
...
  <system.serviceModel>
    <services>
      <service name="SoftFluent.Presence.Pushover.PushoverCallbackService">
        <endpoint address="http://localhost:8092/PresenceService" behaviorConfiguration="web" binding="webHttpBinding"
          contract="SoftFluent.Presence.Pushover.IPushoverCallbackService" />
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
...
</configuration>

Pour tester que le service est correctement configuré et démarré, on peut utiliser l’extension chrome Sense.

Cela permettra aussi de tester que le service est accessible depuis l’extérieur.

service accessible

Voilà, vous savez tout pour envoyer des notifications sur des devices qui ne nécessitera aucun développement sur les devices cibles.

Ne ratez plus aucune actualité avec la newsletter mensuelle de SoftFluent

Newsletter SoftFluent