Nichts gefunden

Transaktions-SMS – Beispiele

Anwendungsbeispiele für Transaktions-SMS. Die Simple API sendet eine einzelne SMS mit einer einzigen Anfrage - Arrays von Empfängern und alternative Kanäle gibt es nur in der Advanced API.

Ein Empfänger

Die kleinste Anfrage, die eine Benachrichtigung sendet. number ist eine einzelne Telefonnummer im internationalen Format.

POST /api/1.0/simple/transactional HTTP/1.1 Host: portal.bulkgate.com Content-Type: application/json { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "number": "420777777777", "text": "Ihre Bestellung 4517 wurde versandt." }

Eigener Absender und Unicode

gText sendet die Nachricht von einem registrierten Textabsender. Schalten Sie unicode immer dann ein, wenn der Text Zeichen außerhalb des 7-Bit-Alphabets enthält - die Nachricht wird dadurch auf 268 Zeichen pro Teil verkürzt.

POST /api/1.0/simple/transactional HTTP/1.1 Host: portal.bulkgate.com Content-Type: application/json { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "number": "420777777777", "text": "Vaše zásilka 4517 je na cestě.", "sender_id": "gText", "sender_id_value": "BulkGate", "unicode": true }

Lokale Nummer und geplanter Versand

Mit country können Sie eine Nummer ohne internationale Vorwahl übergeben. schedule akzeptiert ISO 8601 oder einen Unix-Zeitstempel; der Wert now oder das Weglassen des Parameters sendet die Nachricht sofort.

POST /api/1.0/simple/transactional HTTP/1.1 Host: portal.bulkgate.com Content-Type: application/json { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "number": "777777777", "country": "cz", "text": "Ihre Bestellung 4517 kommt morgen an.", "schedule": "2026-09-14T09:00:00+02:00" }

Schutz vor Duplikaten und Tag

duplicates_check mit dem Wert on verwirft eine Nachricht mit demselben Text an dieselbe Nummer innerhalb von fünf Minuten; tag kennzeichnet die Nachricht, damit Sie sie später wiederfinden.

POST /api/1.0/simple/transactional HTTP/1.1 Host: portal.bulkgate.com Content-Type: application/json { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "number": "420777777777", "text": "Ihre Bestellung 4517 wurde versandt.", "duplicates_check": "on", "tag": "orders" }

Die Antwort ist in der Spezifikation beschrieben.

Codebeispiele

Nachfolgend finden Sie Beispiele für Implementierungen der Simple API zum Senden von transaktionalen SMS (Benachrichtigungen) mit einem Textabsender in verschiedenen Programmiersprachen:

Die Bedeutung der einzelnen Parameter finden Sie in der Spezifikation, die reinen Anfragen unter Anfragemethoden.

PHP

php.net

$context = stream_context_create(['http' => [ 'method' => 'POST', 'header' => 'Content-Type: application/json', 'content' => json_encode([ 'application_id' => 451, 'application_token' => 'NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj', 'number' => '420777777777', 'text' => 'Nachrichtentext', 'sender_id' => 'gText', 'sender_id_value' => 'BulkGate', ], JSON_THROW_ON_ERROR), 'timeout' => 30, 'ignore_errors' => true, ]]); $body = file_get_contents('https://portal.bulkgate.com/api/1.0/simple/transactional', false, $context); if ($body === false) { throw new RuntimeException('BulkGate API hat nicht geantwortet.'); } $response = json_decode($body, true, flags: JSON_THROW_ON_ERROR); if (isset($response['error'])) { throw new RuntimeException("BulkGate: {$response['error']} ({$response['type']})"); } echo "Gesendet: {$response['data']['sms_id']}\n";

PHP cURL

php.net/curl

$curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => 'https://portal.bulkgate.com/api/1.0/simple/transactional', CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 30, CURLOPT_HTTPHEADER => ['Content-Type: application/json'], CURLOPT_POSTFIELDS => json_encode([ 'application_id' => 451, 'application_token' => 'NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj', 'number' => '420777777777', 'text' => 'Nachrichtentext', 'sender_id' => 'gText', 'sender_id_value' => 'BulkGate', ], JSON_THROW_ON_ERROR), ]); $body = curl_exec($curl); $status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE); if($body === false) { throw new RuntimeException('BulkGate: ' . curl_error($curl)); } $response = json_decode($body, true, flags: JSON_THROW_ON_ERROR); // Einen API-Fehler erkennen Sie am HTTP-Status, der Body enthält seine Beschreibung. if($status !== 200) { throw new RuntimeException("BulkGate: {$response['error']} ({$response['type']})"); } echo "Gesendet: {$response['data']['sms_id']}\n";

PHP Guzzle

docs.guzzlephp.org

// composer require guzzlehttp/guzzle use GuzzleHttp\Client; use GuzzleHttp\Exception\GuzzleException; $client = new Client(['timeout' => 30, 'http_errors' => false]); try { $result = $client->post('https://portal.bulkgate.com/api/1.0/simple/transactional', ['json' => [ 'application_id' => 451, 'application_token' => 'NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj', 'number' => '420777777777', 'text' => 'Nachrichtentext', 'sender_id' => 'gText', 'sender_id_value' => 'BulkGate', ]]); } catch (GuzzleException $e) { throw new RuntimeException('BulkGate: ' . $e->getMessage(), previous: $e); } $response = json_decode((string) $result->getBody(), true, flags: JSON_THROW_ON_ERROR); // http_errors => false: Einen API-Fehler erkennen Sie am Statuscode, der Body enthält seine Beschreibung. if ($result->getStatusCode() !== 200) { throw new RuntimeException("BulkGate: {$response['error']} ({$response['type']})"); } echo "Gesendet: {$response['data']['sms_id']}\n";

