WebHook-Beispielskript

Erstellen Sie ein Skript mit dem folgenden Inhalt und geben Sie seine URL als WebHook an.

definieren("API-Schlüssel", "Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

Versuchen {
    wenn (isset($_SERVER["HTTP_X_SG_SIGNATURE"])) {
        $hash = base64_encode(hash_hmac('Sha256', $_POST["Mitteilungen"], API-Schlüssel, falsch));
        wenn ($hash === $_SERVER["HTTP_X_SG_SIGNATURE"]) {
            $messages = json_decode($_POST["Mitteilungen"], falsch);

            / ** * Zum Beispiel: - * $messages = [* 0 => [* "ID" => "1", * "number" => "+911234567890", * "message" => "Dies ist eine Testnachricht . ", *" deviceID "=>" 1 ", *" simSlot "=>" 0 ", *" userID "=>" 1 ", *" status "=>" Received ", *" sentDate "=>" 2018-10-20T00: 00: 00 + 02: 00 ", *" geliefertDatum "=>" 2018-10-20T00: 00: 00 + 02: 00 "*" Gruppen-ID "=> null *] *] * * senDate stellt das Datum und die Uhrzeit dar, zu der die Nachricht auf dem Gerät empfangen wurde. * geliefertDatum gibt das Datum und die Uhrzeit an, zu der die Nachricht vom Server empfangen wurde. * /

            für jedes ($messages wie $message) {
                wenn(strtolower($message["Botschaft"]) === "Hallo") {
                    // Auf eine Nachricht mit der API antworten oder einige Befehle ausführen. Die Möglichkeiten sind grenzenlos.
                }
            }
        } sonst {
            http_response_code(401);
            Fehlerprotokoll("Unterschrift stimmt nicht überein!");
        }
    } sonst {
        http_response_code(400);
        Fehlerprotokoll("Unterschrift nicht gefunden!");
    }
} Fang (Ausnahme $e) {
    Fehlerprotokoll($e->getMessage());
}

PHP-Integration

Fügen Sie folgenden Code in Ihre PHP-Datei ein, um Nachrichten zu senden.

definieren("SERVER", "Https://sms.sendapp.live");
definieren("API-Schlüssel", "Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

definieren("USE_SPECIFIED", 0);
definieren("USE_ALL_DEVICES", 1);
definieren("USE_ALL_SIMS", 2);

/ ** * @param string $number Die Handynummer, an die Sie eine Nachricht senden möchten. * @param string $message Die Nachricht, die Sie senden möchten. * @param int | string $device Die ID eines Geräts, mit dem Sie diese Nachricht senden möchten. * @param int $schedule Setzen Sie den Zeitstempel, wenn Sie diese Nachricht senden möchten. * * @return array Rückgabe Das Array mit Informationen zur Nachricht. * @throws Exception Wenn beim Senden einer Nachricht ein Fehler auftritt. * /
Funktion sendSingleMessage($number, $message, $device = 0, $schedule = Null)
{
    $url = SERVER . "/Services/send.php";
    $postData = Array('Nummer' => $number, 'Botschaft' => $message, "Zeitpläne" => $schedule, 'Schlüssel' => API-Schlüssel, "Geräte" => $device);
    Rückkehr Anfrage senden($url, $postData)["Mitteilungen"][0];
}

/ ** * @param array $messages Das Array mit Zahlen und Nachrichten. * @param int 1TP2 Option Setzen Sie diese Option auf USE_SPECIFIED, wenn Sie Geräte und SIMs verwenden möchten, die im Geräteargument angegeben sind. * Setzen Sie dies auf USE_ALL_DEVICES, wenn Sie alle verfügbaren Geräte und deren Standard-SIM zum Senden von Nachrichten verwenden möchten. * Setzen Sie dies auf USE_ALL_SIMS, wenn Sie alle verfügbaren Geräte und alle ihre SIM-Karten zum Senden von Nachrichten verwenden möchten. * @param array $devices Das Array mit der ID der Geräte, die Sie zum Senden dieser Nachrichten verwenden möchten. * @param int $schedule Setzen Sie den Zeitstempel, wenn Sie diese Nachrichten senden möchten. * @param bool $useRandomDevice Setzen Sie diesen Wert auf true, wenn Sie Nachrichten mit nur einem zufälligen Gerät von ausgewählten Geräten senden möchten. * * @return array Rückgabe Das Array, das Nachrichten enthält. * Zum Beispiel: - * [* 0 => [* "ID" => "1", * "Nummer" => "+911234567890", * "Nachricht" => "Dies ist eine Testnachricht.", * " deviceID "=>" 1 ", *" simSlot "=>" 0 ", *" userID "=>" 1 ", *" status "=>" Pending ", *" sentDate "=>" 2018-10-20T00 : 00: 00 + 02: 00 ", *" geliefertDatum "=> null *" groupID "=>") V5LxqyBMEbQrl9 * J$5bb4c03e8a07b7.621923871 "*] *] * @throws Ausnahme Wenn beim Senden von Nachrichten ein Fehler auftritt. * /
Funktion Sende Nachrichten($messages, $option = USE_SPECIFIED, $-Geräte = [], $schedule = Null, $useRandomDevice = falsch)
{
    $url = SERVER . "/Services/send.php";
    $postData = [
        'Mitteilungen' => json_encode($messages),
        "Zeitpläne" => $schedule,
        'Schlüssel' => API-Schlüssel,
        "Geräte" => json_encode($-Geräte),
        'Möglichkeit' => $option,
        'UseRandomDevice' => $useRandomDevice
    ];
    Rückkehr Anfrage senden($url, $postData)["Mitteilungen"];
}

/ ** * @param int $listID Die ID der Kontaktliste, an die Sie diese Nachricht senden möchten. * @param string $message Die Nachricht, die Sie senden möchten. * @param int 1TP2 Option Setzen Sie diese Option auf USE_SPECIFIED, wenn Sie Geräte und SIMs verwenden möchten, die im Geräteargument angegeben sind. * Setzen Sie dies auf USE_ALL_DEVICES, wenn Sie alle verfügbaren Geräte und deren Standard-SIM zum Senden von Nachrichten verwenden möchten. * Setzen Sie dies auf USE_ALL_SIMS, wenn Sie alle verfügbaren Geräte und alle ihre SIM-Karten zum Senden von Nachrichten verwenden möchten. * @param array $devices Das Array mit der ID der Geräte, die Sie zum Senden der Nachricht verwenden möchten. * @param int $schedule Setzen Sie den Zeitstempel, wenn Sie diese Nachricht senden möchten. * * @return array Rückgabe Das Array, das Nachrichten enthält. * @throws Exception Wenn beim Senden von Nachrichten ein Fehler auftritt. * /
Funktion sendMessageToContactsList($listID, $message, $option = USE_SPECIFIED, $-Geräte = [], $schedule = Null)
{
    $url = SERVER . "/Services/send.php";
    $postData = [
        'Listid' => $listID,
        'Botschaft' => $message,
        "Zeitpläne" => $schedule,
        'Schlüssel' => API-Schlüssel,
        "Geräte" => json_encode($-Geräte),
        'Möglichkeit' => $option
    ];
    Rückkehr Anfrage senden($url, $postData)["Mitteilungen"];
}

/ ** * @param int $id Die ID einer Nachricht, die Sie abrufen möchten. * * @return array Das Array, das eine Nachricht enthält. * @throws Exception Wenn beim Abrufen einer Nachricht ein Fehler auftritt. * /
Funktion getMessageByID($id) {
    $url = SERVER . "/Services/read-messages.php";
    $postData = [
        'Schlüssel' => API-Schlüssel,
        'Ich würde' => $id
    ];
    Rückkehr Anfrage senden($url, $postData)["Mitteilungen"][0];
}

/ ** * @param string $groupID Die Gruppen-ID der Nachrichten, die Sie abrufen möchten. * * @return array Das Array, das Nachrichten enthält. * @throws Exception Wenn beim Abrufen von Nachrichten ein Fehler auftritt. * /
Funktion getMessagesByGroupID($groupID) {
    $url = SERVER . "/Services/read-messages.php";
    $postData = [
        'Schlüssel' => API-Schlüssel,
        'Gruppen-ID' => $groupID
    ];
    Rückkehr Anfrage senden($url, $postData)["Mitteilungen"];
}

/ ** * @param string $status Der Status der Nachrichten, die Sie abrufen möchten. * @param int $startTimestamp Suche nach Nachrichten, die nach dieser Zeit gesendet oder empfangen wurden. * @param int $endTimestamp Suche nach Nachrichten, die vor diesem Zeitpunkt gesendet oder empfangen wurden. * * @return array Das Array, das Nachrichten enthält. * @throws Exception Wenn beim Abrufen von Nachrichten ein Fehler auftritt. * /
Funktion getMessagesByStatus($status, $startTimestamp, $endTimestamp)
{
    $url = SERVER . "/Services/read-messages.php";
    $postData = [
        'Schlüssel' => API-Schlüssel,
        'Status' => $status,
        'StartTimestamp' => $startTimestamp,
        'EndTimestamp' => $endTimestamp
    ];
    Rückkehr Anfrage senden($url, $postData)["Mitteilungen"];
}

/ ** * @param int $listID Die ID der Kontaktliste, in der Sie diesen Kontakt hinzufügen möchten. * @param string $number Die Handynummer des Kontakts. * @param string $name Der Name des Kontakts. * @param bool $resubscribe Setzen Sie diesen Wert auf true, wenn Sie diesen Kontakt erneut abonnieren möchten, falls er bereits vorhanden ist. * * @return array Das Array, das einen neu hinzugefügten Kontakt enthält. * @throws Ausnahme Wenn beim Hinzufügen eines neuen Kontakts ein Fehler auftritt. * /
Funktion Kontakt hinzufügen($listID, $number, $name = Null, $resubscribe = falsch)
{
    $url = SERVER . "/Services/manage-contacts.php";
    $postData = [
        'Schlüssel' => API-Schlüssel,
        'Listid' => $listID,
        'Nummer' => $number,
        'Name' => $name,
        'Erneut abonnieren' => $resubscribe
    ];
    Rückkehr Anfrage senden($url, $postData)["Kontakt"];
}

/ ** * @param int $listID Die ID der Kontaktliste, von der Sie diesen Kontakt abbestellen möchten. * @param string $number Die Handynummer des Kontakts. * * @return array Das Array, das den nicht abonnierten Kontakt enthält. * @throws Exception Wenn beim Setzen des Abonnements auf false ein Fehler auftritt. * /
Funktion abbestellenKontakt($listID, $number)
{
    $url = SERVER . "/Services/manage-contacts.php";
    $postData = [
        'Schlüssel' => API-Schlüssel,
        'Listid' => $listID,
        'Nummer' => $number,
        'Abmelden' => falsch
    ];
    Rückkehr Anfrage senden($url, $postData)["Kontakt"];
}

/ ** * @return string Die Anzahl der verbleibenden Nachrichtenguthaben. * @throws Ausnahme Wenn beim Abrufen von Nachrichtenguthaben ein Fehler auftritt. * /
Funktion getBalance()
{
    $url = SERVER . "/Services/send.php";
    $postData = [
        'Schlüssel' => API-Schlüssel,
    ];
    $credits = Anfrage senden($url, $postData)["Credits"];
    Rückkehr ist Null($credits) ? "Unbegrenzt" : $credits;
}

Funktion Anfrage senden($url, $postData)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, falsch);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, falsch);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    wenn (curl_errno($ch)) {
        werfen Neu Ausnahme(curl_error($ch));
    }
    curl_close($ch);
    wenn ($httpCode == 200) {
        $json = json_decode($response, falsch);
        wenn ($json == falsch) {
            wenn (leer($response)) {
                werfen Neu Ausnahme("Fehlende Daten auf Anfrage. Bitte geben Sie alle erforderlichen Informationen zum Senden von Nachrichten an.");
            } sonst {
                werfen Neu Ausnahme($response);
            }
        } sonst {
            wenn ($json["Erfolg"]) {
                Rückkehr $json["Datum"];
            } sonst {
                werfen Neu Ausnahme($json["Error"]["Botschaft"]);
            }
        }
    } sonst {
        werfen Neu Ausnahme("HTTP-Fehlercode: {$httpCode}");
    }
}

