Passer au contenu principal

Avec les API SMS de Sendapp
vous pouvez automatiser les notifications par SMS
avec n'importe quelle plateforme

Conçu pour les petites et moyennes entreprises,
pour révolutionner la communication avec les clients.

Essai gratuit

Exemple de script WebHook

Créez un script avec le contenu suivant et fournissez son URL en tant que WebHook.

définir("CLÉ API", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

essayer {
    si (isset($_SERVER["HTTP_X_SG_SIGNATURE"])) {
        $hash = base64_encode(hash_hmac('sha256', $_POST["messages"], CLÉ API, vrai));
        si ($hash === $_SERVER["HTTP_X_SG_SIGNATURE"]) {
            $messages = json_decode($_POST["messages"], vrai);

            /**
             * For example :-
             * $messages = [
             *                 0 => [
             *                          "ID" => "1",
             *                          "number" => "+911234567890",
             *                          "message" => "This is a test message.",
             *                          "deviceID" => "1",
             *                          "simSlot" => "0",
             *                          "userID" => "1",
             *                          "status" => "Received",
             *                          "sentDate" => "2018-10-20T00:00:00+02:00",
             *                          "deliveredDate" => "2018-10-20T00:00:00+02:00"
             *                          "groupID" => null
             *                      ]
             *             ]
             *
             * senDate represents the date and time when the message was received on the device.
             * deliveredDate represents the date and time when the message was received by the server.
             */

            pour chaque ($messages comme Message $) {
                si(strtolower(Message $["message"]) === "Salut") {
                    // Répondre au message en utilisant l'API ou exécuter certaines commandes. Les possibilités sont illimitées.
                }
            }
        } autre {
            http_response_code(401);
            error_log(« Les signatures ne correspondent pas ! »);
        }
    } autre {
        http_response_code(400);
        error_log("Signature introuvable !");
    }
} attraper (Exception $e) {
    error_log($e->obtenirMessage());
}

Intégration PHP

Incluez le code suivant dans votre fichier PHP pour commencer à envoyer des messages.

définir("SERVEUR", "https://sms.sendapp.live");
définir("CLÉ API", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

définir("USE_SPECIFIED", 0);
définir("USE_ALL_DEVICES", 1);
définir("USE_ALL_SIMS", 2);

/**
 * @param string     $number   The mobile number where you want to send message.
 * @param string     $message  The message you want to send..
 * @param int|string $device   The ID of a device you want to use to send this message.
 * @param int        $schedule Set it to timestamp when you want to send this message.
 *
 * @return array     Returns The array containing information about the message.
 * @throws Exception If there is an error while sending a message.
 */
fonction sendSingleMessage($numéro, Message $, 1Appareil TP4T = 0, Horaire $ = nul)
{
    $url = SERVEUR . "/services/envoi.php";
    $postData = tableaux('nombre' => $numéro, 'message' => Message $, 'calendrier' => Horaire $, 'clé' => CLÉ API, 'dispositifs' => 1Appareil TP4T);
    retour envoyer une demande($url, $postData)["messages"][0];
}

/**
 * @param array $messages        The array containing numbers and messages.
 * @param int   $option          Set this to USE_SPECIFIED if you want to use devices and SIMs specified in devices argument.
 *                               Set this to USE_ALL_DEVICES if you want to use all available devices and their default SIM to send messages.
 *                               Set this to USE_ALL_SIMS if you want to use all available devices and all their SIMs to send messages.
 * @param array $devices         The array of ID of devices you want to use to send these messages.
 * @param int   $schedule        Set it to timestamp when you want to send these messages.
 * @param bool  $useRandomDevice Set it to true if you want to send messages using only one random device from selected devices.
 *
 * @return array     Returns The array containing messages.
 *                   For example :-
 *                   [
 *                      0 => [
 *                              "ID" => "1",
 *                              "number" => "+911234567890",
 *                              "message" => "This is a test message.",
 *                              "deviceID" => "1",
 *                              "simSlot" => "0",
 *                              "userID" => "1",
 *                              "status" => "Pending",
 *                              "sentDate" => "2018-10-20T00:00:00+02:00",
 *                              "deliveredDate" => null
 *                              "groupID" => ")V5LxqyBMEbQrl9*J$5bb4c03e8a07b7.62193871"
 *                           ]
 *                   ]
 * @throws Exception If there is an error while sending messages.
 */
fonction envoyer des messages($messages, Option $ = USE_SPECIFIED, $appareils = [], Horaire $ = nul, $useRandomDevice = FAUX)
{
    $url = SERVEUR . "/services/envoi.php";
    $postData = [
        'messages' => json_encode($messages),
        'calendrier' => Horaire $,
        'clé' => CLÉ API,
        'dispositifs' => json_encode($appareils),
        'options' => Option $,
        'useRandomDevice' => $useRandomDevice
    ];
    retour envoyer une demande($url, $postData)["messages"];
}

/**
 * @param int    $listID   The ID of the contacts list where you want to send this message.
 * @param string $message  The message you want to send.
 * @param int    $option   Set this to USE_SPECIFIED if you want to use devices and SIMs specified in devices argument.
 *                         Set this to USE_ALL_DEVICES if you want to use all available devices and their default SIM to send messages.
 *                         Set this to USE_ALL_SIMS if you want to use all available devices and all their SIMs to send messages.
 * @param array  $devices  The array of ID of devices you want to use to send the message.
 * @param int    $schedule Set it to timestamp when you want to send this message.
 *
 * @return array     Returns The array containing messages.
 * @throws Exception If there is an error while sending messages.
 */
fonction sendMessageToContactsList($listID, Message $, Option $ = USE_SPECIFIED, $appareils = [], Horaire $ = nul)
{
    $url = SERVEUR . "/services/envoi.php";
    $postData = [
        'listID' => $listID,
        'message' => Message $,
        'calendrier' => Horaire $,
        'clé' => CLÉ API,
        'dispositifs' => json_encode($appareils),
        'options' => Option $
    ];
    retour envoyer une demande($url, $postData)["messages"];
}

/**
 * @param int $id The ID of a message you want to retrieve.
 *
 * @return array     The array containing a message.
 * @throws Exception If there is an error while getting a message.
 */
fonction getMessageByID($id) {
    $url = SERVEUR . "/services/lire-messages.php";
    $postData = [
        'clé' => CLÉ API,
        'identifiant' => $id
    ];
    retour envoyer une demande($url, $postData)["messages"][0];
}

/**
 * @param string $groupID The group ID of messages you want to retrieve.
 *
 * @return array     The array containing messages.
 * @throws Exception If there is an error while getting messages.
 */
fonction getMessagesByGroupID($groupID) {
    $url = SERVEUR . "/services/lire-messages.php";
    $postData = [
        'clé' => CLÉ API,
        'identifiant de groupe' => $groupID
    ];
    retour envoyer une demande($url, $postData)["messages"];
}

/**
 * @param string $status The status of messages you want to retrieve.
 * @param int $startTimestamp Search for messages sent or received after this time.
 * @param int $endTimestamp Search for messages sent or received before this time.
 *
 * @return array     The array containing messages.
 * @throws Exception If there is an error while getting messages.
 */
fonction getMessagesByStatus($statut, $startHorodatage, $endTimestamp)
{
    $url = SERVEUR . "/services/lire-messages.php";
    $postData = [
        'clé' => CLÉ API,
        'statut' => $statut,
        'startTimestamp' => $startHorodatage,
        'horodatage de fin' => $endTimestamp
    ];
    retour envoyer une demande($url, $postData)["messages"];
}

/**
 * @param int $listID       The ID of the contacts list where you want to add this contact.
 * @param string $number    The mobile number of the contact.
 * @param string $name      The name of the contact.
 * @param bool $resubscribe Set it to true if you want to resubscribe this contact if it already exists.
 *
 * @return array     The array containing a newly added contact.
 * @throws Exception If there is an error while adding a new contact.
 */
fonction ajouter le contact($listID, $numéro, $nom = nul, $réabonner = FAUX)
{
    $url = SERVEUR . "/services/gérer-contacts.php";
    $postData = [
        'clé' => CLÉ API,
        'listID' => $listID,
        'nombre' => $numéro,
        'nom' => $nom,
        'réabonner' => $réabonner
    ];
    retour envoyer une demande($url, $postData)["contact"];
}

/**
 * @param int $listID    The ID of the contacts list from which you want to unsubscribe this contact.
 * @param string $number The mobile number of the contact.
 *
 * @return array     The array containing the unsubscribed contact.
 * @throws Exception If there is an error while setting subscription to false.
 */
fonction se désinscrireContact($listID, $numéro)
{
    $url = SERVEUR . "/services/gérer-contacts.php";
    $postData = [
        'clé' => CLÉ API,
        'listID' => $listID,
        'nombre' => $numéro,
        'Se désabonner' => vrai
    ];
    retour envoyer une demande($url, $postData)["contact"];
}

/**
 * @return string    The amount of message credits left.
 * @throws Exception If there is an error while getting message credits.
 */
fonction obtenirBalance()
{
    $url = SERVEUR . "/services/envoi.php";
    $postData = [
        'clé' => CLÉ API,
    ];
    $crédits = envoyer une demande($url, $postData)["crédits"];
    retour est_null($crédits) ? "Illimité" : $crédits;
}

fonction envoyer une demande($url, $postData)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, vrai);
    curl_setopt($ch, CURLOPT_RETURN TRANSFERT, vrai);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
    1TP4Réponse = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    si (curl_errno($ch)) {
        lancer nouveau Exception(curl_error($ch));
    }
    curl_close($ch);
    si ($httpCode == 200) {
        $json = json_decode(1TP4Réponse, vrai);
        si ($json == FAUX) {
            si (vide(1TP4Réponse)) {
                lancer nouveau Exception("Données manquantes dans la demande. Veuillez fournir toutes les informations requises pour envoyer des messages.");
            } autre {
                lancer nouveau Exception(1TP4Réponse);
            }
        } autre {
            si ($json["succès"]) {
                retour $json["date"];
            } autre {
                lancer nouveau Exception($json["erreur"]["message"]);
            }
        }
    } autre {
        lancer nouveau Exception("Code d'erreur HTTP : {$httpCode}");
    }
}

