Enviar mensajes SMS

La API del servicio de mensajería Atmosphere® simplifica el envío y la recepción de mensajes SMS a través de sus números telefónicos de IntelePeer.

Todos los números telefónicos de IntelePeer se pueden usar para enviar y recibir mensajes SMS. Visite Aprovisionar números telefónicos para SMS para conocer cómo habilitar sus números para que envíen y reciban aplicaciones SMS.

Enviar un mensaje SMS

Puede enviar un mensaje SMS con una llamada a la API del servicio de mensajería Atmosphere®.

URI

POST en https://api.intelepeer.com/SMS/v1/{tn}/send

{tn} es el número telefónico, en formato E.164, desde el cual se enviará el mensaje.

 

Por ejemplo: usted quiere enviar un mensaje SMS desde el número norteamericano +17208675309 ejecutando POST en el URL

https://api.intelepeer.com/sms/v1/+17208675309/send

 

Parámetros

Este método de API requiere un token de autorización. Para más información sobre tokens de autorización, consulte Autenticación de API Atmosphere®.
 

ParámetroTipo de datosRequerido
enstringrequeridoÉl número en formato E.164 desde el cual se envía el mensaje (por ejemplo, +13038675309)
textostringrequeridoEl mensaje que será enviado
guidstringopcionalUn identificador que se anexa al mensaje en el Registro de Detalles de Mensajes para cotejarlo con otros registros del sistema.

 

Ejemplo de solicitud
{
    "to": "+13038675309",
    "text": "Hello World!",
    "guid": "1123123123123123"
}

 

Códigos de respuesta
Código de respuestaDescripción
202El mensaje SMS ha sido colocado en cola correctamente para ser entregado al número telefónico de destino.
400Se produjo uno de los siguientes errores:

  • El número telefónico no se encuentra en un formato E.164 correcto
  • El número telefónico no ha sido habilitado para SMS
  • no hay campos a/de texto en la solicitud
401Se produjo uno de los siguientes errores:

  • El token de autorización expiró
  • El usuario no es propietario del número telefónico
  • Actualmente la empresa no tiene habilitado el acceso a la API SMS
403El destino internacional no se encuentra disponible
404El cliente no puede usar el número telefónico

 

Ejemplo de respuesta
{
    "state": "CREATED",
    "refid": "SM5AC09A610001006568100005C32E9D"
}

 

Comportamiento

Los mensajes enviados por medio de la API del servicio de mensajería Atmosphere® son retenidos en cola para ser entregados de forma rápida y confiable al operador de destino, y finalmente, al teléfono del usuario final.

Puede comprobar el estado de un mensaje en cualquier momento después de enviarlo. Conozca cómo Comprobar el estado del mensaje.

El siguiente es el ciclo de vida del mensaje:

  1. Mensaje retenido en cola para ser entregado
  2. Mensaje entregado al operador móvil
  3. Mensaje entregado al cliente final
  4. En algunos casos, no es posible entregar el mensaje debido a los filtros de SPAM del operador u otras restricciones específicas del mismo

Es posible que haya retrasos en la entrega de un mensaje al cliente final por las siguientes razones:

  • Limitación de solicitudes impuesta por IntelePeer para mejorar la entrega de los mensajes
  • Limitación de solicitudes o control de SPAM impuestos por el operador móvil
  • El equipo del cliente final se encuentra fuera del área de servicio, está apagado o en modo avión

 

Ejemplo de código

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IntelePeerSMSExampleClient.sendSMS
{
    class SendSMS
    {
        public void run()
        {
            //Authorization Token from IntelePeer Customer Portal
            string TN = "INSERT_TELEPHONENUMBER_HERE_IN_E.164_FORMAT";
            string url = "https://api.intelepeer.com/sms/v1/" + TN + "/send";
            string AUTH_TOKEN = "INSERT_AUTH_TOKEN_HERE";
            string DEST_TN = "INSERT_RECEIVING_TELEPHONENUMBER_HERE_IN_E.164_FORMAT";
            string MESSAGE = "the time is now:" + DateTime.Now.ToShortTimeString();

            System.Net.WebRequest httpWebRequest = System.Net.WebRequest.Create(url);
            httpWebRequest.Method = "POST";

            //Add Header
            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Headers.Add("Authorization", "Bearer " + AUTH_TOKEN);

            //Data to be posted
            string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(
                    new
                    {
                        to = DEST_TN,
                        text = MESSAGE
                    }
                );

            //Add data to post
            using (System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(httpWebRequest.GetRequestStream()))
            {
                streamWriter.Write(json);
                streamWriter.Flush();
                streamWriter.Close();
            }

            try
            {
                //Submit Request and Read Response
                System.Net.WebResponse httpResponse = httpWebRequest.GetResponse();

                using (System.IO.StreamReader streamReader = new System.IO.StreamReader(httpResponse.GetResponseStream()))
                {
                    string result = streamReader.ReadToEnd();

                    System.Console.Write(result);
                }

            }
            catch (System.Net.WebException webException)
            {
                string response = webException.Message;
            }
            catch (Exception exception)
            {
                string response = exception.Message;
            }
            finally
            {
                //do something else
            }
        }
    }
}

 