Einzelne Nachricht senden

Versuchen {
    // Eine Nachricht mit dem primären Gerät senden.
    $msg = sendSingleMessage("+911234567890", "Dies ist ein Test für eine einzelne Nachricht.");

    // Eine Nachricht mit der Geräte-ID 1 senden.
    $msg = sendSingleMessage("+911234567890", "Dies ist ein Test für eine einzelne Nachricht.", 1);
	
    // Senden Sie eine Nachricht über die SIM-Karte in Steckplatz 1 der Geräte-ID 1 (dargestellt als "1 | 0").
    // Der SIM-Steckplatz ist ein Index, daher ist der Index der ersten SIM-Karte 0 und der Index der zweiten SIM-Karte 1.
    // In diesem Beispiel steht 1 für die Geräte-ID und 0 für den SIM-Steckplatzindex.
    $msg = sendSingleMessage("+911234567890", "Dies ist ein Test für eine einzelne Nachricht.", "1|0");

    // Geplante Nachricht mit dem primären Gerät senden.
    $msg = sendSingleMessage("+911234567890", "Dies ist ein Test der Zeitplanfunktion.", Null, strtotime("+2 Minuten"));
    print_r($msg);

    Echo "Erfolgreich eine Nachricht gesendet.";
} Fang (Ausnahme $e) {
    Echo $e->getMessage();
}