Envoyer un seul message

essayer {
    // Envoie un message à l'aide de l'appareil principal.
    $msg = sendSingleMessage("+911234567890", "Ceci est un test de messages uniques.");

    // Envoie un message en utilisant l'ID de périphérique 1.
    $msg = sendSingleMessage("+911234567890", "Ceci est un test de messages uniques.", 1);
	
    // Envoie un message en utilisant la carte SIM dans l'emplacement 1 de l'ID de périphérique 1 (représenté par "1|0").
    // L'emplacement SIM est un index donc l'index du premier SIM est 0 et l'index du deuxième SIM est 1.
    // Dans cet exemple, 1 représente l'ID de l'appareil et 0 représente l'index de l'emplacement SIM.
    $msg = sendSingleMessage("+911234567890", "Ceci est un test de messages uniques.", "1|0");

    // Envoi d'un message programmé à l'aide de l'appareil principal.
    $msg = sendSingleMessage("+911234567890", "Ceci est un test de la fonctionnalité de planification.", nul, strtotime("+2minutes"));
    print_r($msg);

    écho « Message envoyé avec succès.;
} attraper (Exception $e) {
    écho $e->obtenirMessage();
}

Envoyer des messages en masse

$messages = tableaux();

pour ($i = 1; $i <= 12; $i++) {
    array_push($messages,
        [
            "nombre" => "+911234567890",
            "message" => "Ceci est un test #{$i} de la version PHP. Test de la fonctionnalité des messages en masse."
        ]);
}