Java

package main.java.tnActions.sendSms;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;

public class SendSms {
	public static void main(String... args) throws Exception {
		final String TN = "INSERT_TELEPHONENUMBER_HERE_IN_E.164_FORMAT";
		final String url = "https://api.intelepeer.com/sms/v1/" + TN + "/send";
		final String AUTH_TOKEN = "INSERT_AUTH_TOKEN_HERE";
		
		final String DEST_TN = "INSERT_RECEIVING_TELEPHONENUMBER_HERE_IN_E.164_FORMAT";
		final String MESSAGE = "the time is now: " + Calendar.getInstance().getTime();
		
		
		HttpClient httpclient = HttpClientBuilder.create().build();
		HttpPost httpPost = new HttpPost(url);
        
		// add header
		httpPost.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
		httpPost.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + AUTH_TOKEN);
        
		// Data to be posted
		List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
		urlParameters.add(new BasicNameValuePair("to", DEST_TN));
		urlParameters.add(new BasicNameValuePair("text", MESSAGE));
    	
		// add data to post
		httpPost.setEntity(new UrlEncodedFormEntity(urlParameters));
        
		// execute GET
		HttpResponse response = httpclient.execute(httpPost);
        
		System.out.println("\nSending 'POST' request to URL : " + url);
		System.out.println("Response Code : " + 
                       response.getStatusLine().getStatusCode());

		BufferedReader rd = new BufferedReader(
                       new InputStreamReader(response.getEntity().getContent()));

		StringBuffer result = new StringBuffer();
		String line = "";
		while ((line = rd.readLine()) != null) {
			result.append(line);
		}

		System.out.println(result.toString());
    }
}

 

Node.js

const request = require("request");

///////////////////////////////////////////////////////////////////////////////
/// update these accordingly                                                ///
///////////////////////////////////////////////////////////////////////////////
let authtoken = 'INSERT_AUTH_TOKEN_HERE'
let tn        = 'INSERT_SENDING_TELEPHONENUMBER_HERE_IN_E.164_FORMAT'
let dest_tn   = 'INSERT_RECEIVING_TELEPHONENUMBER_HERE_IN_E.164_FORMAT'
let message   = 'the time is now: {}'.format(datetime.now())

///////////////////////////////////////////////////////////////////////////////
/// leave these alone                                                       ///
///////////////////////////////////////////////////////////////////////////////
let url       = "https://api.intelepeer.com/sms/v1/" + tn +"/send"
let payload   = { 'to': dest_tn, 'text': message }
let hdrs      = {
    'Content-Type': "application/json",
    'Authorization': "Bearer " + authtoken
    }

///////////////////////////////////////////////////////////////////////////////
/// execute the task and parse results                                      ///
///////////////////////////////////////////////////////////////////////////////
request.post({
    url: url,
    headers: hdrs,
    form: payload
},
(error, response, body) => {        
    result = JSON.parse(body);
    console.log(result.text);
});

 

PHP

<?php

require '../../vendor/autoload.php';
use GuzzleHttp\Client;

###############################################################################
### update these accordingly                                                ###
###############################################################################
$authtoken = 'INSERT_AUTH_TOKEN_HERE';
$tn = 'INSERT_TELEPHONENUMBER_HERE_IN_E.164_FORMAT';
$dest_tn = 'INSERT_RECEIVING_TELEPHONENUMBER_HERE_IN_E.164_FORMAT';
$message = 'the time is now: '. date("Y-m-d H:i:s");

###############################################################################
### leave these alone                                                       ###
###############################################################################
$url  = "https://api.intelepeer.com/sms/v1/$tn/send";
$hdrs = ['Content-Type' => "application/json",
         'Authorization' => 'Bearer '.$authtoken
];
$payload = [ 'to' => $dest_tn, 'text' => $message ];

###############################################################################
### execute the task and parse results                                      ###
###############################################################################

try{
  $client = new Client();
  $response = $client->post($url, [
    'headers' => $hdrs,
    'json' => $payload
    ]);
}
catch (RequestException $e){
  echo "Request Failed:". $e->getMessage();
}

echo $response->getBody();
?>

 

Python

import requests
from datetime import datetime

###############################################################################
### update these accordingly                                                ###
###############################################################################
authtoken = 'INSERT_AUTH_TOKEN_HERE'
tn        = 'INSERT_SENDING_TELEPHONENUMBER_HERE_IN_E.164_FORMAT'
dest_tn   = 'INSERT_RECEIVING_TELEPHONENUMBER_HERE_IN_E.164_FORMAT'
message   = 'the time is now: {}'.format(datetime.now())

###############################################################################
### leave these alone                                                       ###
###############################################################################
url       = "https://api.intelepeer.com/sms/v1/{}/send".format(tn)
payload   = { 'to': dest_tn, 'text': message }
hdrs      = {
    'Content-Type': "application/json",
    'Authorization': 'Bearer {}'.format(authtoken)
    }

###############################################################################
### execute the task and parse results                                      ###
###############################################################################
response = requests.post(url, json=payload, headers=hdrs)
print u'{}: {}'.format('OK' if response else 'ERROR', response.text )