Massenmeldungen senden

$messages = Array();

zum ($i = 1; $i <= 12; $i++) {
    array_push($messages,
        [
            "Nummer" => "+911234567890",
            "Botschaft" => "Dies ist ein Test # {$i} der PHP-Version. Testen der Funktionalität von Massennachrichten."
        ]);
}

Versuchen {
    // Nachrichten mit dem primären Gerät senden.
    Sende Nachrichten($messages);

    // Nachrichten mit Standard-SIM aller verfügbaren Geräte senden. Nachrichten werden auf alle Geräte aufgeteilt.
    Sende Nachrichten($messages, USE_ALL_DEVICES);
	
    // Nachrichten mit allen SIM-Karten aller verfügbaren Geräte senden. Nachrichten werden auf alle SIM-Karten aufgeteilt.
    Sende Nachrichten($messages, USE_ALL_SIMS);

    // Nachrichten nur mit angegebenen Geräten senden. Nachrichten werden zwischen den von Ihnen angegebenen Geräten oder SIM-Karten aufgeteilt.
    // Wenn Sie 12 Nachrichten mit diesem Code senden, werden 4 Nachrichten von der Geräte-ID 1 und 4 von der SIM-Karte in Steckplatz 1 von gesendet 
    // Geräte-ID 2 (dargestellt als "2 | 0") und verbleibende 4 von SIM in Steckplatz 2 von Geräte-ID 2 (dargestellt als "2 | 1").
    Sende Nachrichten($messages, USE_SPECIFIED, [1, "2|0", "2|1"]);
    
    // Nachrichten termingerecht mit dem primären Gerät senden.
    Sende Nachrichten($messages, Null, Null, strtotime("+2 Minuten"));
    
    // Eine Nachricht an Kontakte in der Kontaktliste mit der ID 1 senden.
    sendMessageToContactsList(1, "Prüfung", USE_SPECIFIED, 1);
    
    // Nachricht pünktlich an Kontakte in der Kontaktliste mit der ID 1 senden.
    $msgs = sendMessageToContactsList(1, "Prüfung", Null, Null, strtotime("+2 Minuten"));
    
    print_r($msgs);

    Echo "Erfolgreich gesendete Massennachrichten.";
} Fang (Ausnahme $e) {
    Echo $e->getMessage();
}