essayer {
    // Envoie des messages à l'aide de l'appareil principal.
    envoyer des messages($messages);

    // Envoyer des messages en utilisant la carte SIM par défaut de tous les appareils disponibles. Les messages seront répartis entre tous les appareils.
    envoyer des messages($messages, USE_ALL_DEVICES);
	
    // Envoyez des messages en utilisant toutes les cartes SIM de tous les appareils disponibles. Les messages seront partagés entre toutes les cartes SIM.
    envoyer des messages($messages, USE_ALL_SIMS);

    // Envoie des messages en utilisant uniquement les appareils spécifiés. Les messages seront répartis entre les appareils ou les cartes SIM que vous spécifiez.
    // Si vous envoyez 12 messages à l'aide de ce code, 4 messages seront envoyés par l'ID de l'appareil 1, les 4 autres par la carte SIM dans l'emplacement 1 de 
    // Device ID 2 (représenté par "2|0") et 4 restants par SIM dans l'emplacement 2 de Device ID 2 (représenté par "2|1").
    envoyer des messages($messages, USE_SPECIFIED, [1, "2|0", "2|1"]);
    
    // Envoie des messages dans les délais à l'aide de l'appareil principal.
    envoyer des messages($messages, nul, nul, strtotime("+2minutes"));
    
    // Envoie un message aux contacts de la liste de contacts avec l'ID 1.
    sendMessageToContactsList(1, "Test", USE_SPECIFIED, 1);
    
    // Envoie un message dans les délais aux contacts de la liste de contacts avec l'ID 1.
    $msgs = sendMessageToContactsList(1, "Test", nul, nul, strtotime("+2minutes"));
    
    print_r($msgs);

    écho "Messages groupés envoyés avec succès.";
} attraper (Exception $e) {
    écho $e->obtenirMessage();
}

