Références de l'API

L'API de la Console fonctionne par un système de webhook. Les webhooks sont des événements qui notifient votre application lorsque une action est prise dans l'interface de la Console. Plus particulièrement, lorsqu'un utilisateur publie ou supprime un avis de décès dans la Console, un POST est envoyé à l'adresse du webhook correspondant à l'opération désiré. Le webhook doit être pré-configuré par les administrateurs de la Console. Vous pouvez toutefois tester votre implémentation de application en utilisant de le débogueur de webhook.

L'objet "Avis de décès"

Attributs


  • id integer

    Identificateur unique de l'objet.

  • death_date datetime (optionnel)

    Date du décès.

  • birthdate datetime (optionnel)

    Date de naissance.

  • hide_birthdate boolean

    Si la valeur est à true vous devez cacher la date de naissance sur le site. L'âge ne doit pas être affiché non plus.

  • firstname string

    Prénom du défunt.

  • lastname string

    Nom de famille du défunt.

  • city string

    Ville du décès.

  • family_email string

    Adresse courriel de la famille.

  • exposition_branch_id string

    Identificateur unique de la succursale qui s'occupe de l'exposition.

  • exposition_branch_name string

    Nom de la succursale qui s'occupe de l'exposition.

  • exposition_date datetime (optionnel)

    Date de l'exposition.

  • funeral_date datetime (optionnel)

    Date des funérailles.

  • picture string base64

    Photo accompagnant l'avis de décès encodé en base 64.

  • obituary_text_fr string

    Texte de l'avis de décès en français. Peut contenir du HTML

  • obituary_text_en string

    Texte de l'avis de décès en anglais. Peut contenir du HTML

  • tribute_url string

    URL externe lié au défunt (ex: lien vers un organisme, vidéo hommage, etc.)

  • anniversary_years integer (optionnel)

    Utilisé en cas de configuration de messe anniversaire. Nombre d'année depuis le décès.

  • anniversary_text_fr string

    Texte d'anniversaire de décès en français.

  • anniversary_text_en string

    Texte d'anniversaire de décès en anglais.

  • thanks_fr string

    Texte de remerciements en français.

  • thanks_en string

    Texte de remerciements en anglais.

  • secret string

    Chaîne de caractère correspondant au secret de l'entreprise. Validez que le secret fournis dans le payload est le même que celui que vous attendez pour vous assurer d'avoir des données valides provenant de la Console.

  • events event

    Liste des événements associé au défunt. Peut être vide. Voir la définition de l'objet "events"

  • autres ...

    Il est possible d'ajouter des champs personnalisés à chaque entreprise. Indiquez-nous vos besoins, et nous pourrons ajouter les champs personnalisés!

Réponse
JSON

                

L'objet "Event"

Attributs


  • id integer

    Identificateur unique de l'objet.

  • title string

    Titre de l'événement.

  • location_name string

    Nom du lieu où aura lieu l'événement.

  • location_address string

    Adresse du lieu de l'événement.

  • location_city string

    Ville du lieu de l'événement.

  • location_province string

    Province où l'événement a lieu.

Réponse
JSON

                

L'objet "Delete"

Attributs


  • id integer

    Identificateur unique de l'objet.

  • secret string

    Chaîne de caractère correspondant au secret de l'entreprise. Validez que le secret fournis dans le payload est le même que celui que vous attendez pour vous assurer d'avoir des données valides provenant de la Console.

Réponse
JSON

                

Recevoir un avis de décès

Vous pouvez tester votre implémentation de l'envoi d'avis de décès par le débogueur.

Il est recommandé d'enregistrer l'image sur votre serveur en fichier plutôt qu'en base64.


Exemple
$secret = "your-secret-here";

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Aller chercher les données JSON et les décoder.
    $data = json_decode(file_get_contents('php://input'), true);

    //Vérifier si les secrets match
    if($data["secret"] == $secret){
        
        $img = preg_replace('#^data:image/[^;]+;base64,#', '', $data['picture']);
        $fullpath = "/full/path/to/my/obituaries/folder";
        $filename = uniqid() + ".jpg"; //nom aléatoire unique

        // Sauvegarder l'image si elle existe.
        if($img){  
            
            //l'image est un byte[] transformé en base64'
            $imageData = base64_decode($img);
            $file = imagecreatefromstring($imageData);
    
        
            //Crée le dossier s'il n'existe pas. 
            //le 2e param sont les permissions par defaut
            //le 3e param est important, c'est la clause de recursivité qui permet de créer tous les dossier qui manquent dans le chemin, et non-seulement le dernier
            if(!is_dir($fullpath)){
                @mkdir($fullpath, 0777, true);
            }

            //place l'image décodé dans le dossier avec son nouveau nom
            imagejpeg($file, $fullpath."/".$filename, 100);
        }
    
        // TODO : Enregistrer l'avis dans votre base de données.
    
        // Changer l'adresse de retour par une vraie adresse généré dans votre système.
        echo "https://www.example.com/obituary/john-doe";
    }
}
[HttpPost]
[EnableCors("*", "*", "*")]
public ActionResult Endpoint()
{
    Stream req = Request.InputStream;
    req.Seek(0, System.IO.SeekOrigin.Begin);

    string json = new StreamReader(req).ReadToEnd();

    Obituary obituary = JsonConvert.DeserializeObject(json);

    // Vérifier si les secrets match
    if (obituary.Secret == Secret)
    {
        // Enregistre l'image
        if (!string.IsNullOrEmpty(obituary.Picture))
        {
            // Retire le prefix s'il y en a un
            string base64 = obituary.Picture.Split(',').Last();
            // Convertir en array de bytes
            byte[] bytes = Convert.FromBase64String(base64);

            // Convertir les bytes en objet Image.
            using (MemoryStream ms = new MemoryStream(bytes))
            {
                using (Image image = Image.FromStream(ms))
                {
                    // Sauvegarde de l'image
                    string fileName = Guid.NewGuid().ToString().Replace("-", "") + ".jpg"; // Nom aléatoire.
                    string path = Server.MapPath("~/Content/images/" + fileName); // Chemin de l'image
                    image.Save(path, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
            }
        }

        // TODO : Enregistrer l'avis dans votre base de données.

        // Changer l'adresse de retour par une vraie adresse généré dans votre système.
        return Content("https://www.example.com/obituary/john-doe");
    }

    // Retourne un message à afficher à l'utilisateur si c'est pas valide.
    return Content("L'avis n'a pas pu être enregistré pour les raisons suivantes : [...]");
}