Go

go.dev

package main import ( "fmt" "strings" "net/http" "io/ioutil" ) func main() { url := "https://portal.bulkgate.com/api/1.0/simple/transactional" payload := strings.NewReader("{\"application_id\": 451, \"application_token\": \"NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj\", \"number\": \"420777777777\", \"text\": \"Nachricht\", \"sender_id\": \"gText\", \"sender_id_value\": \"BulkGate\"}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := ioutil.ReadAll(res.Body) fmt.Println(string(body)) }

Python

python.org

# pip install requests import requests response = requests.post('https://portal.bulkgate.com/api/1.0/simple/transactional', json={ 'application_id': 451, 'application_token': 'NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj', 'number': '420777777777', 'text': 'Nachricht', 'sender_id': 'gText', 'sender_id_value': 'BulkGate', }, timeout=30) data = response.json() # Eine Fehlerantwort hat die Form {type, code, error, detail} — siehe Tabelle der Fehlertypen. if 'error' in data: raise RuntimeError(f"BulkGate: {data['error']} ({data['type']})") print('Gesendet:', data['data']['sms_id'])

Node.js

nodejs.org

// Node.js 18+ hat fetch global. Top-level await erfordert ESM (.mjs oder "type": "module"). const response = await fetch('https://portal.bulkgate.com/api/1.0/simple/transactional', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ application_id: 451, application_token: 'NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj', number: '420777777777', text: 'Nachricht', sender_id: 'gText', sender_id_value: 'BulkGate', }), }); const data = await response.json(); // Eine Fehlerantwort hat die Form {type, code, error, detail} — siehe Tabelle der Fehlertypen. if (!response.ok) { throw new Error(`BulkGate: ${data.error} (${data.type})`); } console.log('Gesendet:', data.data.sms_id);

Java

java.net.http.HttpClient

import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://portal.bulkgate.com/api/1.0/simple/transactional")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(""" { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "number": "420777777777", "text": "Nachricht", "sender_id": "gText", "sender_id_value": "BulkGate" }""")) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode() + " " + response.body());

Kotlin

kotlinlang.org

import java.net.URI import java.net.http.HttpClient import java.net.http.HttpRequest import java.net.http.HttpResponse val payload = """ { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "number": "420777777777", "text": "Nachricht", "sender_id": "gText", "sender_id_value": "BulkGate" } """.trimIndent() val request = HttpRequest.newBuilder() .uri(URI.create("https://portal.bulkgate.com/api/1.0/simple/transactional")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(payload)) .build() val response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()) println("${response.statusCode()} ${response.body()}")

C# .NET

learn.microsoft.com

using System.Net.Http; using System.Text; var payload = """ { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "number": "420777777777", "text": "Nachricht", "sender_id": "gText", "sender_id_value": "BulkGate" } """; using var client = new HttpClient(); var response = await client.PostAsync( "https://portal.bulkgate.com/api/1.0/simple/transactional", new StringContent(payload, Encoding.UTF8, "application/json")); Console.WriteLine($"{(int) response.StatusCode} {await response.Content.ReadAsStringAsync()}");

C++ libcurl

curl.se/libcurl

#include <curl/curl.h> #include <iostream> #include <string> static size_t collect(char *data, size_t size, size_t nmemb, std::string *out) { out->append(data, size * nmemb); return size * nmemb; } int main() { const std::string payload = R"json( { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "number": "420777777777", "text": "Nachricht", "sender_id": "gText", "sender_id_value": "BulkGate" } )json"; CURL *curl = curl_easy_init(); if (curl == nullptr) { std::cerr << "curl_easy_init failed\n"; return 1; } curl_slist *headers = curl_slist_append(nullptr, "Content-Type: application/json"); std::string body; curl_easy_setopt(curl, CURLOPT_URL, "https://portal.bulkgate.com/api/1.0/simple/transactional"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload.c_str()); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, collect); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &body); const CURLcode result = curl_easy_perform(curl); long status = 0; curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &status); curl_slist_free_all(headers); curl_easy_cleanup(curl); if (result != CURLE_OK) { std::cerr << curl_easy_strerror(result) << "\n"; return 1; } std::cout << status << " " << body << "\n"; return 0; }

Ruby

ruby-lang.org

require 'json' require 'net/http' uri = URI('https://portal.bulkgate.com/api/1.0/simple/transactional') response = Net::HTTP.post(uri, { 'application_id' => 451, 'application_token' => 'NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj', 'number' => '420777777777', 'text' => 'Nachricht', 'sender_id' => 'gText', 'sender_id_value' => 'BulkGate' }.to_json, 'Content-Type' => 'application/json') puts "#{response.code} #{response.body}"

Bash cURL

curl.se

curl --request POST \ --url https://portal.bulkgate.com/api/1.0/simple/transactional \ --header 'Content-Type: application/json' \ --data '{"application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "number": "420777777777", "text": "Nachricht", "sender_id": "gText", "sender_id_value": "BulkGate"}'
War diese Seite hilfreich?