Obtenez les crédits de message restants

essayer {
    $crédits = obtenirBalance();
    écho "Crédits de message restant : {$credits}";
} attraper (Exception $e) {
    écho $e->obtenirMessage();
}

Obtenir des messages et leur statut actuel

essayer {
    // Récupère un message à l'aide de l'ID.
    $msg = getMessageByID(1);
    print_r($msg);

    // Récupère les messages à l'aide de l'ID de groupe.
    $msgs = getMessagesByGroupID(')V5LxqyBMEbQrl9*J$5bb4c03e8a07b7.62193871');
    print_r($msgs);
    
    // Récupère les messages reçus au cours des dernières 24 heures.
    $msgs = getMessagesByStatus("Reçu", temps() - 86400);
    print_r($msgs);
} attraper (Exception $e) {
    écho $e->obtenirMessage();
}

Gérer les contacts

essayer {
    // Ajouter un nouveau contact à la liste de contacts 1 ou réinscrire le contact s'il existe déjà.
    $contact = ajouter le contact(1, "+911234567890", "Test", vrai);
    print_r($contact);
    
    // Se désabonner du contact en utilisant le numéro de mobile.
    $contact = se désinscrireContact(1, "+911234567890");
    print_r($contact);
} attraper (Exception $e) {
    écho $e->obtenirMessage();
}



Intégration C#

en utilisant Système;
en utilisant Système.Collections.Générique;
en utilisant Système.je;
en utilisant Système.filet;
en utilisant Système.Texte;
en utilisant Système.la toile;
en utilisant Gateway_Sample_Application.Propriétés;
en utilisant newtonsoft.json;
en utilisant newtonsoft.json.Linq;