Erhalten Sie die verbleibenden Nachrichtenguthaben

Versuchen {
    $credits = getBalance();
    Echo "Verbleibende Nachrichten-Credits: {$credits}";
} Fang (Ausnahme $e) {
    Echo $e->getMessage();
}

Erhalten Sie Nachrichten und ihren aktuellen Status

Versuchen {
    // Eine Nachricht mit der ID abrufen.
    $msg = getMessageByID(1);
    print_r($msg);

    // Nachrichten mit der Gruppen-ID abrufen.
    $msgs = getMessagesByGroupID(') * V5LxqyBMEbQrl9 J$5bb4c03e8a07b7.62193871');
    print_r($msgs);
    
    // Nachrichten erhalten, die in den letzten 24 Stunden empfangen wurden.
    $msgs = getMessagesByStatus("Empfangen", Zeit() - 86400);
    print_r($msgs);
} Fang (Ausnahme $e) {
    Echo $e->getMessage();
}

Kontakte verwalten

Versuchen {
    // Fügen Sie einen neuen Kontakt zur Kontaktliste 1 hinzu oder abonnieren Sie den Kontakt erneut, falls er bereits vorhanden ist.
    $contact = Kontakt hinzufügen(1, "+911234567890", "Prüfung", falsch);
    print_r($contact);
    
    // Einen Kontakt mit der Handynummer abbestellen.
    $contact = abbestellenKontakt(1, "+911234567890");
    print_r($contact);
} Fang (Ausnahme $e) {
    Echo $e->getMessage();
}



C#-Integration

mit System;
mit System.Sammlungen.Generisch;
mit System.ich;
mit System.Netz;
mit System.Text;
mit System.Netz;
mit Gateway_Sample_Application.Eigenschaften;
mit Newtonsoft.jSON;
mit Newtonsoft.jSON.Linq;

