Simular la creación de un Bulk (para pruebas)
Este endpoint se utiliza con fines de prueba para emular la creación de un Bulk sin crear realmente SMS y pasarlos al operador de red a cambio de una tarifa.
Authorizations
Sección titulada «Authorizations »Request Body required
Sección titulada «Request Body required »The new bulks resource
object
Lista de los números (internacionales) de los destinatarios:
- +491701234567 (E.164)
- 00491701234567
- 491701234567
- 01701234567 (si la cuenta está registrada en Alemania) se convertirá en +491701234567
Si el número no está en formato E.164, el servicio lo convertirá basándose en la dirección del usuario. Para evitar problemas con la conversión, utilice preferentemente E.164.
object
Lista de los grupos destinatarios
Responses
Sección titulada « Responses »Bulks resource created
object
JSON-LD ID
JSON-LD type
UUID único de entidad
Unix-timestamp de una entrega programada. Si 0 SMS se entrega inmediatamente.
ID del remitente del mensaje. Puede ser un número (hasta 15 dígitos) o un texto (hasta 11 caracteres). Si se trata de un número, utilice preferentemente el formato de número de teléfono E.164. Un remitente de texto puede contener espacios pero no otros caracteres especiales. Tenga en cuenta que algunos países no admiten identificadores de remitente propios o exigen un registro previo. Nuestro sistema intenta detectar automáticamente si un ID de remitente es un texto o un número de teléfono. Evite los caracteres especiales en un número e introdúzcalo de la misma forma que se marcaría en un teléfono.
La longitud máxima del texto es de 1785 caracteres. Pero no olvides que el texto final del mensaje puede tener una longitud de hasta 1530 caracteres. Con un SMS Unicode, la longitud máxima de caracteres se reduce a 670 caracteres. La codificación interna es UTF-8.
Lista de los números (internacionales) de los destinatarios:
- +491701234567 (E.164)
- 00491701234567
- 491701234567
- 01701234567 (si la cuenta está registrada en Alemania) se convertirá en +491701234567
Si el número no está en formato E.164, el servicio lo convertirá basándose en la dirección del usuario. Para evitar problemas con la conversión, utilice preferentemente E.164.
Lista de los grupos destinatarios
Estados del Bulk:
0- nuevo y no procesado5- bulks en progreso10- bulks fueron pocesados exitosamente15- bulk el tratamiento fue cancelado por el usuario20- Error de sistema201- error: no se han encontrado destinatarios
Recuento de los mensajes creados por el bulk
Fecha en la que se añadió la entidad al sistema por el usuario
Fecha de los últimos cambios
Dirección IP del host que envió la solicitud
Define si desea enviar un SMS GSM 03.38 normal (160 caracteres) o un texto Unicode para transferir caracteres como cirílico, árabe, chino y japonés (70 caracteres). Si no define este parámetro (null), nuestro sistema determinará automáticamente la codificación correcta para su texto.
- GSM: is_unicode = false
- Unicode: is_unicode = true
- Auto-detect: is_unicode = null
Tipo de bulk ‘dryrun’ o no
El código de servicio define si envía un sms directo o text2speech. Recomendamos directo (see /me)
Identificador de clave API
Para realizar un mejor seguimiento de tus SMS en la factura detallada, puedes utilizar el parámetro de origen para asignar un ID numérico (entero) a tus SMS.
Idioma del mensaje de voz. Valores posibles: null (detección automática) o uno de: EN (inglés), DE (alemán), FR (francés), IT (italiano), ES (español), PL (polaco), NL (neerlandés), RO (rumano), PT (portugués), CS (checo), HU (húngaro), SV (sueco), DA (danés), FI (finés), SK (eslovaco), HR (croata), TR (turco), RU (ruso), BG (búlgaro), UK (ucraniano).
Borrar texto SMS de la base de datos después de enviar SMS
Coste de los mensajes creados por el bulk
Example
{ "@context": { "hydra": "http://www.w3.org/ns/hydra/core#" }, "sender_id": "+491701234567", "phones": [ "+14155552671" ], "status_code": 0, "ip": "192.168.1.1", "service_code": "direct", "voice_lang": "EN"}object
UUID único de entidad
Unix-timestamp de una entrega programada. Si 0 SMS se entrega inmediatamente.
ID del remitente del mensaje. Puede ser un número (hasta 15 dígitos) o un texto (hasta 11 caracteres). Si se trata de un número, utilice preferentemente el formato de número de teléfono E.164. Un remitente de texto puede contener espacios pero no otros caracteres especiales. Tenga en cuenta que algunos países no admiten identificadores de remitente propios o exigen un registro previo. Nuestro sistema intenta detectar automáticamente si un ID de remitente es un texto o un número de teléfono. Evite los caracteres especiales en un número e introdúzcalo de la misma forma que se marcaría en un teléfono.
La longitud máxima del texto es de 1785 caracteres. Pero no olvides que el texto final del mensaje puede tener una longitud de hasta 1530 caracteres. Con un SMS Unicode, la longitud máxima de caracteres se reduce a 670 caracteres. La codificación interna es UTF-8.
Lista de los números (internacionales) de los destinatarios:
- +491701234567 (E.164)
- 00491701234567
- 491701234567
- 01701234567 (si la cuenta está registrada en Alemania) se convertirá en +491701234567
Si el número no está en formato E.164, el servicio lo convertirá basándose en la dirección del usuario. Para evitar problemas con la conversión, utilice preferentemente E.164.
Lista de los grupos destinatarios
Estados del Bulk:
0- nuevo y no procesado5- bulks en progreso10- bulks fueron pocesados exitosamente15- bulk el tratamiento fue cancelado por el usuario20- Error de sistema201- error: no se han encontrado destinatarios
Recuento de los mensajes creados por el bulk
Fecha en la que se añadió la entidad al sistema por el usuario
Fecha de los últimos cambios
Dirección IP del host que envió la solicitud
Define si desea enviar un SMS GSM 03.38 normal (160 caracteres) o un texto Unicode para transferir caracteres como cirílico, árabe, chino y japonés (70 caracteres). Si no define este parámetro (null), nuestro sistema determinará automáticamente la codificación correcta para su texto.
- GSM: is_unicode = false
- Unicode: is_unicode = true
- Auto-detect: is_unicode = null
Tipo de bulk ‘dryrun’ o no
El código de servicio define si envía un sms directo o text2speech. Recomendamos directo (see /me)
Identificador de clave API
Para realizar un mejor seguimiento de tus SMS en la factura detallada, puedes utilizar el parámetro de origen para asignar un ID numérico (entero) a tus SMS.
Idioma del mensaje de voz. Valores posibles: null (detección automática) o uno de: EN (inglés), DE (alemán), FR (francés), IT (italiano), ES (español), PL (polaco), NL (neerlandés), RO (rumano), PT (portugués), CS (checo), HU (húngaro), SV (sueco), DA (danés), FI (finés), SK (eslovaco), HR (croata), TR (turco), RU (ruso), BG (búlgaro), UK (ucraniano).
Borrar texto SMS de la base de datos después de enviar SMS
Coste de los mensajes creados por el bulk
Example
{ "sender_id": "+491701234567", "phones": [ "+14155552671" ], "status_code": 0, "ip": "192.168.1.1", "service_code": "direct", "voice_lang": "EN"}Entrada no valida
El ID de cliente o la clave API no están activos o no son válidos.
La cuenta no está activada. Espere o póngase en contacto con el servicio de asistencia.
La solicitud estaba bien formada pero no se pudo procesar debido a errores semánticos
La dirección IP fue bloqueada temporalmente, ya que durante poco tiempo se enviaron muchas solicitudes con credenciales no válidas. Espere y pruebe más tarde.
Code Samples
#!/usr/bin/env bashcurl -X POST https://api.lox24.eu/bulks/dryrun \ -H 'Content-Type: application/json' \ -H 'X-LOX24-AUTH-TOKEN: 1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx' \ -d '{ "sender_id": "testbulk", "text": "test bulk text", "service_code": "direct", "phones": ["+49751234567"], "msg_groups": [7117], "delivery_at": 1573724611, "is_unicode": true, "source": 1234, "voice_lang": "DE" }'using Newtonsoft.Json;using Newtonsoft.Json.Linq;using System;using System.IO;using System.Net;using System.Text;
namespace Lox24.Api{ class client { static void Main() { string key = "1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx"; string url = "https://api.lox24.eu/bulks/dryrun";
var data = new { sender_id = "My Sender", text = "Test message!", service_code = "direct", phones = new string[]{"+49751234567", "+49751234568"}, msg_groups = new int[]{14514}, delivery_at = 1573724611, is_unicode = true, voice_lang = "DE" };
string postdata = JsonConvert.SerializeObject(data);
Console.WriteLine("Post data: {0}", postdata);
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); httpWebRequest.ReadWriteTimeout = 100000; httpWebRequest.ContentType = "application/json; charset=utf-8"; httpWebRequest.Accept = "application/json"; // or application/ld+json httpWebRequest.Method = "POST"; httpWebRequest.KeepAlive = true; httpWebRequest.Headers.Add("X-LOX24-AUTH-TOKEN", key); httpWebRequest.Credentials = CredentialCache.DefaultNetworkCredentials;
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { streamWriter.Write(postdata); streamWriter.Flush(); streamWriter.Close(); } try { using (HttpWebResponse resp = (HttpWebResponse)httpWebRequest.GetResponse()) {
if(resp.StatusCode == HttpStatusCode.Created) { Console.WriteLine("Success:{0} {1}", (int)resp.StatusCode, "bulks resource created"); } else { Console.WriteLine("Error: wrong response code {0} on create bulk", (int)resp.StatusCode); }
Stream respStream = resp.GetResponseStream(); using (StreamReader sr = new StreamReader(respStream, Encoding.UTF8)) { string responseText = sr.ReadToEnd(); Console.WriteLine("responseText : {0}", responseText); } }
} catch (System.Net.WebException ex) { var webResponse = ex.Response as System.Net.HttpWebResponse; Console.WriteLine("Error:{0}", webResponse.StatusCode);
switch (webResponse.StatusCode) { case HttpStatusCode.BadRequest: // 400 Console.WriteLine("Error:400 Invalid input"); break; case HttpStatusCode.Unauthorized: // 401 Console.WriteLine("Error:401 Client ID or API key isn't active or invalid!"); break; case HttpStatusCode.Forbidden: // 403 Console.WriteLine("Error:403 Account isn't activated. Please wait or contact to support!"); break; case HttpStatusCode.NotFound: // 404 Console.WriteLine("Error:404 Resource not found"); break; case HttpStatusCode.InternalServerError: // 500 case HttpStatusCode.BadGateway: //502 case HttpStatusCode.ServiceUnavailable: // 503 case HttpStatusCode.GatewayTimeout: // 504 Console.WriteLine("System error! Please contact to LOX24 support!"); break; } } } }package main
import ( "bytes" "encoding/json" "fmt" "io/ioutil" "log" "net/http")
func main() {
const Method = "POST" const URL = "https://api.lox24.eu/bulks/dryrun" const Token = "1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx"
payload := map[string]interface{}{ "sender_id": "testbulk", "text": "test bulk text", "service_code": "direct", "phones": []string{"+49751234567"}, "msg_groups": []int{7117}, "delivery_at": 1593724611, "is_unicode": true, "source": 1234, "voice_lang": "DE", }
jsonPayload, _ := json.Marshal(payload)
client := &http.Client{}
req, err := http.NewRequest(Method, URL, bytes.NewBuffer(jsonPayload)) if err != nil { log.Fatal(err) }
req.Header.Add("X-LOX24-AUTH-TOKEN", Token) req.Header.Add("Content-Type", "application/json") req.Header.Add("Accept", "application/json")
res, err := client.Do(req) if err != nil { log.Fatal(err) }
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body) if err != nil { log.Fatal(err) }
switch res.StatusCode { case 201: fmt.Println((string(body))) case 400: fmt.Println("Error: code = 400 - Invalid input") case 401: fmt.Println("Error: code = 401 - Client ID or API key isn't active or invalid!") case 403: fmt.Println("Error: code = 403 - Account isn't activated. Please wait or contact to support!") default: fmt.Printf("Error: code = %d\n", res.StatusCode) }}package eu.lox24.doc.bulks;
import org.json.JSONObject;
import java.io.IOException;import java.net.HttpURLConnection;import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.time.Duration;
public class PostDryRunBulksCollection {
public static void main(String[] args) {
var key = "1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx"; var url = "https://api.lox24.eu/bulks/dryrun";
var json = new JSONObject(); json.put("sender_id", "My Sender"); json.put("text", "Test message!"); json.put("service_code", "direct"); json.put("phones", new String[]{"+49751234567", "+49751234568", "+49751234569"}); json.put("msg_groups", new int[]{7116, 7117}); json.put("delivery_at", 1573724611); json.put("is_unicode", true); json.put("voice_lang", "DE");
var postData = json.toString();
System.out.println("Post data: " + postData);
var httpRequest = HttpRequest.newBuilder(URI.create(url)) .timeout(Duration.ofMillis(100000)) .setHeader("Content-Type", "application/json; charset=utf-8") .setHeader("Accept", "application/json") // or application/ld+json .setHeader("X-LOX24-AUTH-TOKEN", key) .POST(HttpRequest.BodyPublishers.ofString(postData)) .build();
var client = HttpClient.newBuilder() .version(HttpClient.Version.HTTP_1_1) // Http 1.1 clients are kept alive be default .build();
try { var httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
if (httpResponse.statusCode() == HttpURLConnection.HTTP_CREATED) { System.out.println("Success:" + httpResponse.statusCode() + " " + "bulks resource created"); System.out.println("Response text : \n" + httpResponse.body());
} else {
System.out.println("Error: wrong response code " + httpResponse.statusCode() + " on create bulk"); System.out.println("Response text : \n" + httpResponse.body());
switch (httpResponse.statusCode()) {
case HttpURLConnection.HTTP_BAD_REQUEST: // 400 System.out.println("Error:400 Invalid input"); break; case HttpURLConnection.HTTP_UNAUTHORIZED: // 401 System.out.println("Error:401 Client ID or API key isn't active or invalid!"); break; case HttpURLConnection.HTTP_FORBIDDEN: // 403 System.out.println("Error:403 Account isn't activated. Please wait or contact to support!"); break; case HttpURLConnection.HTTP_INTERNAL_ERROR: // 500 case HttpURLConnection.HTTP_BAD_GATEWAY: //502 case HttpURLConnection.HTTP_UNAVAILABLE: // 503 case HttpURLConnection.HTTP_GATEWAY_TIMEOUT: // 504 System.out.println("System error! Please contact to LOX24 support!"); break; }
}
} catch (IOException | InterruptedException e) { e.printStackTrace(); } }}const host = 'api.lox24.eu';const token = "1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx";
var postObj = { sender_id: 'My Sender', text: 'Test message', service_code: 'direct', phones: ['+49751234567', '+344354634'], msg_groups: [7117], delivery_at: 1573724611, is_unicode: true, voice_lang: 'DE',};
var postdata = JSON.stringify(postObj);
const https = require('https');const options = { hostname: host, path: '/bulks/dryrun', method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Content-Length': postdata.length, 'X-LOX24-AUTH-TOKEN': token }}
const req = https.request(options, res => { if (res.statusCode == 201) { console.log("Success: code = 201 - bulks resource created"); res.on('data', d => { process.stdout.write(d) }) } else if (res.statusCode == 400) { console.log("Error: code = 400 - Invalid input"); } else if (res.statusCode == 401) { console.log("Error: code = 401 - Client ID or API key isn't active or invalid!"); } else if (res.statusCode == 403) { console.log("Error: code = 403 - Account isn't activated. Please wait or contact to support!"); } else { console.log("Error: code = " + res.statusCode ); }});
req.on('error', error => { console.error(error)});
req.write(postdata);req.end();<?php
$uri = 'https://api.lox24.eu/bulks/dryrun';$token = '1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx';
$body = [ 'sender_id' => 'testbulk', 'text' => 'test bulk text', 'service_code' => 'direct', 'phones' => ['+49751234567'], 'msg_groups' => [7117], 'delivery_at' => 1573724611, 'is_unicode' => true, 'source' => 1234, 'voice_lang' => 'DE',];
if(!$body = json_encode($body)) { die('JSON encoding error!');}
$curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_POST => true, CURLOPT_URL => $uri, CURLOPT_POSTFIELDS => $body, CURLOPT_HTTPHEADER => [ "X-LOX24-AUTH-TOKEN: {$token}", 'Accept: application/json', // or application/ld+json 'Content-Type: application/json', ], CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,]);
$response = curl_exec($curl);$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);curl_close($curl);
$data = json_decode($response, JSON_OBJECT_AS_ARRAY);
if(201 === $code) { echo 'Success: response data = ' . var_export($data, true);} else { echo "Error: code = {$code}, data = " . var_export($data, true);}import jsonimport requests
token = "1234567:e3f3a759b6677959b6ebfcxxxxxxxxxx"
url = "https://api.lox24.eu/bulks/dryrun"
data = { 'sender_id': "My Sender", 'text' : "Test message", 'service_code' : "direct", 'phones': ["+49751234567", "+49751234568"], 'msg_groups': [14514], 'delivery_at': 1573724611, 'is_unicode': True, 'voice_lang' : "DE"}
headers = { 'Accept': 'application/json', # or application/ld+json 'Content-Type': 'application/json', 'X-LOX24-AUTH-TOKEN': token,}
print("Post data: ", json.dumps(data, indent=4))
try: # timeout is 100 seconds res = requests.post(url, headers=headers, json=data, timeout=100) if res.status_code != 201: # Created res.raise_for_status() else: print(f'Success: code = {res.status_code} - bulks resource created') print("Response: ", json.dumps(res.json(), indent=4))
except requests.HTTPError: if res.status_code == 400: print("Error:400 Invalid input") elif res.status_code == 401: print("Error: code = 401 - Client ID or API key isn't active or invalid!") elif res.status_code == 403: print("Error: code = 403 - Account isn't activated. Please wait or contact to support!") elif res.status_code in (500, 502, 503, 504): print("System error! Please contact to LOX24 support!") else: print(f"Error: code {res.status_code}") print("Response: ", json.dumps(res.json(), indent=4))