Real-Time


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"
            }
        ]
    }
                        
                    
El conjunto de caracteres de parámetros del mensaje SMS debe ser usado con cuidado ya que afecta la visualización correcta del mensaje SMS en la bandeja de entrada del teléfono móvil. Si un mensaje usa caracteres no incluidos en el Alfabeto default GSM 7-bit (conjunto de caracteres vacio o conjunto=0), deberias considerar usar el Conjunto Unicode Character, de otra forma todos los caracteres no soportados pueden no ser mostrados como se espera.

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.

Recuerda, si no envías el access_token con el prefijo de Bearer separados de un espacio como en los ejemplos de arriba, o si haces una llamada a la API con el access_token expirado, la API responderá con un 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

Antes de enviar un SMS, debes recordar que en Chile no todos los operadores permiten el uso de caracteres especiales o cambios de codificación.