Namespace SMS
{
    statisch Klasse API
    {
        Privat statisch schreibgeschützt Zeichenfolge Server = "Https://sms.sendapp.live"
        Privat statisch schreibgeschützt Zeichenfolge Schlüssel = 6e1bdb4ed91f3b83071dd5a520c9d226ea19245e;

        Öffentlichkeit Aufzählung Möglichkeit
        {
            USE_SPECIFIED = 0,
            USE_ALL_DEVICES = 1,
            USE_ALL_SIMS = 2
        }

        /// 
        /// Einzelne Nachricht an bestimmte Handynummer senden.
        /// 
        ///  Die Handynummer, an die Sie eine Nachricht senden möchten. 
        ///  Die Nachricht, die Sie senden möchten. 
        ///  Die ID eines Geräts, mit dem Sie diese Nachricht senden möchten. 
        ///  Stellen Sie den Zeitstempel ein, wenn Sie diese Nachricht senden möchten. 
        ///  Wenn beim Senden einer Nachricht ein Fehler auftritt. 
        ///  Das Wörterbuch mit Informationen zur Nachricht. 
        Öffentlichkeit statisch Wörterbuch<Zeichenfolge, Objekt> SendSingleMessage(Zeichenfolge Nummer, Zeichenfolge Botschaft, Zeichenfolge Gerät = "0", lange? Zeitplan = Null)
        {
            var Werte = Neu Wörterbuch<Zeichenfolge, Objekt>
            {
                { "Nummer", Nummer},
                { "Botschaft", Botschaft},
                { "Zeitplan", Zeitplan },
                { "Schlüssel", Schlüssel },
                { "Geräte", Gerät }
            };

            Rückkehr getMessages(Erhalten Antwort($"{Server} /services/send.php", Werte)["Mitteilungen"])[0];
        }

        /// 
        /// Mehrere Nachrichten an verschiedene Handynummern senden.
        /// 
        ///  Das Array mit Zahlen und Nachrichten. 
        ///  Setzen Sie dies auf USE_SPECIFIED, wenn Sie Geräte und SIMs verwenden möchten, die im Geräteargument angegeben sind.
        /// Setzen Sie dies auf USE_ALL_DEVICES, wenn Sie alle verfügbaren Geräte und deren Standard-SIM zum Senden von Nachrichten verwenden möchten.
        /// Setzen Sie dies auf USE_ALL_SIMS, wenn Sie alle verfügbaren Geräte und alle ihre SIM-Karten zum Senden von Nachrichten verwenden möchten. 
        ///  Das Array der ID der Geräte, die Sie zum Senden dieser Nachrichten verwenden möchten. 
        ///  Stellen Sie den Zeitstempel ein, wenn Sie diese Nachricht senden möchten. 
        ///  Setzen Sie es auf true, wenn Sie Nachrichten mit nur einem zufälligen Gerät von ausgewählten Geräten senden möchten. 
        ///  Wenn beim Senden von Nachrichten ein Fehler auftritt. 
        ///  Das Array mit Nachrichten. 
        Öffentlichkeit statisch Wörterbuch<Zeichenfolge, Objekt> [] Sende Nachrichten(aufführen<Wörterbuch<Zeichenfolge, Zeichenfolge>> Mitteilungen, Möglichkeit Optionen = Möglichkeit.USE_SPECIFIED, Zeichenfolge[] Geräte = Null, lange? Zeitplan = Null, Bool useRandomDevice = falsch)
        {
            var Werte = Neu Wörterbuch<Zeichenfolge, Objekt>
            {
                { "Mitteilungen", JsonConvert.SerializeObject(Mitteilungen)},
                { "Zeitplan", Zeitplan },
                { "Schlüssel", Schlüssel },
                { "Geräte", Geräte },
                { "Möglichkeit", (int) Optionen },
                { "UseRandomDevice", useRandomDevice }
            };

            Rückkehr getMessages(Erhalten Antwort($"{Server} /services/send.php", Werte)["Mitteilungen"]);
        }

        /// 
        /// Senden Sie eine Nachricht an Kontakte in der angegebenen Kontaktliste.
        /// 
        ///  Die ID der Kontaktliste, an die Sie diese Nachricht senden möchten. 
        ///  Die Nachricht, die Sie senden möchten. 
        ///  Setzen Sie dies auf USE_SPECIFIED, wenn Sie Geräte und SIMs verwenden möchten, die im Geräteargument angegeben sind.
        /// Setzen Sie dies auf USE_ALL_DEVICES, wenn Sie alle verfügbaren Geräte und deren Standard-SIM zum Senden von Nachrichten verwenden möchten.
        /// Setzen Sie dies auf USE_ALL_SIMS, wenn Sie alle verfügbaren Geräte und alle ihre SIM-Karten zum Senden von Nachrichten verwenden möchten. 
        ///  Das Array der ID der Geräte, die Sie zum Senden dieser Nachrichten verwenden möchten. 
        ///  Stellen Sie den Zeitstempel ein, wenn Sie diese Nachricht senden möchten. 
        ///  Wenn beim Senden von Nachrichten ein Fehler auftritt. 
        ///  Das Array mit Nachrichten. 
        Öffentlichkeit statisch Wörterbuch<Zeichenfolge, Objekt> [] SendMessageToContactsList(int listid, Zeichenfolge Botschaft, Möglichkeit Optionen = Möglichkeit.USE_SPECIFIED, Zeichenfolge[] Geräte = Null, lange? Zeitplan = Null)
        {
            var Werte = Neu Wörterbuch<Zeichenfolge, Objekt>
            {
                { "Listid", listid},
                { "Botschaft", Botschaft},
                { "Zeitplan", Zeitplan },
                { "Schlüssel", Schlüssel },
                { "Geräte", Geräte },
                { "Möglichkeit", (int) Optionen }
            };

            Rückkehr getMessages(Erhalten Antwort($"{Server} /services/send.php", Werte)["Mitteilungen"]);
        }

        /// 
        /// Eine Nachricht mit der ID abrufen.
        /// 
        ///  Die ID einer Nachricht, die Sie abrufen möchten. 
        ///  Wenn beim Abrufen einer Nachricht ein Fehler auftritt. 
        ///  Das Wörterbuch mit Informationen zur Nachricht. 
        Öffentlichkeit statisch Wörterbuch<Zeichenfolge, Objekt> GetMessageByID(int Ich würde)
        {
            var Werte = Neu Wörterbuch<Zeichenfolge, Objekt>
            {
                { "Schlüssel", Schlüssel },
                { "Ich würde", Ich würde }
            };

            Rückkehr getMessages(Erhalten Antwort($"{Server} /services/read-messages.php", Werte)["Mitteilungen"])[0];
        }

        /// 
        /// Nachrichten mit der Gruppen-ID abrufen.
        /// 
        ///  Die Gruppen-ID der Nachrichten, die Sie abrufen möchten. 
        ///  Wenn beim Abrufen von Nachrichten ein Fehler auftritt. 
        ///  Das Array mit Nachrichten. 
        Öffentlichkeit statisch Wörterbuch<Zeichenfolge, Objekt> [] GetMessagesByGroupID(Zeichenfolge Gruppen-ID)
        {
            var Werte = Neu Wörterbuch<Zeichenfolge, Objekt>
            {
                { "Schlüssel", Schlüssel },
                { "Gruppen-ID", Gruppen-ID }
            };

            Rückkehr getMessages(Erhalten Antwort($"{Server} /services/read-messages.php", Werte)["Mitteilungen"]);
        }

        /// 
        /// Nachrichten mit dem Status abrufen.
        /// 
        ///  Der Status der Nachrichten, die Sie abrufen möchten. 
        ///  Suchen Sie nach Nachrichten, die nach dieser Zeit gesendet oder empfangen wurden. 
        ///  Suchen Sie nach Nachrichten, die vor diesem Zeitpunkt gesendet oder empfangen wurden. 
        ///  Wenn beim Abrufen von Nachrichten ein Fehler auftritt. 
        ///  Das Array mit Nachrichten. 
        Öffentlichkeit statisch Wörterbuch<Zeichenfolge, Objekt> [] GetMessagesByStatus(Zeichenfolge Status, lange? startTimestamp = Null, lange? endTimestamp = Null)
        {
            var Werte = Neu Wörterbuch<Zeichenfolge, Objekt>
            {
                { "Schlüssel", Schlüssel },
                { "Status", Status },
                { "StartTimestamp", startTimestamp },
                { "EndTimestamp", endTimestamp }
            };

            Rückkehr getMessages(Erhalten Antwort($"{Server} /services/read-messages.php", Werte)["Mitteilungen"]);
        }
        
        /// 
        /// Neuen Kontakt zur Kontaktliste hinzufügen.
        /// 
        ///  Die ID der Kontaktliste, in der Sie diesen Kontakt hinzufügen möchten. 
        ///  Die Handynummer des Kontakts. 
        ///  Der Name des Kontakts. 
        ///  Setzen Sie es auf true, wenn Sie diesen Kontakt erneut abonnieren möchten, falls er bereits vorhanden ist. 
        ///  Ein Wörterbuch mit Details zu einem neu hinzugefügten Kontakt. 
        Öffentlichkeit statisch Wörterbuch<Zeichenfolge, Objekt> Kontakt hinzufügen(int listid, Zeichenfolge Nummer, Zeichenfolge Name = Null, Bool erneut abonnieren = falsch)
        {
            var Werte = Neu Wörterbuch<Zeichenfolge, Objekt>
            {
                {"Schlüssel", Schlüssel},
                {"Listid", listid},
                {"Nummer", Nummer},
                {"Name", Name},
                {"Erneut abonnieren", erneut abonnieren ? '1' : '0'},
            };
            Jobobjekt Jobobjekt = (Jobobjekt) Erhalten Antwort($"{Server} /services/manage-contacts.php", Werte)["Kontakt"];
            Rückkehr Jobobjekt.ToObject<Wörterbuch<Zeichenfolge, Objekt>> ();
        }
        
        /// 
        /// Einen Kontakt von der Kontaktliste abbestellen.
        /// 
        ///  Die ID der Kontaktliste, von der Sie diesen Kontakt abbestellen möchten. 
        ///  Die Handynummer des Kontakts. 
        ///  Ein Wörterbuch mit Details zum abgemeldeten Kontakt. 
        Öffentlichkeit statisch Wörterbuch<Zeichenfolge, Objekt> AbbestellenKontakt(int listid, Zeichenfolge Nummer)
        {
            var Werte = Neu Wörterbuch<Zeichenfolge, Objekt>
            {
                {"Schlüssel", Schlüssel},
                {"Listid", listid},
                {"Nummer", Nummer},
                {"Abmelden", '1'}
            };
            Jobobjekt Jobobjekt = (Jobobjekt)Erhalten Antwort($"{Server} /services/manage-contacts.php", Werte)["Kontakt"];
            Rückkehr Jobobjekt.ToObject<Wörterbuch<Zeichenfolge, Objekt>> ();
        }
        
        /// 
        /// Restliche Nachrichtenguthaben abrufen.
        /// 
        ///  Wenn beim Abrufen von Nachrichtenguthaben ein Fehler auftritt. 
        ///  Die Anzahl der verbleibenden Nachrichtenguthaben. 
        Öffentlichkeit statisch Zeichenfolge GetBalance()
        {
            var Werte = Neu Wörterbuch<Zeichenfolge, Objekt>
            {
                {"Schlüssel", Schlüssel}
            };
            JToken Credits = Erhalten Antwort($"{Server} /services/send.php", Werte)["Credits"];
            wenn (Credits.Art != JTokenType.Null)
            {
                Rückkehr Credits.ToString();
            }
            Rückkehr "Unbegrenzt";
        }

        Privat statisch Wörterbuch<Zeichenfolge, Objekt> [] getMessages(JToken messagesJToken)
        {
            JArray jArray = (JArray)messagesJToken;
            var Mitteilungen = Neu Wörterbuch<Zeichenfolge, Objekt> [jArray.Anzahl];
            zum (var Index = 0; Index < jArray.Anzahl; Index++)
            {
                Mitteilungen[Index] = jArray[Index].ToObject<Wörterbuch<Zeichenfolge, Objekt>> ();
            }
            Rückkehr Mitteilungen;
        }

        Privat statisch JToken Erhalten Antwort(Zeichenfolge URL, Wörterbuch<Zeichenfolge, Objekt> Post-Daten)
        {
            var Anfrage = (HttpWebRequest)WebRequest.Erstellen(URL);
            var Datastring = CreateDataString(Post-Daten);
            var Datum = Codierung.UTF8.GetBytes(Datastring);

            Anfrage.Methode = "POST";
            Anfrage.Inhaltstyp = "Anwendung / x-www-form-urlencoded";
            Anfrage.Inhaltslänge = Datum.Länge;
            ServicePointManager.Expect100Continue = falsch;
            ServicePointManager.Sicherheitsprotokoll = SecurityProtocolType.Tls12;
            mit (var Strom = Anfrage.GetRequestStream())
            {
                Strom.Schreiben(Datum, 0, Datum.Länge);
            }

            var Antwort = (HttpWebResponse)Anfrage.Erhalten Antwort();

            wenn (Antwort.Statuscode == HttpStatusCode.Ok)
            {
                mit (StreamReader StreamReader = Neu StreamReader(Antwort.GetResponseStream()))
                {
                    var jsonResponse = StreamReader.ReadToEnd();
                    Versuchen
                    {
                        Jobobjekt Jobobjekt = Jobobjekt.Analysieren(jsonResponse);
                        wenn ((Bool)Jobobjekt["Erfolg"])
                        {
                            Rückkehr Jobobjekt["Datum"];
                        }
                        werfen Neu Ausnahme(Jobobjekt["Error"]["Botschaft"].ToString());
                    }
                    Fang (JsonReaderException)
                    {
                        wenn (Zeichenfolge.IsNullOrEmpty(jsonResponse))
                        {
                            werfen Neu InvalidDataException("Fehlende Daten auf Anfrage. Bitte geben Sie alle erforderlichen Informationen zum Senden von Nachrichten an.");
                        }
                        werfen Neu Ausnahme(jsonResponse);
                    }
                }
            }

            werfen Neu WebException($"HTTP-Fehler: {(int) response.StatusCode} {response.StatusCode}");
        }

        Privat statisch Zeichenfolge CreateDataString(Wörterbuch<Zeichenfolge, Objekt> Datum)
        {
            StringBuilder Datastring = Neu StringBuilder();
            Bool zuerst = falsch;
            für jedes (var obj im Datum)
            {
                wenn (obj.Wert != Null)
                {
                    wenn (zuerst)
                    {
                        zuerst = falsch;
                    }
                    sonst
                    {
                        Datastring.Anhängen("&");
                    }
                    Datastring.Anhängen(HttpUtility.UrlEncode(obj.Schlüssel));
                    Datastring.Anhängen("=");
                    Datastring.Anhängen(obj.Wert ist Zeichenfolge[]
                        ? HttpUtility.UrlEncode(JsonConvert.SerializeObject(obj.Wert))
                        : HttpUtility.UrlEncode(obj.Wert.ToString()));
                }
            }
            Rückkehr Datastring.ToString();
        }
    }
}

