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.
Identificateur unique de l'objet.
Date du décès.
Date de naissance.
Si la valeur est à true vous devez cacher la date de naissance sur le site. L'âge ne doit pas être affiché non plus.
Prénom du défunt.
Nom de famille du défunt.
Ville du décès.
Adresse courriel de la famille.
Identificateur unique de la succursale qui s'occupe de l'exposition.
Nom de la succursale qui s'occupe de l'exposition.
Date de l'exposition.
Date des funérailles.
Photo accompagnant l'avis de décès encodé en base 64.
Texte de l'avis de décès en français. Peut contenir du HTML
Texte de l'avis de décès en anglais. Peut contenir du HTML
URL externe lié au défunt (ex: lien vers un organisme, vidéo hommage, etc.)
Utilisé en cas de configuration de messe anniversaire. Nombre d'année depuis le décès.
Texte d'anniversaire de décès en français.
Texte d'anniversaire de décès en anglais.
Texte de remerciements en français.
Texte de remerciements en anglais.
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.
Liste des événements associé au défunt. Peut être vide. Voir la définition de l'objet "events"
Il est possible d'ajouter des champs personnalisés à chaque entreprise. Indiquez-nous vos besoins, et nous pourrons ajouter les champs personnalisés!
Identificateur unique de l'objet.
Titre de l'événement.
Nom du lieu où aura lieu l'événement.
Adresse du lieu de l'événement.
Ville du lieu de l'événement.
Province où l'événement a lieu.
Identificateur unique de l'objet.
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.
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.
$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 : [...]");
}