espaces de noms SMS
{
    statique classe Apis
    {
        privé statique lecture seulement chaîne Serveur = "https://sms.sendapp.live"
        privé statique lecture seulement chaîne clé = "6e1bdb4ed91f3b83071dd5a520c9d226ea19245e";

        public énumération option
        {
            USE_SPECIFIED = 0,
            USE_ALL_DEVICES = 1,
            USE_ALL_SIMS = 2
        }

        ///
        /// Envoyer un message unique à un numéro de mobile spécifique.
        ///
        /// Le numéro de mobile auquel vous souhaitez envoyer un message.
        /// Le message que vous souhaitez envoyer.
        /// L'ID d'un appareil que vous souhaitez utiliser pour envoyer ce message.
        /// Réglez-le sur l'horodatage lorsque vous souhaitez envoyer ce message.
        /// S'il y a une erreur lors de l'envoi d'un message.
        /// Le dictionnaire contenant des informations sur le message.
        public statique Dictionnaire<chaîne, objet> SendSingleMessage(chaîne Numéro, chaîne message, chaîne appareil = "0", long? calendrier = nul)
        {
            var valeurs = nouveau Dictionnaire<chaîne, objet>
            {
                { "nombre", Numéro},
                { "message", message},
                { "calendrier", calendrier },
                { "clé", clé },
                { "dispositifs", appareil }
            };

            retour Obtenir des messages(Avoir une réponse($"{Serveur}/services/envoi.php", valeurs)["messages"])[0];
        }

        ///
        /// Envoyez plusieurs messages à différents numéros mobiles.
        ///
        /// Le tableau contenant les nombres et les messages.
        /// Définissez ceci sur USE_SPECIFIED si vous souhaitez utiliser les appareils et les cartes SIM spécifiés dans l'argument des appareils.
        /// Définissez ceci sur USE_ALL_DEVICES si vous souhaitez utiliser tous les appareils disponibles et leur carte SIM par défaut pour envoyer des messages.
        /// Définissez ceci sur USE_ALL_SIMS si vous souhaitez utiliser tous les appareils disponibles et toutes leurs cartes SIM pour envoyer des messages.
        /// Le tableau d'ID d'appareils que vous souhaitez utiliser pour envoyer ces messages.
        /// Réglez-le sur l'horodatage lorsque vous souhaitez envoyer ce message.
        /// Définissez-le sur true si vous souhaitez envoyer des messages en utilisant un seul appareil aléatoire parmi les appareils sélectionnés.
        /// S'il y a une erreur lors de l'envoi de messages.
        /// Le tableau contenant les messages.
        public statique Dictionnaire<chaîne, objet>[] Envoyer des messages(liste<Dictionnaire<chaîne, chaîne>> messages, option option = option.USE_SPECIFIED, chaîne[] dispositifs = nul, long? calendrier = nul, bourdonner useRandomDevice = FAUX)
        {
            var valeurs = nouveau Dictionnaire<chaîne, objet>
            {
                { "messages", JsonConvert.SerializeObjectSerializeObject(messages)},
                { "calendrier", calendrier },
                { "clé", clé },
                { "dispositifs", dispositifs },
                { "options", (entier) option },
                { "useRandomDevice", useRandomDevice }
            };

            retour Obtenir des messages(Avoir une réponse($"{Serveur}/services/envoi.php", valeurs)["messages"]);
        }

        ///
        /// Envoie un message aux contacts de la liste de contacts spécifiée.
        ///
        /// L'ID de la liste de contacts à laquelle vous souhaitez envoyer ce message.
        /// Le message que vous souhaitez envoyer.
        /// Définissez ceci sur USE_SPECIFIED si vous souhaitez utiliser les appareils et les cartes SIM spécifiés dans l'argument des appareils.
        /// Définissez ceci sur USE_ALL_DEVICES si vous souhaitez utiliser tous les appareils disponibles et leur carte SIM par défaut pour envoyer des messages.
        /// Définissez ceci sur USE_ALL_SIMS si vous souhaitez utiliser tous les appareils disponibles et toutes leurs cartes SIM pour envoyer des messages.
        /// Le tableau d'ID d'appareils que vous souhaitez utiliser pour envoyer ces messages.
        /// Réglez-le sur l'horodatage lorsque vous souhaitez envoyer ce message.
        /// S'il y a une erreur lors de l'envoi de messages.
        /// Le tableau contenant les messages.
        public statique Dictionnaire<chaîne, objet>[] SendMessageToContactsList(entier ID de liste, chaîne message, option option = option.USE_SPECIFIED, chaîne[] dispositifs = nul, long? calendrier = nul)
        {
            var valeurs = nouveau Dictionnaire<chaîne, objet>
            {
                { "listID", ID de liste},
                { "message", message},
                { "calendrier", calendrier },
                { "clé", clé },
                { "dispositifs", dispositifs },
                { "options", (entier) option }
            };

            retour Obtenir des messages(Avoir une réponse($"{Serveur}/services/envoi.php", valeurs)["messages"]);
        }

        ///
        /// Obtenir un message en utilisant l'ID.
        ///
        /// L'ID d'un message que vous souhaitez récupérer.
        /// S'il y a une erreur lors de la réception d'un message.
        /// Le dictionnaire contenant des informations sur le message.
        public statique Dictionnaire<chaîne, objet> GetMessageByID(entier identifiant)
        {
            var valeurs = nouveau Dictionnaire<chaîne, objet>
            {
                { "clé", clé },
                { "identifiant", identifiant }
            };

            retour Obtenir des messages(Avoir une réponse($"{Serveur}/services/read-messages.php", valeurs)["messages"])[0];
        }

        ///
        /// Récupérez les messages à l'aide de l'ID de groupe.
        ///
        /// ID de groupe de messages que vous souhaitez récupérer.
        /// S'il y a une erreur lors de la réception des messages.
        /// Le tableau contenant les messages.
        public statique Dictionnaire<chaîne, objet>[] GetMessagesByGroupID(chaîne ID de groupe)
        {
            var valeurs = nouveau Dictionnaire<chaîne, objet>
            {
                { "clé", clé },
                { "identifiant de groupe", ID de groupe }
            };

            retour Obtenir des messages(Avoir une réponse($"{Serveur}/services/read-messages.php", valeurs)["messages"]);
        }

        ///
        /// Récupère les messages en utilisant le status.
        ///
        /// L'état des messages que vous souhaitez récupérer.
        /// Rechercher les messages envoyés ou reçus après cette heure.
        /// Rechercher les messages envoyés ou reçus avant cette heure.
        /// S'il y a une erreur lors de la réception des messages.
        /// Le tableau contenant les messages.
        public statique Dictionnaire<chaîne, objet>[] GetMessagesByStatus(chaîne statut, long? startTimestamp = nul, long? endTimestamp = nul)
        {
            var valeurs = nouveau Dictionnaire<chaîne, objet>
            {
                { "clé", clé },
                { "statut", statut },
                { "startTimestamp", startTimestamp },
                { "horodatage de fin", endTimestamp }
            };

            retour Obtenir des messages(Avoir une réponse($"{Serveur}/services/read-messages.php", valeurs)["messages"]);
        }
        
        ///
        /// Ajouter un nouveau contact à la liste des contacts.
        ///
        /// L'ID de la liste de contacts où vous souhaitez ajouter ce contact.
        /// Le numéro de portable du contact.
        /// Le nom du contact.
        /// Définissez-le sur true si vous souhaitez réabonner ce contact s'il existe déjà.
        /// Un dictionnaire contenant des détails sur un contact nouvellement ajouté.
        public statique Dictionnaire<chaîne, objet> Ajouter le contact(entier ID de liste, chaîne Numéro, chaîne nom = nul, bourdonner réabonner = FAUX)
        {
            var valeurs = nouveau Dictionnaire<chaîne, objet>
            {
                {"clé", clé},
                {"listID", ID de liste},
                {"nombre", Numéro},
                {"nom", nom},
                {"se réabonner", réabonner ? '1' : '0'},
            };
            JObject jObjet = (JObject) Avoir une réponse($"{Serveur}/services/manage-contacts.php", valeurs)["contact"];
            retour jObjet.VersObjet<Dictionnaire<chaîne, objet>>();
        }
        
        ///
        /// Désinscrire un contact de la liste des contacts.
        ///
        /// L'ID de la liste de contacts à partir de laquelle vous souhaitez désinscrire ce contact.
        /// Le numéro de portable du contact.
        /// Un dictionnaire contenant des détails sur le contact désabonné.
        public statique Dictionnaire<chaîne, objet> DésinscriptionContact(entier ID de liste, chaîne Numéro)
        {
            var valeurs = nouveau Dictionnaire<chaîne, objet>
            {
                {"clé", clé},
                {"listID", ID de liste},
                {"nombre", Numéro},
                {"Se désabonner", '1'}
            };
            JObject jObjet = (JObject)Avoir une réponse($"{Serveur}/services/manage-contacts.php", valeurs)["contact"];
            retour jObjet.VersObjet<Dictionnaire<chaîne, objet>>();
        }
        
        ///
        /// Obtenez les crédits de message restants.
        ///
        /// S'il y a une erreur lors de l'obtention des crédits de message.
        /// Le montant des crédits de message restants.
        public statique chaîne ObtenirBalance()
        {
            var valeurs = nouveau Dictionnaire<chaîne, objet>
            {
                {"clé", clé}
            };
            JTokens crédits = Avoir une réponse($"{Serveur}/services/envoi.php", valeurs)["crédits"];
            si (crédits.Taper != JTokenType.Nul)
            {
                retour crédits.ToString();
            }
            retour "Illimité";
        }

        privé statique Dictionnaire<chaîne, objet>[] Obtenir des messages(JTokens messagesJToken)
        {
            Tableau J jTableau = (Tableau J)messagesJToken;
            var messages = nouveau Dictionnaire<chaîne, objet>[jTableau.Compter];
            pour (var indice = 0; indice < jTableau.Compter; indice++)
            {
                messages[indice] = jTableau[indice].VersObjet<Dictionnaire<chaîne, objet>>();
            }
            retour messages;
        }

        privé statique JTokens Avoir une réponse(chaîne il cria, Dictionnaire<chaîne, objet> postdater)
        {
            var demande = (HttpWebRequest)WebRequest.Créer(il cria);
            var dataString = CreateDataString(postdater);
            var date = codage.UTF8.Obtenir des octets(dataString);

            demande.méthode = "POSTE";
            demande.Type de contenu = "application/x-www-formulaire-urlencodé";
            demande.Longueur du contenu = date.Longueur;
            Gestionnaire de points de service.Attendre100Continuer = vrai;
            Gestionnaire de points de service.Protocole de sécurité = SecurityProtocolTypeSecurityProtocolType.Tls12;
            en utilisant (var flux = demande.GetRequestStream())
            {
                flux.Écrire(date, 0, date.Longueur);
            }

            var réponse = (HttpWebResponse)demande.Avoir une réponse();

            si (réponse.Code d'état == HttpStatusCode.D'accord)
            {
                en utilisant (Lecteur de flux streamReader = nouveau Lecteur de flux(réponse.GetResponseStream()))
                {
                    var jsonResponse = streamReader.LireAFin();
                    essayer
                    {
                        JObject jObjet = JObject.Il semblait(jsonResponse);
                        si ((bourdonner)jObjet["succès"])
                        {
                            retour jObjet["date"];
                        }
                        lancer nouveau Exception(jObjet["erreur"]["message"].ToString());
                    }
                    attraper (JsonReaderException)
                    {
                        si (chaîne.EstNullOuVide(jsonResponse))
                        {
                            lancer nouveau InvalidDataException("Données manquantes dans la demande. Veuillez fournir toutes les informations requises pour envoyer des messages.");
                        }
                        lancer nouveau Exception(jsonResponse);
                    }
                }
            }

            lancer nouveau WebException($"Erreur HTTP : {(int)response.StatusCode} {response.StatusCode}");
        }

        privé statique chaîne CreateDataString(Dictionnaire<chaîne, objet> date)
        {
            Générateur de chaînes dataString = nouveau Générateur de chaînes();
            bourdonner d'abord = vrai;
            pour chaque (var objet dans date)
            {
                si (objet.Valeur != nul)
                {
                    si (d'abord)
                    {
                        d'abord = FAUX;
                    }
                    autre
                    {
                        dataString.annexe("&");
                    }
                    dataString.annexe(HttpUtility.UrlEncode(objet.clé));
                    dataString.annexe("=");
                    dataString.annexe(objet.Valeur est chaîne[]
                        ? HttpUtility.UrlEncode(JsonConvert.SerializeObjectSerializeObject(objet.Valeur))
                        : HttpUtility.UrlEncode(objet.Valeur.ToString()));
                }
            }
            retour dataString.ToString();
        }
    }
}

Envoyer un seul message

essayer
{
    // Envoie un message à l'aide de l'appareil principal.
    SMS.Apis.SendSingleMessage("+911234567890", "Ceci est un test de messages uniques.");

    // Envoie un message en utilisant l'ID de périphérique 1.
    Dictionnaire<chaîne, objet> message = SMS.Apis.SendSingleMessage("+911234567890", "Ceci est un test de messages uniques.", "1");
	
    // Envoie un message en utilisant la carte SIM dans l'emplacement 1 de l'ID de périphérique 1 (représenté par "1|0").
    // L'emplacement SIM est un index donc l'index du premier SIM est 0 et l'index du deuxième SIM est 1.
    // Dans cet exemple, 1 représente l'ID de l'appareil et 0 représente l'index de l'emplacement SIM.
    Dictionnaire<chaîne, objet> message = SMS.Apis.SendSingleMessage("+911234567890", "Ceci est un test de messages uniques.", "1|0");

    // Envoi d'un message programmé à l'aide de l'appareil principal.
    long horodatage = (long) DateHeure.UtcNow.Ajouter des minutes(2).Soustraire(nouveau DateHeure(1970, 1, 1)).TotalSecondes;
    Dictionnaire<chaîne, objet> message = SendSingleMessage(textBoxNumber.Texte, textBoxMessage.Texte, nul, horodatage);
    
    Messagerie.Montre(« Message envoyé avec succès.);
}
attraper (Exception exception)
{
    Messagerie.Montre(exception.message, "!Erreur", MessageBoxButtons.D'accord, MessageBoxIcon.Erreur);
}

Envoyer des messages en masse

liste<Dictionnaire<chaîne, chaîne>> messages = nouveau liste<Dictionnaire<chaîne, chaîne>>();
pour (entier le = 1; le <= 12; le++)
{
    var message = nouveau Dictionnaire<chaîne, chaîne>
    {
        { "nombre", "+911234567890" },
        { "message", "Ceci est un test #{$i} de la version C#. Test de la fonctionnalité des messages en masse." }
    };
    messages.Ajouter(message);
}

essayer
{
    // Envoie des messages à l'aide de l'appareil principal.
    SMS.Apis.Envoyer des messages(messages);

    // Envoyer des messages en utilisant la carte SIM par défaut de tous les appareils disponibles. Les messages seront répartis entre tous les appareils.
    SMS.Apis.Envoyer des messages(messages, SMS.Apis.option.USE_ALL_DEVICES);
	
    // Envoyez des messages en utilisant toutes les cartes SIM de tous les appareils disponibles. Les messages seront partagés entre toutes les cartes SIM.
    SMS.Apis.Envoyer des messages(messages, SMS.Apis.option.USE_ALL_SIMS);

    // Envoie des messages en utilisant uniquement les appareils spécifiés. Les messages seront répartis entre les appareils ou les cartes SIM que vous spécifiez.
    // Si vous envoyez 12 messages à l'aide de ce code, 4 messages seront envoyés par l'ID de l'appareil 1, les 4 autres par la carte SIM dans l'emplacement 1 de 
    // Device ID 2 (représenté par "2|0") et 4 restants par SIM dans l'emplacement 2 de Device ID 2 (représenté par "2|1").
    SMS.Apis.Envoyer des messages(messages, SMS.Apis.option.USE_SPECIFIED, nouveau [] {"1", "2|0", "2|1"});
    
    // Envoie des messages dans les délais à l'aide de l'appareil principal.
    long horodatage = (long) DateHeure.UtcNow.Ajouter des minutes(2).Soustraire(nouveau DateHeure(1970, 1, 1)).TotalSecondes;
    Dictionnaire<chaîne, objet>[] messages = SMS.Apis.Envoyer des messages(messages, option.USE_SPECIFIED, nul, horodatage);
    
    // Envoie un message aux contacts de la liste de contacts avec l'ID 1.
    Dictionnaire<chaîne, objet>[] messages = SMS.Apis.SendMessageToContactsList(1, "Test", SMS.Apis.option.USE_SPECIFIED, nouveau [] {"1"});

    // Envoie un message dans les délais aux contacts de la liste de contacts avec l'ID 1.
    Dictionnaire<chaîne, objet>[] messages = SMS.Apis.SendMessageToContactsList(1, "Essai #1", option.USE_SPECIFIED, nul, horodatage);
    
    Messagerie.Montre("Succès");
}
attraper (Exception exception)
{
    Messagerie.Montre(exception.message, "!Erreur", MessageBoxButtons.D'accord, MessageBoxIcon.Erreur);
}

Obtenez les crédits de message restants

essayer
{
    chaîne crédits = SMS.Apis.ObtenirBalance();
    Messagerie.Montre($"Crédits de message restant : {crédits}");
}
attraper (Exception exception)
{
    Messagerie.Montre(exception.message, "!Erreur", MessageBoxButtons.D'accord, MessageBoxIcon.Erreur);
}

Obtenir des messages et leur statut actuel

essayer 
{
    // Récupère un message à l'aide de l'ID.
    Dictionnaire<chaîne, objet> message = SMS.Apis.GetMessageByID(1);

    // Récupère les messages à l'aide de l'ID de groupe.
    Dictionnaire<chaîne, objet>[] messages = SMS.Apis.GetMessagesByGroupID(")V5LxqyBMEbQrl9*J$5bb4c03e8a07b7.62193871");
    
    // Récupère les messages reçus au cours des dernières 24 heures.
    long horodatage = (long) DateHeure.UtcNow.AjouterHeures(-24).Soustraire(nouveau DateHeure(1970, 1, 1)).TotalSecondes;
    GetMessagesByStatus("Reçu", horodatage);
}
attraper (Exception exception)
{
    Messagerie.Montre(exception.message, "!Erreur", MessageBoxButtons.D'accord, MessageBoxIcon.Erreur);
}

Gérer les contacts

essayer {
    // Ajouter un nouveau contact à la liste de contacts 1 ou réinscrire le contact s'il existe déjà.
    Dictionnaire<chaîne, objet> contact = SMS.Apis.Ajouter le contact(1, "+911234567890", "Essai C#", vrai);
    
    // Se désabonner du contact en utilisant le numéro de mobile.
    Dictionnaire<chaîne, objet> contact = DésinscriptionContact(1, "+911234567890");
}
attraper (Exception exception)
{
    Messagerie.Montre(exception.message, "!Erreur", MessageBoxButtons.D'accord, MessageBoxIcon.Erreur);
}