Einzelne Nachricht senden

Versuchen
{
    // Eine Nachricht mit dem primären Gerät senden.
    SMS.API.SendSingleMessage("+911234567890", "Dies ist ein Test für eine einzelne Nachricht.");

    // Eine Nachricht mit der Geräte-ID 1 senden.
    Wörterbuch<Zeichenfolge, Objekt> Botschaft = SMS.API.SendSingleMessage("+911234567890", "Dies ist ein Test für eine einzelne Nachricht.", "1");
	
    // Senden Sie eine Nachricht über die SIM-Karte in Steckplatz 1 der Geräte-ID 1 (dargestellt als "1 | 0").
    // Der SIM-Steckplatz ist ein Index, daher ist der Index der ersten SIM-Karte 0 und der Index der zweiten SIM-Karte 1.
    // In diesem Beispiel steht 1 für die Geräte-ID und 0 für den SIM-Steckplatzindex.
    Wörterbuch<Zeichenfolge, Objekt> Botschaft = SMS.API.SendSingleMessage("+911234567890", "Dies ist ein Test für eine einzelne Nachricht.", "1|0");

    // Geplante Nachricht mit dem primären Gerät senden.
    lange Zeitstempel = (lange) Terminzeit.UtcNow.AddMinutes(2).Subtrahieren(Neu Terminzeit(1970, 1, 1)).Gesamtsekunden;
    Wörterbuch<Zeichenfolge, Objekt> Botschaft = SendSingleMessage(textBoxNumber.Text, textBoxMessage.Text, Null, Zeitstempel);
    
    Nachrichtenbox.Show("Erfolgreich eine Nachricht gesendet.");
}
Fang (Ausnahme Ausnahme)
{
    Nachrichtenbox.Show(Ausnahme.Botschaft, "! Error", MessageBoxButtons.Ok, MessageBoxIcon.Error);
}

