Exemples de scripts PHP Webhook

December 25, 2022

Si vous êtes déjà familier avec Jotform Webhook, voici des exemples de scripts que vous pouvez essayer. Assurez-vous de mettre à jour les noms de champ de ces scripts avec les noms de champ de votre formulaire.

Notification instantanée par e-mail

Il s’agit d’un script de notification par e-mail pour webhook utilisant la fonction de messagerie intégrée de PHP. Recevez une notification instantanée par e-mail à l’aide de votre serveur d’envoi d’e-mails.

<?php
// Convertir des données JSON en PHP
$result = $_REQUEST['rawRequest'];
$obj = json_decode($result, true);

// Changez avec vos e-mails
$emailfrom = "john@example.com"; // Expéditeur ou De l'e-mail
$emailto = "paul@example.com"; // Destinataire, vous pouvez prédéfinir ou utiliser une valeur de champ, par ex.
 $obj['q4_email']
$subject = "You've got a new submission"; // Titre de l'objet de l'e-mail

// Ne modifiez pas
$id = $_POST['submissionID']; // Obtenir l'ID de soumission
$submissionURL = 'https://www.jotform.com/submission/'.$id; // Construire l'URL de soumission

$headers = "From: " . $emailfrom . "\r\n";
$headers .= "Reply-To: ". $emailfrom . "\r\n"; // Optional
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=utf-8\r\n";

// Nouvelle méthode, obtenir des données à partir de la page des soumissions
$html = new DOMDocument;
$html->loadHTML(file_get_contents($submissionURL));
$body = $html->getElementsByTagName('body')->item(0);
// get html code after the body tag
foreach ($body->childNodes as $child){
    $html->appendChild($html->importNode($child, true));
}
// rendez le tableau réactif pour qu'il apparaisse bien dans les e-mails
$body = $html->getElementsByTagName('table');
foreach ($body as $width) {
    $width->setAttribute('width', '100%');
}
$body = $html->saveHTML();

// Envoyer un e-mail
@mail($emailto, $subject, $body, $headers);
?>

Exemple de résultat de courrier électronique :

Notification par SMS

Envoyez des SMS après la soumission du formulaire à l’aide de l’API de votre fournisseur de SMS.

<?php
// Capturez les valeurs des champs de formulaire
$result = $_REQUEST['rawRequest'];
$obj = json_decode($result, true);

// Remplacez votre clé d'authentification et vos identifiants
$authKey = "your_auth_key";
$senderId = "102234";
$route = "default";

// Remplacez les noms de vos champs de formulaire
$mobileNumber = $obj['q1_mobileNo']; // mobile no. from form data
$message = urlencode($obj['q2_message']); // message from form data

// Préparez vos paramètres de publication
$postData = array(
    'authkey' => $authKey,
    'mobiles' => $mobileNumber,
    'message' => $message,
    'sender' => $senderId,
    'route' => $route
);

// Remplacez votre endpoint API
$url = "http://mysmsapiproviders.com/sendhttp.php";

// initialisez la ressource
$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $postData
    // ,CURLOPT_FOLLOWLOCATION => true
    
));

// Ignorez la vérification du certificat SSL
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

// obtenez une réponse
$output = curl_exec($ch);

// Erreur d'impression le cas échéant
if (curl_errno($ch)) {
    echo 'error:' . curl_error($ch);
}

curl_close($ch);
echo $output;
?>

Formulaire vers MySQL

Envoyez les données du formulaire à votre base de données MySQL.

<?php
// Remplacez par les détails de votre base de données
$servername = "localhost";
$username = "your_username_here";
$password = "your_password_here";
$dbname = "your_dbname_here";
$dbtable = "your_dbtable_here";

// Créez une connexion
$mysqli = new mysqli($servername, $username, $password, $dbname);

// Vérifiez la connexion
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// Obtenez des valeurs de champ à partir du formulaire
// Obtenez un ID de soumission unique - rien à changer ici
$sid = $mysqli->real_escape_string($_REQUEST["submissionID"]);

// Obtenez les valeurs des champs de formulaire et décodez - rien à changer ici
$fieldvalues = $_REQUEST["rawRequest"];
$obj = json_decode($fieldvalues, true);

