Nichts gefunden

Sie sehen eine ältere Version dieser Seite.

Aktuelle Version öffnen

Werbe-SMS – Beispiele (Advanced API 1.0)

Anwendungsbeispiele für Advanced promotional, API-Version 1.0. Die Version 1.0 versendet nur SMS - alternative Kanäle sind ab Version 2.0 verfügbar.

Mehrere Empfänger

number nimmt ein Array von Telefonnummern entgegen; alle erhalten denselben Text.

POST /api/1.0/advanced/promotional HTTP/1.1 Host: portal.bulkgate.com Content-Type: application/json { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "number": [ "420777777777", "420777777778" ], "text": "Spring sale starts today, up to 50 % off." }

Eigener Text für jeden Empfänger

Anstelle einer einfachen Nummer können Sie ein Objekt mit text und variables übergeben. Der Text des Empfängers hat Vorrang vor dem text der obersten Ebene.

POST /api/1.0/advanced/promotional HTTP/1.1 Host: portal.bulkgate.com Content-Type: application/json { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "number": [ { "number": "420777777777", "text": "Hello John, spring sale starts today." }, { "number": "420777777778", "variables": { "first_name": "Jana" } } ], "text": "Hello <first_name>, spring sale starts today." }

Gruppen aus dem Adressbuch

groups sendet die Kampagne an Gruppen aus dem BulkGate-Adressbuch, siehe Werbe-SMS an Gruppen. Die Platzhalter werden aus dem Kontakt befüllt.

POST /api/1.0/advanced/promotional HTTP/1.1 Host: portal.bulkgate.com Content-Type: application/json { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "groups": [ 974, 975 ], "text": "Hello <first_name>, spring sale starts today.", "sender_id": "gText", "sender_id_value": "BulkGate" }

Administratoren

admins adressiert BulkGate-Administratoren, siehe Werbe-SMS an Administratoren.

POST /api/1.0/advanced/promotional HTTP/1.1 Host: portal.bulkgate.com Content-Type: application/json { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "admins": [ 154, 975 ], "text": "Hi <first_name>, the spring campaign is live." }

Geplante Kampagne mit Schutz vor Duplikaten

same_number verwirft jede weitere Nachricht an eine Nummer, die bereits in der Kampagne enthalten ist; same_text verwirft nur Nachrichten mit identischem Text. tag kennzeichnet die Kampagne, damit Sie sie später wiederfinden.

POST /api/1.0/advanced/promotional HTTP/1.1 Host: portal.bulkgate.com Content-Type: application/json { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "groups": [ 974 ], "text": "Der Frühjahrsverkauf hat gerade begonnen.", "unicode": true, "schedule": "2026-09-14T09:00:00+02:00", "duplicates_check": "same_number", "tag": "spring-sale" }

Die Antwort ist in der Spezifikation beschrieben.

Codebeispiele

Unten finden Sie dieselbe Anfrage in verschiedenen Programmiersprachen:

Die Bedeutung der einzelnen Parameter finden Sie in der Spezifikation.

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', 'groups' => [974, 975], 'text' => 'Hello <first_name>, spring sale starts today.', '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/advanced/promotional', false, $context); if ($body === false) { throw new RuntimeException('BulkGate API did not respond.'); } $response = json_decode($body, true, flags: JSON_THROW_ON_ERROR); if (isset($response['error'])) { throw new RuntimeException("BulkGate: {$response['error']} ({$response['type']})"); } print_r($response['data']);

PHP cURL

php.net/curl

$curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => 'https://portal.bulkgate.com/api/1.0/advanced/promotional', 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', 'groups' => [974, 975], 'text' => 'Hello <first_name>, spring sale starts today.', 'sender_id' => 'gText', 'sender_id_value' => 'BulkGate', ], JSON_THROW_ON_ERROR), ]); $body = curl_exec($curl); $error = curl_error($curl); curl_close($curl); if ($error !== '') { throw new RuntimeException("BulkGate API: $error"); } print_r(json_decode($body, true, flags: JSON_THROW_ON_ERROR));

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/advanced/promotional', ['json' => [ 'application_id' => 451, 'application_token' => 'NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj', 'groups' => [974, 975], 'text' => 'Hello <first_name>, spring sale starts today.', '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. print_r($response);

Go

go.dev

package main import ( "fmt" "io" "net/http" "strings" ) func main() { url := "https://portal.bulkgate.com/api/1.0/advanced/promotional" payload := strings.NewReader(`{"application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "groups": [974, 975], "text": "Hello <first_name>, spring sale starts today.", "sender_id": "gText", "sender_id_value": "BulkGate"}`) req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res.StatusCode, string(body)) }

Python

python.org

import http.client, json connection = http.client.HTTPSConnection('portal.bulkgate.com') connection.request('POST', '/api/1.0/advanced/promotional', json.dumps({ 'application_id': 451, 'application_token': 'NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj', 'groups': [974, 975], 'text': 'Hello <first_name>, spring sale starts today.', 'sender_id': 'gText', 'sender_id_value': 'BulkGate', }), { 'Content-Type': 'application/json' }) response = connection.getresponse() print(response.status, response.read().decode())

Node.js

nodejs.org

// Node.js 18+ stellt fetch global bereit. Top-level await erfordert ESM (.mjs oder "type": "module"). const response = await fetch("https://portal.bulkgate.com/api/1.0/advanced/promotional", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "groups": [974, 975], "text": "Hello <first_name>, spring sale starts today.", "sender_id": "gText", "sender_id_value": "BulkGate" }), }); const result = await response.json(); if (result.error) { throw new Error(`BulkGate: ${result.error} (${result.type})`); } console.log(result.data);

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/advanced/promotional")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(""" { "application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "groups": [ 974, 975 ], "text": "Hello <first_name>, spring sale starts today.", "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", "groups": [ 974, 975 ], "text": "Hello <first_name>, spring sale starts today.", "sender_id": "gText", "sender_id_value": "BulkGate" } """.trimIndent() val request = HttpRequest.newBuilder() .uri(URI.create("https://portal.bulkgate.com/api/1.0/advanced/promotional")) .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", "groups": [ 974, 975 ], "text": "Hello <first_name>, spring sale starts today.", "sender_id": "gText", "sender_id_value": "BulkGate" } """; using var client = new HttpClient(); var response = await client.PostAsync( "https://portal.bulkgate.com/api/1.0/advanced/promotional", 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", "groups": [ 974, 975 ], "text": "Hello <first_name>, spring sale starts today.", "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/advanced/promotional"); 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/advanced/promotional') response = Net::HTTP.post(uri, { 'application_id' => 451, 'application_token' => 'NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj', 'groups' => [974, 975], 'text' => 'Hello <first_name>, spring sale starts today.', '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/advanced/promotional \ --header 'Content-Type: application/json' \ --data '{"application_id": 451, "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj", "groups": [974, 975], "text": "Hello <first_name>, spring sale starts today.", "sender_id": "gText", "sender_id_value": "BulkGate"}'
War diese Seite hilfreich?