Massenmeldungen senden

aufführen<Wörterbuch<Zeichenfolge, Zeichenfolge>> Mitteilungen = Neu aufführen<Wörterbuch<Zeichenfolge, Zeichenfolge>> ();
zum (int das = 1; das <= 12; das++)
{
    var Botschaft = Neu Wörterbuch<Zeichenfolge, Zeichenfolge>
    {
        { "Nummer", "+911234567890" },
        { "Botschaft", "Dies ist ein Test # {$i} der C#-Version. Testen der Funktionalität von Massennachrichten." }
    };
    Mitteilungen.Hinzufügen(Botschaft);
}

Versuchen
{
    // Nachrichten mit dem primären Gerät senden.
    SMS.API.Sende Nachrichten(Mitteilungen);

    // Nachrichten mit Standard-SIM aller verfügbaren Geräte senden. Nachrichten werden auf alle Geräte aufgeteilt.
    SMS.API.Sende Nachrichten(Mitteilungen, SMS.API.Möglichkeit.USE_ALL_DEVICES);
	
    // Nachrichten mit allen SIM-Karten aller verfügbaren Geräte senden. Nachrichten werden auf alle SIM-Karten aufgeteilt.
    SMS.API.Sende Nachrichten(Mitteilungen, SMS.API.Möglichkeit.USE_ALL_SIMS);

    // Nachrichten nur mit angegebenen Geräten senden. Nachrichten werden zwischen den von Ihnen angegebenen Geräten oder SIM-Karten aufgeteilt.
    // Wenn Sie 12 Nachrichten mit diesem Code senden, werden 4 Nachrichten von der Geräte-ID 1 und 4 von der SIM-Karte in Steckplatz 1 von gesendet 
    // Geräte-ID 2 (dargestellt als "2 | 0") und verbleibende 4 von SIM in Steckplatz 2 von Geräte-ID 2 (dargestellt als "2 | 1").
    SMS.API.Sende Nachrichten(Mitteilungen, SMS.API.Möglichkeit.USE_SPECIFIED, Neu [] {"1", "2|0", "2|1"});
    
    // Nachrichten termingerecht mit dem primären Gerät senden.
    lange Zeitstempel = (lange) Terminzeit.UtcNow.AddMinutes(2).Subtrahieren(Neu Terminzeit(1970, 1, 1)).Gesamtsekunden;
    Wörterbuch<Zeichenfolge, Objekt> [] Mitteilungen = SMS.API.Sende Nachrichten(Mitteilungen, Möglichkeit.USE_SPECIFIED, Null, Zeitstempel);
    
    // Eine Nachricht an Kontakte in der Kontaktliste mit der ID 1 senden.
    Wörterbuch<Zeichenfolge, Objekt> [] Mitteilungen = SMS.API.SendMessageToContactsList(1, "Prüfung", SMS.API.Möglichkeit.USE_SPECIFIED, Neu [] {"1"});

    // Nachricht pünktlich an Kontakte in der Kontaktliste mit der ID 1 senden.
    Wörterbuch<Zeichenfolge, Objekt> [] Mitteilungen = SMS.API.SendMessageToContactsList(1, Test #1, Möglichkeit.USE_SPECIFIED, Null, Zeitstempel);
    
    Nachrichtenbox.Show("Erfolg");
}
Fang (Ausnahme Ausnahme)
{
    Nachrichtenbox.Show(Ausnahme.Botschaft, "! Error", MessageBoxButtons.Ok, MessageBoxIcon.Error);
}

Erhalten Sie die verbleibenden Nachrichtenguthaben

Versuchen
{
    Zeichenfolge Credits = SMS.API.GetBalance();
    Nachrichtenbox.Show($"Verbleibende Nachrichten-Credits: {Credits}");
}
Fang (Ausnahme Ausnahme)
{
    Nachrichtenbox.Show(Ausnahme.Botschaft, "! Error", MessageBoxButtons.Ok, MessageBoxIcon.Error);
}

Erhalten Sie Nachrichten und ihren aktuellen Status

Versuchen 
{
    // Eine Nachricht mit der ID abrufen.
    Wörterbuch<Zeichenfolge, Objekt> Botschaft = SMS.API.GetMessageByID(1);

    // Nachrichten mit der Gruppen-ID abrufen.
    Wörterbuch<Zeichenfolge, Objekt> [] Mitteilungen = SMS.API.GetMessagesByGroupID() * V5LxqyBMEbQrl9 J$5bb4c03e8a07b7.62193871);
    
    // Nachrichten erhalten, die in den letzten 24 Stunden empfangen wurden.
    lange Zeitstempel = (lange) Terminzeit.UtcNow.AddHours(-24).Subtrahieren(Neu Terminzeit(1970, 1, 1)).Gesamtsekunden;
    GetMessagesByStatus("Empfangen", Zeitstempel);
}
Fang (Ausnahme Ausnahme)
{
    Nachrichtenbox.Show(Ausnahme.Botschaft, "! Error", MessageBoxButtons.Ok, MessageBoxIcon.Error);
}

Kontakte verwalten

Versuchen {
    // Fügen Sie einen neuen Kontakt zur Kontaktliste 1 hinzu oder abonnieren Sie den Kontakt erneut, falls er bereits vorhanden ist.
    Wörterbuch<Zeichenfolge, Objekt> Kontakt = SMS.API.Kontakt hinzufügen(1, "+911234567890", "Test C#", falsch);
    
    // Einen Kontakt mit der Handynummer abbestellen.
    Wörterbuch<Zeichenfolge, Objekt> Kontakt = AbbestellenKontakt(1, "+911234567890");
}
Fang (Ausnahme Ausnahme)
{
    Nachrichtenbox.Show(Ausnahme.Botschaft, "! Error", MessageBoxButtons.Ok, MessageBoxIcon.Error);
}