Enviar SMS
Operaciones de SMS disponibles en la API SMS de RealTime V.2. Nuestra API SMS programable te ayuda a agregar capacidades de mensajería robustas a tu aplicación. Usando la API SMS v.2, puedes enviar mensajes SMS y rastrear su estado de entrega.
Enviar SMS
La operación de Enviar SMS es la que debes usar para enviar mensajes SMS.
Petición HTTP POST
POST https://www.rti-sms.com/api/sms
Cabecera obligatoria en petición HTTP POST
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN_HERE
En el body de la petición POST, debes enviar un objeto JSON con los siguientes parámetros:
Parámetros en el Body del objeto JSON
Parámetro | Tipo | Descripción |
recipients | Array | Arreglo de uno o mas números móviles |
---|---|---|
sender | String | Remitente/Originador del mensaje SMS. |
message | Object | Contiene las variables del mensaje SMS. Por favor ver la tabla de abajo. |
Parámetros en el objeto JSON message
Parámetro | Tipo | Descripción |
---|---|---|
charset | Number | Este parámetro especifica la codificación de los caracteres de los SMS. En este capitulo encontrarás una lista del conjunto de caracteres soportado. |
text | String | El texto de los mensajes SMS. |
## Example using curl
curl -X "POST" "https://www.rti-sms.com/api/sms" \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ***** Hidden credentials *****' \
-d $'{
"recipients": [
"+56900000000"
],
"message": {
"charset": 0,
"text": "libizon adikestr 85f0f569cb 1287c690e0"
},
"sender": "96000"
}'
// get cURL resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, 'https://www.rti-sms.com/api/sms');
// set method
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
// return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// set headers
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ***** Hidden credentials *****',
]);
// json body
$json_array = [
'recipients' => [
'+56900000000'
],
'message' => [
'charset' => 0,
'text' => 'libizon adikestr 85f0f569cb 1287c690e0'
],
'sender' => '96000'
];
$body = json_encode($json_array);
// set body
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
// send the request and save response to $response
$response = curl_exec($ch);
// stop if fails
if (!$response) {
die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
}
echo 'HTTP Status Code: ' . curl_getinfo($ch, CURLINFO_HTTP_CODE) . PHP_EOL;
echo 'Response Body: ' . $response . PHP_EOL;
// close curl resource to free up system resources
curl_close($ch);
# Install the Python Requests library:
# `pip install requests`
import requests
import json
def send_request():
# Request
# POST https://www.rti-sms.com/api/sms
try:
response = requests.post(
url="https://www.rti-sms.com/api/sms",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer ***** Hidden credentials *****",
},
data=json.dumps({
"recipients": [
"+56900000000"
],
"message": {
"charset": 0,
"text": "libizon adikestr 85f0f569cb 1287c690e0"
},
"sender": "96000"
})
)
print('Response HTTP Status Code: {status_code}'.format(
status_code=response.status_code))
print('Response HTTP Response Body: {content}'.format(
content=response.content))
except requests.exceptions.RequestException:
print('HTTP Request failed')
// Node.JS Example
(function(callback) {
'use strict';
const httpTransport = require('https');
const responseEncoding = 'utf8';
const httpOptions = {
hostname: 'www.rti-sms.com',
port: '443',
path: '/api/sms',
method: 'POST',
headers: {"Content-Type":"application/json","Authorization":"Bearer ***** Hidden credentials *****"}
};
httpOptions.headers['User-Agent'] = 'node ' + process.version;
// Paw Store Cookies option is not supported
const request = httpTransport.request(httpOptions, (res) => {
let responseBufs = [];
let responseStr = '';
res.on('data', (chunk) => {
if (Buffer.isBuffer(chunk)) {
responseBufs.push(chunk);
}
else {
responseStr = responseStr + chunk;
}
}).on('end', () => {
responseStr = responseBufs.length > 0 ?
Buffer.concat(responseBufs).toString(responseEncoding) : responseStr;
callback(null, res.statusCode, res.headers, responseStr);
});
})
.setTimeout(0)
.on('error', (error) => {
callback(error);
});
request.write("{\"recipients\":[\"+56900000000\"],\"sender\":\"96000\",\"message\":{\"charset\":0,\"text\":\"libizon adikestr 85f0f569cb 1287c690e0\"}}")
request.end();
})((error, statusCode, headers, body) => {
console.log('ERROR:', error);
console.log('STATUS:', statusCode);
console.log('HEADERS:', JSON.stringify(headers));
console.log('BODY:', body);
});
import java.io.IOException;
import org.apache.http.client.fluent.*;
import org.apache.http.entity.ContentType;
public class SendRequest
{
public static void main(String[] args) {
sendRequest();
}
private static void sendRequest() {
// Request (POST )
try {
// Create request
Content content = Request.Post("https://www.rti-sms.com/api/sms")
// Add headers
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer ***** Hidden credentials *****")
// Add body
.bodyString("{\"recipients\": [\"+56900000000\"],\"message\": {\"charset\": 0,\"text\": \"libizon adikestr 85f0f569cb 1287c690e0\"},\"sender\": \"96000\"}", ContentType.APPLICATION_JSON)
// Fetch request and return content
.execute().returnContent();
// Print content
System.out.println(content);
}
catch (IOException e) { System.out.println(e); }
}
}
Una operación exitosa de envio sms retorna una estructura JSON como esta:
{
"submissions":[
{
"status":"submitted",
"submissionId":"4193366853543393"
}
]
}
Si la operación de Envio de SMS es exitosa, la API responderá con un estatus HTPP:
HTTP/1.1 200 OK
y en el body de la respuesta obtendrás
la variable submissions que contiene información de cada envio de sms que hiciste en la actual operación.
Por favor notar que en la operación de Enviar SMS, cada número destinatario produce un envio por separado. Por ejemplo, si en la operación Enviar SMS incluyes 2 numeros destinatarios, debes esperar a ver 2 resultados contenidos en la variable submissions, retornada por la API.
En la tabla de abajo, por favor mira los campos de cada resultado submission:
Campo | Tipo | Descripción |
status | String | Especifica el resultado de un único envio. Los posibles valores se encuentran en una tabla por separado mas abajo. |
---|---|---|
submissionId | String | Es el ID único de un solo envio. Nota: Este campo existe solo si el campo status es igual a "submitted"! |
Valores posibles de status
Valor | Descripción |
submitted | Especifica un Envio de SMS exitoso |
account_no_balance | Especifica un Envio de SMS no exitoso, porque el saldo de tu cuenta esta agotado. |
unknown_error | Específica un Envio de SMS no exitoso, debido a un error interno. Usualmente esos errores son temporales, pero si el problema persiste, por favor contacta al servicio al cliente. |
Estructura del campo operator
Campo | Tipo | Descripción |
id | String | El ID único de un operador de red, de acuerdo a la base de datos de RealTime's. |
---|---|---|
name | String | El nombre de un operador de red. |
mcc | String | Valor numérico. Especifica el país de un operador de red. Su nombre completo: Mobile Country Code. |
mnc | String | Valor numérico. Especifica el operador de red con el mismo valor mcc. |
HTTP 401 - Unauthorized
y un body vacio! En esos casos y cuando
probablemente no uses un Cliente HTTP capaz de usar OAuth2 el cual maneje los procesos de autenticación por ti,
deberías usar el proceso de Autenticación Manual de nuevo y usar el nuevo access_token para la llamada
siguiente a la API.
Valores de conjuntos de caracteres soportada
Valor | Descripción |
0 | Petición desde la API SMS para elegir el caracter por defecto establece el valor para el actual texto SMS |
1 | GSM 7-bit ASCII |
6 | Todos los caracteres en Formato Hexadecimal Unicode UCS2. ej. para āĉġ En el texto SMS debería ser 010101090121 |
8 | Caracteres latinos codificados en URL (à, è, ì, ò, ù). ej. para àü En el texto SMS debería ser %7F%7E |