// Remplacez ici les noms de champs de votre formulaire
$fname = $mysqli->real_escape_string($obj["q15_yourName"][first]);
$lname = $mysqli->real_escape_string($obj["q15_yourName"][last]);
$email = $mysqli->real_escape_string($obj["q16_yourEmail16"]);
$message = $mysqli->real_escape_string($obj["q17_yourMessage"]);

$result = $mysqli->query("SELECT * FROM $dbtable WHERE sid = '$sid'");

// Si l'ID de soumission existe, mettez à jour l'enregistrement...
if ($result->num_rows > 0) {
    $result = $mysqli->query(
        "UPDATE $dbtable SET firstname = '$fname', lastname = '$lname', email = '$email', message = '$message' WHERE sid = '$sid'"
    );
    echo "Existing Record Updated!";
}
// else, insérez un enregistrement
else {
    $result = $mysqli->query(
        "INSERT IGNORE INTO $dbtable (sid, firstname, lastname, email, message) VALUES ('$sid', '$fname', '$lname','$email','$message')"
    );
    echo "New Record Added!";
    if ($result === false) {
        echo "SQL error:" . $mysqli->error;
    }
}

$mysqli->close();
?>

Notificateur de rebond

Recevez une notification en cas d’échec de livraison d’e-mail ou de rebond. Le script suivant utilisera le protocole SMTP de votre hôte Web par défaut pour envoyer des e-mails. Assurez-vous donc que votre hébergeur le prend en charge. Sinon, la fonction de messagerie ne fonctionnera pas.

Ce code nécessite la bibliothèque cliente PHP de la page API Jotform. Placez le fichier JotForm.php dans le même dossier contenant votre fichier PHP de notification de rebond.

<?php
include "JotForm.php";

$jotformAPI = new JotForm("Your Jotform API Key here"); // Put your API Key here
$history = $jotformAPI->getHistory("emails", "lastWeek");
$subid = $_REQUEST["submissionID"];
$submissionURL = "https://www.jotform.com/submission/" . $subid; // Construct submission URL

$limit = 1; // envoyez la dernière notification ayant échoué - augmentez le nombre si vous avez plusieurs notifications

$results = [];

// Vos e-mails ici
$to = "john@example.com"; // Remplacer par l'email de votre destinataire
$from = "paulsmith@example.com"; // Remplacez par votre e-mail DE

// Changez le titre de l'objet si vous le souhaitez
$subject = "Message bounced.";

// Ne modifiez pas
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: <" . $from . ">" . "\r\n";

// Message corporel supplémentaire ici (facultatif)
$msg1 = "Unable to deliver the message to the recipient.";

// Nouvelle méthode, obtenez des données à partir de la page des soumissions
$html = new DOMDocument();
$html->loadHTML(file_get_contents($submissionURL));
$body = $html->getElementsByTagName("body")->item(0);

// Obtenez le code HTML après la balise "body"
foreach ($body->childNodes as $child) {
    $html->appendChild($html->importNode($child, true));
}

// Rendez le tableau réactif pour qu'il apparaisse bien dans les e-mails
$body = $html->getElementsByTagName("table");
foreach ($body as $width) {
    $width->setAttribute("width", "100%");
}

// Ne modifiez rien à partir d'ici à moins que vous ne sachiez ce que vous faites
foreach ($history as $key => $value) {
    if (
        $value["status"] == "IN BOUNCE/BLOCK LIST" ||
        ($value["status"] == "FAILED" && $value["submissionID"] == $subid)
    ) {
        if ($key == $limit - 1) {
            $body = $msg1 . "<br>";
            $body .= $html->saveHTML();
            @mail($to, $subject, $body, $headers);
        }
    }
}
?>

Exemple d’e-mail :

Nous publierons d’autres exemples de temps en temps. Si vous avez des suggestions ou si vous avez besoin d’aide avec Webhook, n’hésitez pas à les publier ci-dessous.

Ce guide vous a-t-il aidé ?
Contacter l'assistance :

Notre équipe d'assistance clientèle est disponible 24 heures sur 24 et 7 jours sur 7 et notre temps de réponse moyen est d'une à deux heures.
Notre équipe peut être contactée via :

Forum d'assistance : https://www.jotform.com/answers/

Contacter l'assistance Jotform : https://www.jotform.com/contact/

Envoyer un commentaire:

Jotform Avatar
Ce site est protégé par reCAPTCHA et la Politique de confidentialité ainsi que Les conditions d'utilisation de Google s'appliquent.

Commentaire:

Podo CommentSoyez le premier à commenter.