API Manual

Introdução

A SmartComm oferece uma API REST que abrange todo o fluxo de comunicação via SMS.

A autenticação é feita via autenticação básica e os dados enviados e recebidos em JSON.

Clique aqui e baixe exemplos completos de implementação em C#, Delphi, PHP e Java.

Nota: Implementação em Delphi

Para a implementação em Delphi é preciso instalar OpenSSL(32 bits), clique aqui e baixe.


Para exemplos de teste REST, utilize nossas demonstrações clicando aqui.

Para mais informações e/ou suporte, entre em contato com nossos atendentes

Envio Simples - SMS

Envio usando a mesma mensagem para todos os destinatários.

URL: https://api.smartcomm.digital/sms/envio

Método: POST

Restrições: Número máximo de destinatários 50.000

Parâmetros
Parâmetro Descrição Tipo Requerido*
Assunto Assunto da mensagem string/texto
Destinatarios Vetor/lista contendo celulares com DDD Ex: (11) 98765-4321 array/lista (string)
Data Horário para o envio das mensagens DateTime/data
Mensagem Conteúdo da mensagem string/texto
Flash Mensagem em formato flash boolean/verdadeiro ou falso
TipoEnvio Plataforma pela qual a mensagem será encaminhada int/numerico
1: Operacional
2: LongCode
3: Marketing
4: Business
Retorno
Parâmetro Descrição
Lote Id de identificação de envio cadastrado como lote
Destinatarios Array/lista (object/class):
Celular Celular de destino da mensagem
Sequencia Número identificador de mansgem
StatusMensagem Mensagem do status da resposta do envio
Status Código númerico da resposta do envio
0: Ocorreu uma exceção
1: Mensagens enviadas
2: Créditos insuficientes
3: Parâmetro Mensagem é requerido
4: Parâmetro Assunto é requerido
5: Parâmetro Destinatários é requerido
6: Número máximo de destinatários excedido
7: Limite máximo de caracteres: Short code marketing
Exemplos de implementação
        
                // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*

                public class Resposta
                {
                    public int Lote { get; set; }
                    public string StatusMensagem { get; set; }
                    public StatusEnvio Status { get; set; }
                    public IEnumerable< MensagensId > Destinatarios { get; set; }
                    public Resposta() {}
                }

                public enum EStatus
                {
                    Erro,
                    Sucesso,
                    SemCreditos,
                    SemMensagem,
                    SemAssunto,
                    SemDestinatarios,
                    MaximoDestinatarios,
                    TamanhoExcedido,
                    DestinatarioInvalido,
                }

                public class MensagensId
                {
                    public long Celular { get; set; }
                    public int Sequencia { get; set; }
                }

                public class Destinatario
                {
                    public string Celular { get; set; }
                    public string Assunto { get; set; }
                    public string Mensagem { get; set; }
                    public DateTime? Data { get; set; } = DateTime.Now;
                }

                public partial class SmartCommSMS
                {
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public SmartCommSMS(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }

                    public async Task< Resposta > EnviarMensagens(
                        IEnumerable< string >
                            destinatarios,
                            string mensagem,
                            DateTime? data = null,
                            string assunto = null,
                            bool flash = false)
                    {
                        using (var httpclient = new HttpClient())
                        {
                            httpclient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpclient.DefaultRequestHeaders.Accept.Clear();
                            httpclient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                            httpclient.DefaultRequestHeaders.Authorization = 
                    new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}")));

                            var envio = new
                            {
                                Destinatarios = destinatarios,
                                Mensagem = mensagem,
                                Data = data,
                                Assunto = assunto,
                                Flash = flash
                            };

                            try
                            {
                                var post = await httpclient.PostAsync(
                                    "sms/envio", 
                                     new StringContent(JsonConvert.SerializeObject(envio), Encoding.UTF8, "application/json"));

                                var resposta = JsonConvert.DeserializeObject< Resposta >(await post.Content.ReadAsStringAsync());

                                //  ... 
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação
                                return resposta;
                            }
                            catch (Exception e)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }
                }

                //  Exemplo de envio
                //  var envioSMS = new SmartCommSMS("usuario", "senha");
                //  var resposta = await envioSMS.EnviarMensagens(
                //        new List< string > { "(17) 996333355", "17 9964.53355", "1 7 9 9 6 4 5 3 3 5 5", "17996333355" },
                //        "mensagem Oi",
                //        data: DateTime.Parse("2022-01-01"), //Formatos: dd/MM/yyyy | yyyy/MM/dd
                //        assunto: "");
            
        
            
                //Requisito: Instalar OpenSSL http://slproweb.com/products/Win32OpenSSL.html
                unit TesteApi;

                interface
                    uses Variants, IdHTTP, IdSSLOpenSSL, Classes, SysUtils, JSON, DateUtils, RegularExpressions;
                    type
                        TSequenciaSMS = record
                            Celular: int64;
                            Sequencia: cardinal;
                        end;
                    type
                        TSequencias = array of TSequenciaSMS;
                    type
                        TWS20 = class
                            private
                            var usuario, senha: string;
                            const url: string = 'https://ws.smartcomm.digital/sms/';
    
                            function InvoqueMetodo(metodo: string; parametros: TJSONObject) : TJSONObject;
                            function ProcesseResposta(resposta: TJSONObject): TSequencias;

                        public
                            constructor Create(usuario: string; senha: string);
                            function EnvieSMS(celulares: array of string; Mensagem: string;
                            Data: TDateTime; Assunto: string): TSequencias;
                            function EnvieSmsPersonalizado(destinatarios: TDestinatarios): TSequencias;
                            function ConsulteStatus(sequencias: array of cardinal): TSequenciasStatus;
                            function ConsulteResposta(sequencias: array of cardinal): TRespostas;
                            function ConsulteSaldo(subUsuario: string = ''): int64;
                            function ConsulteMaisClientes(evento: cardinal; senha: string; todosCelulares: boolean): TMailings;
                            function CadastreEntrevistado(pesquisa: cardinal; Celular: string; nome: string; 
                                    apelido: string; referencia: string): cardinal;
                            function CadastreUsuario(login: string; senha: string; Celular: string; email: string; 
                                    nome: string; confirmacao: byte; resposta: byte; assinatura: string; 
                                    vendedor: boolean = false) : int64;
                        end;

                    implementation

                    constructor TWS20.Create(usuario: string; senha: string);
                        begin
                            self.usuario := usuario;
                            self.senha := senha;
                        end;

                    function TWS20.InvoqueMetodo(metodo: string; parametros: TJSONObject) : TJSONObject;
                        var
                            requerimento: TIdHttp;
                        begin
                        requerimento := TIdHttp.Create(nil);
                        try
                            requerimento.IOHandler := TIdSSLIOHandlerSOcketOpenSSL.Create(Nil);
                            requerimento.Request.ContentType := 'application/json';
                            requerimento.Request.CharSet := 'utf-8';
                            requerimento.Request.BasicAuthentication := true;
                            requerimento.Request.UserName := self.usuario;
                            requerimento.Request.Password := self.senha;
                            result := TJSONObject.ParseJSONValue
                                (TEncoding.ASCII.GetBytes(requerimento.Post(self.url + metodo,
                                TStringStream.Create(parametros.ToJSON(), TEncoding.UTF8, true))), 0)
                                as TJSONObject;
                        except
                            on e: Exception do
                                begin
                                requerimento.Free;
                                raise e;
                            end;
                        end;
                    end;

                    function TWS20.ProcesseResposta(resposta: TJSONObject): TSequencias;
                        var destinatarios: TJSONArray;
                        sequencias: TSequencias;
                        destino: TSequenciaSMS;
                        i: integer;
                        begin
                            if resposta.GetValue < TJSONString >('Status').Value <> '1' then
                            // verificar causa
                            begin
                                raise Exception.Create(resposta.GetValue< TJSONString > ('StatusMensagem').Value);
                            end
                            else
                                destinatarios := resposta.GetValue< TJSONArray >('Destinatarios');
                                SetLength(sequencias, destinatarios.Count);
                                for i := 0 to destinatarios.Count - 1 do
                            begin
                            destino.Celular := destinatarios.Items[i].GetValue< int64 >('Celular');
                            destino.Sequencia := destinatarios.Items[i].GetValue< cardinal >('Sequencia');
                            sequencias[i] := destino;
                        end;
                        result := sequencias;
                    end;

                    function TWS20.EnvieSMS(celulares: array of string; 
                        Mensagem: string; Data: TDateTime; Assunto: string): TSequencias;
        
                        var parametros: TJSONObject;
                        destinatarios: TJSONArray;
                        i: integer;
                        begin
                            parametros := TJSONObject.Create;
                            destinatarios := TJSONArray.Create;
                            for i := 0 to Length(celulares) - 1 do
                            destinatarios.Add(celulares[i]);
                            parametros.AddPair(TJSONPair.Create(TJSONString.Create('Destinatarios'), destinatarios));
                            parametros.AddPair(
                                TJSONPair.Create(TJSONString.Create('Mensagem'), TJSONString.Create(Mensagem)));
                            
                            parametros.AddPair(
                                TJSONPair.Create(TJSONString.Create('Data'), TJSONString.Create(DateTimeToStr(Data))));

                            parametros.AddPair
                                (TJSONPair.Create(TJSONString.Create('Assunto'), TJSONString.Create(Assunto)));
                            result := self.ProcesseResposta(self.InvoqueMetodo('envio', parametros));

                        end;

                        (* Exemplo de envio 
                            sms := TWS20.Create(usuario,senha);            
                            sms.EnvieSMS(['17988135454','17988138126'], 'oi', Date() ,'empresa diz' );               
                        *)
            
        
            
                class RespostaEnvio
                {
                    public $Lote, $StatusMensagem, $Status, $Destinatarios;
                    public function set($data)
                    {
                        foreach ($data AS $key => $value) $this->{$key} = $value;
                    }
                }

                class SMS
                {
                    public $usuario, $senha;
                    private $url = 'https://ws.smartcomm.digital/';

                    function __construct($usuario, $senha)
                    {
                        $this->usuario = $usuario;
                        $this->senha = $senha;
                    }

                    private function invoque_metodo ($metodo, $parametros, $classe)
                    {
                        $dados = array
                        (
                            'http' => array
                            (
                            'header' => array
                            (
                                'Content-type: application/json',
                                'Authorization: Basic ' . base64_encode($this->usuario . ':' . $this->senha)
                            ),
                            'method'  => 'POST',
                            'content' => json_encode($parametros),
                            ),
                        );

                        $retorno = file_get_contents($this->url . $metodo, false, stream_context_create($dados));

                        $resposta = new $classe();
                        $resposta->set(json_decode($retorno,true));
                        return $resposta;
                    }

                    function envie_sms($destinatarios, $mensagem, $assunto, $data, $flash)
                    {
                        $envio = array
                        (
                            'destinatarios' => $destinatarios,
                            'assunto' => $assunto,
                            'mensagem' => $mensagem,
                            'data' => $data,
                            'flash' => $flash
                        );
                        return $this->invoque_metodo('sms/envio', $envio, 'RespostaEnvio');
                    }
                }

                //  Exemplo de envio
                //  $sms = new SMS(usuario, senha);
                //  $dest = $sms->envie_sms(array('17)996333355', 
                //      '(17) 9 9 6 3 3 3 3 5 5', '17 9964.53355'), 'oi', '', date('dd/MM/yyyy'));
            
        
            
                public class Envio 
                {
                    public String[] destinatarios;
                    public String mensagem;
                    public Date data;
                    public String assunto;
                }

                public class SMSApi 
                {
                    String usuario, senha;
                    public SMSApi (String usuario, String senha)
                    {
                        this.usuario = usuario;
                        this.senha = senha;
                    }

                    public SequenciaSms [] envieSms (Envio envio) throws Exception 
                    {
                        return new InvocarMetodo< RespostaSms, Envio >()
                        .invoqueMetodo(this.usuario, this.senha, "envio", envio, RespostaSms.class).destinatarios;
                    }

                    static class Dados 
                    {
                        public Dados () {}
                        public EnvioPersonalizado [] destinatarios;
                        public int [] sequencias;
                        public String subUsuario;
                    }

                    static class RS 
                    {
                        public RS(){}
                        public String statusMensagem;
                        public int status;
                    }	

                    static class RespostaSms extends RS
                    {
                        public RespostaSms (){}
                        public int lote;		
                        public SequenciaSms [] destinatarios;
                    }	
                }

                public class InvocarMetodo< T, U > 
                {
                    T invoqueMetodo(String usuario, String senha, String metodo, U dados, Class< T > classeRetorno) 
                            throws Exception
                    {
                        ObjectMapper mapeador = new ObjectMapper();
                        mapeador.setDateFormat(new TicksSinceFormat())
                            .setSerializationInclusion(Include.NON_EMPTY)
                            .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
                            .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true)  
                            .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);

                        T retorno = mapeador.readValue(ClientBuilder.newClient()
                            .target("https://ws.smartcomm.digital/").path("sms/" + metodo)
                            .request(MediaType.APPLICATION_JSON_TYPE)
                            .header("Authorization", "Basic " + new String(Base64.encode((usuario + ":" + senha).getBytes())))
                            .post(Entity.entity(new ObjectMapper()
                            .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
                            .writeValueAsString(dados),MediaType.APPLICATION_JSON_TYPE), String.class), classeRetorno );

                        if (classeRetorno.getSuperclass().getDeclaredField("status").getInt(retorno) != 1)
                            throw new Exception 
                                ("Metodo retornou: " + classeRetorno.getSuperclass().getDeclaredField("statusMensagem")
                            .get(retorno).toString());

                        return retorno;		
                    }
                }
                //Datas no padrão "/Date(NUMERO)/"
                @SuppressWarnings("serial")
                class TicksSinceFormat extends DateFormat 
                {
                    @Override
                    public StringBuffer format(Date date, StringBuffer buffer, FieldPosition field) 
                    {
                        long millis = date.getTime();
                        return new StringBuffer("/Date(" + millis + ")/");
                    }

                    @Override
                    public Date parse(String string, ParsePosition position) 
                    {
                        int start = string.indexOf("(") + 1;
                        int end = string.indexOf(")");
                        String ms = string.substring(start, end);
                        Date date = new Date(Long.parseLong(ms));
                        position.setIndex(string.length() - 1); 
                        return date;
                    }
                    @Override
                    public Object clone() 
                    {
                        return new TicksSinceFormat(); 
                    }
                }
            
        

Envio Personalizado - SMS

Envio usando mensagens personalizadas para cadadestinatário.

URL: https://api.smartcomm.digital/sms/envioPersonalizado

Método: POST

Restrições: Número máximo de destinatários 20.000

Parâmetros
Parâmetro Descrição Tipo Requerido*
Destinatarios Lista com os seguintes parâmetros: Array/lista (object/class):
Parâmetro Descrição Tipo Requerido*
Assunto Assunto da mensagem string/texto
Celular Celular com DDD Ex: (11) 98765-4321 string/texto
Data Horário para o envio da mensagem DateTime/data
Mensagem Conteúdo da mensagem string/texto
TipoEnvio Plataforma pela qual a mensagem será encaminhada int/numerico
1: Operacional
2: LongCode
3: Marketing
4: Business
Retorno
Parâmetro Descrição
Lote Código identificador de envio cadastrado como lote
Destinatarios Array/lista (object/class):
Celular Celular de destino da mensagem
Sequencia Número identificador de mensagem
StatusMensagem Mensagem do status da resposta do envio
Status Código númerico da resposta do envio
0: Ocorreu uma exceção
1: Mensagens enviadas
2: Créditos insuficientes
3: Parâmetro Mensagem é requerido
4: Parâmetro Assunto é requerido
5: Parâmetro Destinatários é requerido
6: Número máximo de destinatários excedido
7: Limite máximo de caracteres: Short code marketing
8: Mensagem e Celular são requeridos em todos os itens da lista
Exemplos de implementação
            
                //  Tipos e declarações no exemplo Envio Simples

                public class Destinatario
                {
                    public string Celular { get; set; }
                    public string Assunto { get; set; }
                    public string Mensagem { get; set; }
                    public DateTime? Data { get; set; }
                    public Destinatario() { }
                }

                public partial class SMS
                {         
                    public async Task < RespostaSMS > EnvieSmsPersonalizado(IEnumerable< Destinatario > destinatarios)
                    {
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                            httpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue(
                                    "Basic",
                                    Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}")));

                            var envio = new { Destinatarios = destinatarios };
                            try
                            {
                                var post = await httpClient.PostAsync(
                                    "sms/envioPersonalizado", 
                                    new StringContent(JsonConvert.SerializeObject(envio), Encoding.UTF8, "application/json"));

                                var resposta = 
                                    JsonConvert.DeserializeObject< RespostaSMS >(await post.Content.ReadAsStringAsync());

                                //  ... 
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação

                                return resposta.
                            }
                            catch (Exception ex)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }       
                }

                //   Exemplo de envio
                //   var envioSMS = new SMS("usuario", "senha");
                //   var resposta = await envioSMS.EnvieSmsPersonalizado
                //       (new List>< Destinatario > 
                //       {
                //           new Destinatario 
                //           {
                //               Celular = "17 9964.53355",
                //               Assunto = "SmartComm",
                //               Mensagem = "ola",
                //               Data = DateTime.Now
                //           },
                //           new Destinatario 
                //           {
                //               Celular = "(17)996333355",                          
                //               Mensagem = "bom dia",
                //               Data = DateTime.Now.AddDays(30) // Agendado
                //           },
                //           new Destinatario 
                //           {
                //               Celular = "17996333355",
                //               Mensagem = "oi"
                //           }
                //       });
            
        
            
                //  Tipos e declarações no exemplo Envio Simples

                function TWS20.EnvieSmsPersonalizado(destinatarios: TDestinatarios) : TSequencias;    
                var
                    objeto, parametros: TJSONObject;
                    sms: TJSONArray;
                    i: integer;
                    begin
                        parametros := TJSONObject.Create;
                        sms := TJSONArray.Create;
                        for i := 0 to Length(destinatarios) - 1 do
                        begin
                            objeto := TJSONObject.Create;
                            objeto.AddPair(TJSONPair.Create(TJSONString.Create('Celular'),
                                TJSONString.Create(destinatarios[i].Celular)));

                            objeto.AddPair(TJSONPair.Create(TJSONString.Create('Assunto'),
                                TJSONString.Create(destinatarios[i].Assunto)));

                            objeto.AddPair(TJSONPair.Create(TJSONString.Create('Mensagem'),
                                TJSONString.Create(destinatarios[i].Mensagem)));

                            objeto.AddPair(TJSONPair.Create(TJSONString.Create('Data'),
                                TJSONString.Create(DateTimeToStr(destinatarios[i].Data))));
                            sms.AddElement(objeto);
                        end;
                        parametros.AddPair(TJSONPair.Create(TJSONString.Create('Destinatarios'), sms));
                        result := self.ProcesseResposta(self.InvoqueMetodo('envioPersonalizado', parametros));
                    end;

                (* 
                    Exemplo de envio
                    sms := TWS20.Create(usuario,senha);  
                    destino.Celular :=  '17988138869';
                    destino.Assunto :=  'oi';
                    destino.Mensagem := 'bom dia';
                    destino.Data :=     Date(); 

                    sms.EnvieSMSPersonalizado([destino]);               
                *)
            
        
        
            //  Tipos e declarações no exemplo Envio Simples

            class SMS 
            {    
                function envie_sms_personzalido($destinatarios)
                {
                    $envio = array ('destinatarios' => $destinatarios); 
                    return $this->invoque_metodo('sms/envioPersonalizado', $envio, 'RespostaEnvio');
                }
            }

            //  Exemplo de envio
            //  $sms = new SMS(usuario, senha);
            //  $sms->envie_sms_personzalido
            //  (
            //      array 
            //      ( 
            //          array('celular' => "(17)996333355", 
                              'mensagem' => "bom dia", 'data' => date("dd/MM/yyyy")), 

            //          array('celular' => "17.99633.3355", 'assunto' => "ola", 
                              'mensagem' => "boa tarde", 'data' => date("dd/MM/yyyy")), 

            //          array('celular' => "17996333355", 'mensagem' => "oi")
            //      )
            //  );
        
        
            
                //  Tipos e declarações no exemplo Envio Simples

                public class EnvioPersonalizado 
                {
	                public String celular;
	                public String mensagem;
	                public Date data;
	                public String assunto;
                }

                public class SMSApi
                {
                    public SequenciaSms[] envieSms (EnvioPersonalizado [] envio) throws Exception 
                    {
		                return new InvocarMetodo< RespostaSms, Dados >()
                            .invoqueMetodo(this.usuario, this.senha, "envioPersonalizado",
                            new Dados() { { destinatarios = envio; } }, RespostaSms.class).destinatarios;
	                }
                }
            
        

Consulta Status - SMS

Consulte o status de envio das mensagens solicitadas.

URL: https://api.smartcomm.digital/sms/status

Método: POST

Restrições:

  • Intervalo a cada consulta: 60 segundos
  • Mensagens enviadas: Somente últimos 03 dias
  • Status de: Apenas mensagens do própio usuário

* É recomendado o uso da consulta de status via URL *

Parâmetros
Parâmetro Descrição Tipo Requerido*
Sequencias Array/Lista contendo os id/números de identificação das mensagens desejadas array/lista (string)
Retorno
Parâmetro Descrição
StatusSequencias Array/lista (object/class):
Sequencia Número identificados da mensagem enviada
StatusCodigo Código númerico de atual status da mensagem
StatusDescricao Descrição do atual status da mensagem
StatusMensagem Mensagem do status da resposta do envio
Status Código númerico da resposta do envio
0: Ocorreu uma exceção
1: Retornados com sucesso
2: Intervalo mínimo entre consultas é de 60 segundos
Codigos de status
Código Status Descrição
101 Enviar A mensagem está em estágio de processamento
104 Erro Ocorreu um erro na comunicação com a operadora; a mensagem não foi enviada.
105 Enviada Mensagem enviada; sem confirmação da entrega pela operadora.
106 Não entregue A operadora não pôde enviar a mensagem por alguma razão técnica.
107 Entregue Mensagem enviada; entrega confirmada pela operadora.
108 Blacklist Mensagem não enviada; o número está na lista de bloqueio/blacklist.
109 Inválido Mensagem enviada; número de linha fixa, inválido e/ou inexistente.
112 Cota Excedida Máximo de 05 envios semanais para o mesmo número excedido.
113 Entregue sem confirmação Mensagem enviada; operadora não possui função de confirmação de entrega
114 SPAM Mensagem não enviada; conteúdo contém palavras não permitidas/ofensivas/enganosas
116 Duplicado Mensagem não enviada; intervalo mínimo de 02 horas para o mesmo número com conteúdo igual (assunto, mensagem e assinatura)
Exemplos de implementação
            
                // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*

                public partial class SMS
                {
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public SMS(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }

                    public async Task< RespostaStatus > ConsulteStatus(IEnumerable< int > sequencias)
                    {
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(
                                new MediaTypeWithQualityHeaderValue("application/json"));

                            httpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue(
                                    "Basic", 
                                    Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}")));
            
                            var sequenciaSMS = new { Sequencias = sequencias };

                            try
                            {
                                var post = await httpClient.PostAsync("sms/status", new StringContent(
                                    JsonConvert.SerializeObject(sequenciaSMS), Encoding.UTF8, "application/json"));

                                var resposta = JsonConvert
                                        .DeserializeObject< RespostaStatus >(await post.Content.ReadAsStringAsync());

                                //  ... 
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação
                                return resposta;
                            }
                            catch (Exception ex)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }

                    public enum StatusResposta
                    {
                        Erro,
                        Sucesso,
                        MaximoConsultas
                    }

                    public class RespostaStatus
                    {
                        public IEnumerable< SequenciaStatus > StatusSequencias { get; set; }
                        public StatusResposta Status { get; set; }
                        public string StatusMensagem { get; set; }
                        public RespostaStatus() { }
                    }
                }

                //  Exemplo de envio
                //  var envioSMS = new SMS("usuario", "senha");
                //  var resposta = await envioSMS.ConsulteStatus(sequencias);
            
        
            
                //Requisito: Instalar OpenSSL http://slproweb.com/products/Win32OpenSSL.html
                unit TesteApi;

                //  Tipos e declarações no exemplo Envio Simples

                function TWS20.ConsulteStatus(sequencias: array of cardinal): TSequenciasStatus;
                    var
                        objetos: TJSONObject;
                        vetor: TJSONArray;
                        i: integer;
                        status: TStatusSMS;
                        sequenciaStatus: TSequenciasStatus;
                    begin
                        objetos := TJSONObject.Create;
                        vetor := TJSONArray.Create;
                        for i := 0 to Length(sequencias) - 1 do
                            vetor.Add(sequencias[i]);
                            objetos.AddPair(TJSONPair.Create(TJSONString.Create('Sequencias'), vetor));
                            objetos := self.InvoqueMetodo('status', objetos);
                            if objetos.GetValue <TJSONString>('Status').Value <> '1' then
                                begin
                                    raise Exception.Create(objetos.GetValue<TJSONString>('StatusMensagem').Value);
                                end
                            else
                                vetor := objetos.GetValue<TJSONArray>('StatusSequencias');
                                SetLength(sequenciaStatus, vetor.Count);
                        for i := 0 to vetor.Count - 1 do
                        begin
                            status.StatusDescricao := vetor.Items[i].GetValue<string> ('StatusDescricao');
                            status.Sequencia := vetor.Items[i].GetValue<cardinal>('Sequencia');
                            status.StatusCodigo := vetor.Items[i].GetValue<cardinal>('Sequencia');
                            sequenciaStatus[i] := status;
                        end;
                        result := sequenciaStatus;
                    end;
  
                (* 
                    Exemplo de envio
                    sms := TWS20.Create(usuario,senha);            
                    sms.ConsulteStatus([271619437, 271619438, 271619440]);
                *)
            
        
            
                //  Tipos e declarações no exemplo Envio Simples

                class RespostaStatus 
                {
                    public $StatusSequencias, $StatusCodigo, $StatusMensagem;
                    public function set($data) 
                    {
                        foreach ($data AS $key => $value) $this->{$key} = $value;
                    }
                }

                class SMS 
                {
                    function consulte_status($sequencias)  
                    {
                        $sequencias_sms = array ('sequencias' => $sequencias); 
        
                        return $this->invoque_metodo('sms/status', $sequencias_sms, 'RespostaStatus');
                    }    
                }

                //  Exemplo de envio
                //  $sms = new SMS(usuario, senha);
                //  $sms-> consulte_status(sequencias);
            
        
            
                //  Tipos e declarações no exemplo Envio Simples

                public class StatusSequencias 
                {
	                public int statusCodigo;
	                public int sequencia;
                }

                public class SMSApi 
                {
                    public StatusSequencias[] consulteStatus(int [] sequencia) throws Exception
	                {
		                return new InvocarMetodo< RespostaStatus, Dados >()
			                .invoqueMetodo(this.usuario, this.senha, "status", 
				                new Dados() { { sequencias = sequencia; } }, RespostaStatus.class).statusSequencias;
	                }
    
	                static class RespostaStatus extends RS 
	                {
		                public RespostaStatus(){}
		                public StatusSequencias [] statusSequencias;	
	                }	
                }
            
        

Consulta Status via URL - SMS

Receba o status de envio das mensagens enviadas em sua aplicação, e, a cada atualização de status, sua URL será chamada

* Para habilitar esta função, cadastre uma URL no menu Configurações na plataforma. *

URL Ex.: https://www.seudominio.com/notificacoes

Parâmetros
Parâmetro Descrição
TipoSMS Código númerico do tipo de plataforma por qual foi encaminhada a mensagem
01: Short code - Operacional
03: Short code - Marketing
TipoSMSDescricao Descrição do tipo de plataforma por qual foi encaminhada a mensagem
Sequencia Número identificador de mensagem
StatusCodigo Código númerico do atual status da mensagem
StatusDescricao Mensagem do status da resposta do envio
Status Código númerico da resposta do envio
1: Retornado com sucesso
Codigos de status
Código Status Descrição
101 Enviar A mensagem está em estágio de processamento
104 Erro Ocorreu um erro na comunicação com a operadora; a mensagem não foi enviada.
105 Enviada Mensagem enviada; sem confirmação da entrega pela operadora.
106 Não entregue A operadora não pôde enviar a mensagem por alguma razão técnica.
107 Entregue Mensagem enviada; entrega confirmada pela operadora.
108 Blacklist Mensagem não enviada; o número está na lista de bloqueio/blacklist.
109 Inválido Mensagem enviada; número de linha fixa, inválido e/ou inexistente.
112 Cota Excedida Máximo de 05 envios semanais para o mesmo número excedido.
113 Entregue sem confirmação Mensagem enviada; operadora não possui função de confirmação de entrega
114 SPAM Mensagem não enviada; conteúdo contém palavras não permitidas/ofensivas/enganosas
116 Duplicado Mensagem não enviada; intervalo mínimo de 02 horas para o mesmo número com conteúdo igual (assunto, mensagem e assinatura)

Cancelamento de envio de SMS

Cancela o envio das mensagens SMS ainda não processadas

URL: https://api.smartcomm.digital/sms/cancelamento

Método: POST

Restrições: Apenas mensagens com o status Enviar

Parâmetros
Parâmetro Descrição Tipo Requerido*
Sequencias Vetor/lista contendo os códigos das mensagens selecionadas array/lista (int)
Lotes Vetor/lista contendo os códigos dos lotes selecionadas array/lista (int)
Retorno
Parâmetro Descrição
TotalMensagensCanceladas Número total de mensagens canceladas
StatusMensagem Mensagem do status da resposta da operação
Cancelamentos Array/lista object/class:
Sequencia Código identificador da mensagem
Cancelado Valor bool (verdadeiro/falso) se a mensagem foi cancelada
Status Código númerico da resposta da operação
0: Ocorreu uma exceção
1: Mensagens canceladas
2: Parâmetro Sequencias e/ou Lotes é requerido
Exemplos de implementação
            
                // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*

                public enum EStatusCancelamento 
                {
                    Erro, 
                    Sucesso, 
                    SemSequencias 
                }

                public class RespostaCancelamento
                {
                    public string StatusMensagem { get; set; }
                    public int TotalMensagensCanceladas { get; set; }
                    public EStatusCancelamento Status { get; set; }
                }

                public partial class SmartCommSMS
                {
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public SmartCommSMS(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }

                    public async Task< RespostaCancelamento > CancelarEnvio(IEnumerable< int > sequencias)
                    {
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(
                                new MediaTypeWithQualityHeaderValue("application/json"));
                            httpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue(
                                    "Basic", 
                                    Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}")));

                            var parametro = new { Sequencias = sequencias };

                            try
                            {
                                var post = await httpClient.PostAsync("sms/saldo", 
                                    new StringContent
                                        (JsonConvert.SerializeObject(parametro), 
                                        Encoding.UTF8, 
                                        "application/json"));

                                var resposta = JsonConvert
                                    .DeserializeObject< RespostaCancelamento >(await post.Content.ReadAsStringAsync());

                                //  ...
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação
                                return resposta;
                            }
                            catch (Exception e)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }
                }
                
                //  Exemplo de cancelamento
                //  var cancelamento = new SmartCommSMS("usuario", "senha");
                //  var resposta = await cancelamento.CancelarEnvio(
                //     new List< int > { 1415761482, 1799254862, 1741826965  });
            
        
            
            
        
            
            
        
            
            
        

Consulta Resposta - SMS

Consulte as respostas das mensagens solicitadas.

URL: https://api.smartcomm.digital/sms/resposta

Método: POST

Restrições:

  • Intervalo a cada consulta: 60 segundos
  • Status de: Apenas mensagens do própio usuário

* É recomendado o uso da consulta de resposta via URL *

Parâmetros
Parâmetro Descrição Tipo Requerido*
Sequencias Array/Lista contendo os id/números de identificação das mensagens desejadas array/lista (string)
Retorno
Parâmetro Descrição
Respostas Array/lista (object/class):
Sequencia Número identificador da mensagem enviada
Mensagem Resposta à mensagem encaminhada ao destinatário
Data Data da resposta recebida
Celular Número do remetente
StatusMensagem Mensagem do status da resposta do envio
Status Código númerico da resposta do envio
0: Ocorreu uma exceção
1: Retornados com sucesso
2: Intervalo mínimo entre consultas é de 60 segundos
Exemplos de implementação
            
                // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*

                public class Resposta
                {
                    public int Sequencia { get; set; }
                    public string Mensagem { get; set; }
                    public DateTime Data { get; set; }
                    public Resposta() { }
                }

                public enum StatusRespostaSMS
                {
                    Erro,
                    Sucesso,
                    MaximoConsultas
                }

                public class RetornoSMS
                {
                    public StatusRespostaSMS Status { get; set; }
                    public string StatusMensagem { get; set; }
                    public IEnumerable< Resposta > Respostas { get; set; }
                    public RetornoSMS() { }
                }

                public partial class SMS
                {      
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public SMS(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }

                    public async Task< RetornoSMS > ConsulteResposta(IEnumerable< int > sequencias)
                    {
                        using (var httpClient = new HttpClient())
                        {
                            HttpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");                        
                            HttpClient.DefaultRequestHeaders.Accept.Clear();
                            HttpClient.DefaultRequestHeaders.Accept.Add(
                                new MediaTypeWithQualityHeaderValue("application/json"));

                            HttpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue
                                (
                                    "Basic",
                                    Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}"))
                                );

                            var sequenciasSMS = new { Sequencias = sequencias };
            
                            try
                            {
                                var post = await HttpClient.PostAsync("sms/resposta", 
                                    new StringContent(
                                        JsonConvert.SerializeObject(sequenciasSMS), 
                                        Encoding.UTF8, 
                                        "application/json"));

                                var resposta = JsonConvert
                                    .DeserializeObject< RetornoSMS >(await post.Content.ReadAsStringAsync());

                                //  ... 
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação
                                return resposta;
                            }
                            catch (Exception e)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }
                }

                //  Exemplo de envio
                //  var envioSMS = new SMS("usuario","senha");
                //  var resposta = await sms.ConsulteResposta(sequencias);
            
        
            
                //Requisito: Instalar OpenSSL http://slproweb.com/products/Win32OpenSSL.html
                unit TesteApi;

                //  Tipos e declarações no exemplo Envio Simples
                function TWS20.ConsulteResposta(sequencias: array of cardinal): TRespostas;
                    var
                        objetos: TJSONObject;
                        vetor: TJSONArray;
                        i: integer;
                        resp: TRespostaSMS;
                        respostas: TRespostas;
                        regex: TRegEx;
                    begin
                        objetos := TJSONObject.Create;
                        vetor := TJSONArray.Create;
                        regex := TRegEx.Create('\D', [roIgnoreCase, roMultiline]);
                    for i := 0 to Length(sequencias) - 1 do
                        vetor.Add(sequencias[i]);
                        objetos.AddPair(TJSONPair.Create(TJSONString.Create('Sequencias'), vetor));
                        objetos := self.InvoqueMetodo('resposta', objetos);
                    if objetos.GetValue<TJSONString>('Status').Value <> '1' then
                        begin
                            raise Exception.Create(objetos.GetValue<TJSONString>('StatusMensagem').Value);
                        end
                    else
                        vetor := objetos.GetValue<TJSONArray>('Respostas');
                        SetLength(respostas, vetor.Count);
                    for i := 0 to vetor.Count - 1 do
                        begin
                            resp.Mensagem := vetor.Items[i].GetValue<string>('Mensagem');
                            resp.Sequencia := vetor.Items[i].GetValue<cardinal>('Sequencia');
                            resp.Data := IncSecond(StrToDate('1/1/1970'),
                            StrToInt64(regex.Replace(vetor.Items[i].GetValue<string>('Data'), '')));
                            respostas[i] := resp;
                        end;
                    result := respostas;
                    end;

                (* 
                    Exemplo de envio 
                    sms := TWS20.Create(usuario,senha);            
                    sms.ConsulteResposta([271639150]);
                *)
            
        
            
                //  Tipos e declarações no exemplo Envio Simples
                class RespostaResposta 
                {
                    public $Respostas, $Status, $StatusMensagem;
                    public function set($data) 
                    {
                        foreach ($data AS $key => $value) $this->{$key} = $value;
                    }   
                }

                class SMS 
                {
                    function consulte_resposta($sequencias)
                    {
                        $sequencias_sms = array ('sequencias' => $sequencias); 
                        return $this->invoque_metodo('sms/resposta', $sequencias_sms, 'RespostaResposta');
                    }
                }

                //  Exemplo de envio
                //  $sms = new SMS (usuario,senha);
                //  $sms->consulte_resposta(sequencias);

            
        
            
                //  Tipos e declarações no exemplo Envio Simples

                public class Resposta 
                {
	                public int Sequencia;
	                public String Mensagem;
	                public Date Data;
                }

                public class SMSApi 
                {
	                public Resposta [] consulteResposta(int[] sequencia) throws Exception
	                {
		                return new InvocarMetodo< RespostaResposta, Dados >()
			                .invoqueMetodo(this.usuario, this.senha, "resposta", 
				                new Dados() { { sequencias = sequencia; } }, RespostaResposta.class).respostas;
	                }
	
	                static class RespostaResposta extends RS
	                {
		                public RespostaResposta(){}
		                public Resposta [] respostas;
	                }	
                }
            
        

Consulta Resposta via URL - SMS

Receba as respostas de envio das mensagens enviadas em sua aplicação, e, a cada atualização de status sua URL será chamada

* Para habilitar esta função, cadastre uma URL no menu Configurações na plataforma. *

URL Ex.: https://www.seudominio.com/notificacoes

Parâmetros
Parâmetro Descrição
TipoSMS Código númerico do tipo de plataforma por qual foi encaminhada a mensagem
01: Short code - Operacional
03: Short code - Marketing
TipoSMSDescricao Descrição do tipo de plataforma por qual foi encaminhada a mensagem
Sequencia Número identificador de mensagem
Mensagem Resposta à mensagem encaminhada ao destinatário.
Data Data do recebimento da resposta.
Status Código númerico da resposta do envio
1: Retornado com sucesso

Consulta de saldo

Consulta o saldo disponível ou de subusuários

URL: https://api.smartcomm.digital/sms/saldo

Método: POST

Restrições: Intervalo entre consultas 10 segundos

Parâmetros
Parâmetro Descrição Tipo Requerido*
Subusuarios Vetor/lista contendo os códigos dos usuários array/lista (string)
Subusuario Código do usuário/subusuário string/texto
Retorno
Parâmetro Descrição
Saldos Array/lista (object/class):
Subusuario Código do subusuário
Saldo Saldo disponível do subusuário
Saldo Créditos disponíveis; próprios ou do subusuário informado
Status Código númerico da resposta da consulta
0: Ocorreu uma exceção
1: Saldo retornado
2: Intervalo mínimo entre consultas é de 10 segundos
3: Usuário inativo e/ou não encontrado
Exemplos de implementação
            
                // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*

                public enum StatusSaldo
                {
                    Erro,
                    Sucesso,
                    MaximoConsultas,
                    UsuarioInvalido
                }

                public class RespostaSaldo
                {
                    public int Saldo { get; set; }
                    public StatusSaldo Status { get; set; }
                    public string StatusMensagem { get; set; }
                    public RespostaSaldo() { }
                }

                public partial class SMS
                {
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public SMS(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }

                    public async Task< RespostaSaldo > ConsulteSaldo(string subusuario = null)
                    {
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(
                                new MediaTypeWithQualityHeaderValue("application/json"));
                            httpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue(
                                    "Basic", 
                                    Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}")));

                            var parametro = new { Subusuario= subusuario };

                            try
                            {
                                var post = await httpClient.PostAsync("sms/saldo", 
                                    new StringContent
                                        (JsonConvert.SerializeObject(parametro), 
                                        Encoding.UTF8, 
                                        "application/json"));

                                var resposta = JsonConvert
                                    .DeserializeObject< RespostaSaldo >(await post.Content.ReadAsStringAsync());

                                //  ...
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação
                                return resposta;
                            }
                            catch (Exception e)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }
                }

                //  Exemplo de envio
                //  var consulta = new SMS("usuario", "senha" );
                //  var resposta = await sms.ConsulteSaldo();
            
        
            
                //Requisito: Instalar OpenSSL http://slproweb.com/products/Win32OpenSSL.html
                unit TesteApi;

                //  Tipos e declarações no exemplo Envio Simples
                function TWS20.ConsulteSaldo(subUsuario: string = ''): int64;
                    var
                        objeto: TJSONObject;
                        begin
                            objeto := TJSONObject.Create;
                            objeto.AddPair(TJSONPair.Create(TJSONString.Create('subUsuario'),
                                TJSONString.Create(subUsuario)));
                            objeto := self.InvoqueMetodo('saldo', objeto);

                            if objeto.GetValue<TJSONString>('Status').Value <> '1' then
                                begin
                                    raise Exception.Create(objeto.GetValue<TJSONString> 
                                        ('StatusMensagem').Value);
                                end
                            else
                                result := StrToInt64(objeto.GetValue<TJSONNumber>
                                    ('Saldo').Value);
                        end;

                (* 
                    Exemplo de envio
                    sms := TWS20.Create(usuario,senha);            
                    sms.ConsulteSaldo();
                *)
            
        
            
                //  Tipos e declarações no exemplo Envio Simples
                class RespostaSaldo 
                {
                    public $Mailing, $Status, $StatusMensagem;
                    public function set($data) 
                    {
                        foreach ($data AS $key => $value) $this->{$key} = $value;
                    }   
                }

                class SMS 
                {
                    function consulte_saldo($sub_usuario = '')
                    {
                        $parametro = array ('subUsuario' => $sub_usuario); 
                        return $this->invoque_metodo('sms/saldo', $parametro, 'RespostaSaldo');
                    }
                }
                
                //  Exemplo de envio
                //  $sms = new SMS (usuario,senha);
                //  $sms-> consulte_saldo();
            
        
            
                //  Tipos e declarações no exemplo Envio Simples
                public class SMSApi 
                {
                    public int consulteSaldo() throws Exception
	                {
		                return consulteSaldo("");
	                }
    
	                public int consulteSaldo(String subusuario) throws Exception
	                {
		                return new InvocarMetodo<RespostaSaldo, Dados>()
			                .invoqueMetodo(this.usuario, this.senha, "saldo", 
				                new Dados() { { subUsuario = subusuario; } }, RespostaSaldo.class).saldo;
	                }

                    static class RespostaSaldo extends RS 
	                {
		                public RespostaSaldo(){}
		                public int saldo;	
	                }
                }
            
        

Transferência de Crédito

Transfira créditos para subusuários

URL: https://api.smartcomm.digital/sms/transferencia

Método: POST

Restrições: Recurso disponível somente para o administrador da conta franqueada

Parâmetros
Parâmetro Descrição Tipo Requerido*
Subusuario Código do usuário/subusuário destinatário dos créditos string/texto
Quantidade Quantidade de créditos para transferir int/numérico
Retorno
Parâmetro Descrição
Status Código númerico da resposta da consulta
0: Ocorreu uma exceção
1: Transferência efetuada com sucesso
2: Transferência não pode ser conclúida
3: Créditos insuficientes
Exemplos de implementação
            
                // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*

                public enum StatusTransferencia
                {
                    Erro,
                    Sucesso,
                    TransferenciaInvalida,
                    CreditosInsuficientesExpirados
                }

                public class RespostaTransferencia
                {
                    public StatusTransferencia Status { get; set; }
                    public string StatusMensagem { get; set; }
                    public RespostaTransferencia() { }
                }

                 public partial class SMS
                {
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public SMS(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }
        
                    public async Task< bool > TransfiraCreditos(string Subusuario, uint Quantidade)
                    {
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(
                                new MediaTypeWithQualityHeaderValue("application/json"));

                            httpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue(
                                    "Basic", 
                                    Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}")));
            
                            var transferencia = new { Quantidade, Subusuario };

                            try
                            {
                                var post = await httpClient.PostAsync(
                                    "sms/transferencia", new StringContent(
                                    JsonConvert.SerializeObject(transferencia), 
                                    Encoding.UTF8, "application/json"));

                                var resposta = JsonConvert
                                    .DeserializeObject < RespostaTransferencia >(await post.Content.ReadAsStringAsync());

                                //  ...
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação

                                return resposta.Equals(StatusTransferencia.Sucesso)
                            }
                            catch (Exception e)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    } 
                }
                    
                //  Exemplo de envio
                //  var sms = new SMS("meu_usuario", "minha_senha");
                //  var resposta  = await sms.TransfiraCreditos("meu_atendimento", 500);
            
        
            
                //Requisito: Instalar OpenSSL http://slproweb.com/products/Win32OpenSSL.html
                unit TesteApi;

                //  Tipos e declarações no exemplo Envio Simples
                procedure TWS20.TransfiraCreditos(subUsuario: string; quantidade: integer);
                    var objeto: TJSONObject;
                    begin
                        objeto := TJSONObject.Create;
                        objeto.AddPair(TJSONPair.Create(TJSONString.Create('subUsuario'),
                            TJSONString.Create(subUsuario)));
                        objeto.AddPair(TJSONPair.Create(TJSONString.Create('quantidade'),
                            TJSONNumber.Create(quantidade)));
                        objeto := self.InvoqueMetodo('transferencia', objeto);
                        if objeto.GetValue<TJSONString>('Status').Value <> '1' then
                            begin
                                raise Exception.Create(objeto.GetValue<TJSONString> ('StatusMensagem').Value);
                            end
                        else
                    end;
                (* 
                    Exemplo de envio
                    sms := TWS20.Create(usuario,senha);            
                    sms.TransfiraCreditos("subusuario", 500);
                *)
            
        
            
                //  Tipos e declarações no exemplo Envio Simples
                class RespostaTransferencia 
                {
                    public $Status, $StatusMensagem;
                    public function set($data) 
                    {
                        foreach ($data AS $key => $value) $this->{$key} = $value;
                    }   
                }

                class SMS 
                {
                    function transfira_creditos($sub_usuario, $quantidade) 
                    {
                        $parametro = array ('subUsuario' => $sub_usuario, 'quantidade' => $quantidade); 
                        return $this->invoque_metodo('sms/transferencia', $parametro, 'RespostaTransferencia');
                    }
                }

                //  Exemplo de envio
                //  $sms = new SMS (usuario,senha);
                //  $sms->transfira_creditos('subusuario', quantidade);
            
        
            
                //  Tipos e declarações no exemplo Envio Simples
                public class Transferencia 
                {
	                public int quantidade;
                    public String subUsuario;
                }

                public class SMSApi 
                {
	                public void transfiraCreditos(Transferencia transferencia) throws Exception
	                {
		                new InvocarMetodo()
			                .invoqueMetodo(this.usuario, this.senha, 
				                "transferencia", transferencia, RespostaRS.class);
	                }
	
	                static class RespostaRS extends RS { }
                }
            
        

Consulta Mais Clientes

Gerar o mailing da ferramenta Mais Clientes

URL: https://api.smartcomm.digital/sms/mailingMaisClientes

Método: POST

Restrições:

Parâmetros
Parâmetro Descrição Tipo Requerido*
Evento Código identificador do evento int/numérico
Senha Senha do evento string/texto
TodosCelulares Baixar todos os números ou apenas novos boolean/verdadeiro ou falso
Retorno
Parâmetro Descrição
Mailing Array/lista (object/class):
Id Número identificador do participante
Celular Celular do participante
Campo1 Campo número 01 para dados
Campo2 Campo número 02 para dados
Campo3 Campo número 03 para dados
Status Código númerico da resposta da consulta
0: Ocorreu uma exceção
1: Retornado com sucesso
2: Evento e/ou senha inválidos
StatusMensagem Mensagem do status da resposta do envio
Exemplos de implementação
            
               // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*

                public enum StatusMailingMaisClientes
                {
                    Erro,
                    Sucesso,
                    EventoInvalido
                }

                public class RespostaMailingMaisClientes
                {
                    public IEnumerable< Mailing > Mailing { get; set; }
                    public StatusMailingMaisClientes Status { get; set; }
                    public string StatusMensagem { get; set; }
                }

                public partial class SMS
                {
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public SMS(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }
    
                    public async Task< RespostaMailingMaisCliente > 
                        ConsulteMaisClientes(int evento, string senha, bool todosCelulares)
                    {
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(
                                new MediaTypeWithQualityHeaderValue("application/json"));
                            httpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue(
                                    "Basic", 
                                    Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}", Usuario, Senha)));

                            var maisClientes = new
                            {
                                Evento = evento,
                                Senha = senha,
                                TodosCelulares = todosCelulares
                            };

                            try
                            {
                                var post = await httpClient.PostAsync("sms/mailingMaisClientes", 
                                    new StringContent(
                                        JsonConvert.SerializeObject(maisClientes), 
                                        Encoding.UTF8, 
                                        "application/json"));

                                var resposta = JsonConvert
                                    .DeserializeObject< RespostaMailingMaisCliente >(await post.Content.ReadAsStringAsync());
            

                                //  ...
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação

                                return resposta;
                            }
                            catch (Exception e)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }
                }

                //  Exemplo de envio
                //  var sms = new SMS("usuario", "senha" );
                //  var resposta = await sms.ConsulteMaisClientes(123456, minhasenhasupersecreta, true);
            
        
            
                //Requisito: Instalar OpenSSL http://slproweb.com/products/Win32OpenSSL.html
                unit TesteApi;

                //  Tipos e declarações no exemplo Envio Simples
                function TWS20.ConsulteMaisClientes(evento: cardinal; senha: string;
                        todosCelulares: boolean): TMailings;
                    var
                        objetos: TJSONObject;
                        vetor: TJSONArray;
                        i: integer;
                        mailing: TMailings;
                        ml: TMailingSMS;
                    begin
                        objetos := TJSONObject.Create;
                        objetos.AddPair(TJSONPair.Create(TJSONString.Create('Evento'),
                            TJSONNumber.Create(evento)));

                        objetos.AddPair(TJSONPair.Create(TJSONString.Create('Senha'),
                            TJSONString.Create(senha)));

                        if todosCelulares then
                            begin
                                objetos.AddPair(TJSONPair.Create(TJSONString.Create('TodosCelulares'),
                                    TJSONTrue.Create()));
                            end
                        else
                            objetos.AddPair(TJSONPair.Create(TJSONString.Create('TodosCelulares'),
                                TJSONFalse.Create()));

                        objetos := self.InvoqueMetodo('mailingMaisClientes', objetos);

                        if objetos.GetValue<TJSONString>('Status').Value <> '1' then
                            begin
                                raise Exception.Create(objetos.GetValue<TJSONString>
                                    ('StatusMensagem').Value);
                            end
                        else
                            vetor := objetos.GetValue<TJSONArray>('Mailing');
                            SetLength(mailing, vetor.Count);
                        for i := 0 to vetor.Count - 1 do
                            begin
                                ml.ID := vetor.Items[i].GetValue<cardinal>('ID');
                                ml.Celular := vetor.Items[i].GetValue<string>('Celular');
                                ml.Campo1 := vetor.Items[i].GetValue<string>('Campo1');
                                ml.Campo2 := vetor.Items[i].GetValue<string>('Campo2');
                                ml.Campo3 := vetor.Items[i].GetValue<string>('Campo3');
                                mailing[i] := ml;
                            end;
                        result := mailing;
                    end;

                (* 
                    Exemplo de envio
                    sms := TWS20.Create(usuario,senha);            
                    sms.ConsulteMaisClientes (evento,senha, true);               
                *)
            
        
            
                //  Tipos e declarações no exemplo Envio Simples
                class RespostaMaisClientes 
                {
                    public $Pesquisa, $Celular, $Nome;
                    public function set($data) 
                    {
                        foreach ($data AS $key => $value) $this->{$key} = $value;
                    }  
                }

                class SMS 
                {
                    function consulte_maisclientes ($evento, $senha, $todosCelulares)
                    {
                        $parametros = array ('evento' => $evento, 'senha' => $senha ,'todosCelulares' => $todosCelulares); 
                        return $this->invoque_metodo('sms/mailingMaisClientes', $parametros, 'RespostaMaisClientes');
                    }
                }

                //  Exemplo de envio
                //  $sms = new SMS (usuario, senha);
                //  $sms->consulte_maisclientes(evento,senha, true);
            
        
            
                //  Tipos e declarações no exemplo Envio Simples
                public class MaisCliente 
                {
	                public int evento;
	                public String senha;
	                public boolean todosCelulares;
                }

                public class SMSApi 
                {
                    public Mailing[] consulteMaisClientes (MaisCliente maisCliente) throws Exception 
	                {
		                return new InvocarMetodo<RespostaMailing, MaisCliente>()
		                .invoqueMetodo(this.usuario, this.senha, "mailingMaisClientes", 
				                maisCliente, RespostaMailing.class).mailing;
	                }
    
	                static class RespostaMailing extends RS 
	                {
		                public RespostaMailing() { }
		                public Mailing[] mailing;	
	                }
                }
            
        

Cadastro entrevistado RADAR

Cadastre novo entrevistado na ferramenta RADAR

URL: https://api.smartcomm.digital/sms/entrevistado

Método: POST

Restrições:

Parâmetros
Parâmetro Descrição Tipo Requerido*
Pesquisa Código identificador da pesquisa. int/numérico
Celular Número de celular do entrevistado string/texto
Nome Nome do entrevistado string/texto
Apelido Apelido do entrevistado string/texto
Referencia Nome de referência da pesquisa; Ex.: 'Satisfação campanha novos produtos' string/texto
Data Data para o envio da pesquisa datetime/data
Retorno
Parâmetro Descrição
Sequencia Código identificador da entrevista
Status Código númerico da resposta da consulta
0: Ocorreu uma exceção
1: Cadastrado com sucesso
2: Parâmetros requeridos
3: Pesquisa não cadastrada para o usuário
4: Pesquisa expirada
StatusMensagem Mensagem do status da resposta do envio
Exemplos de implementação
            
               // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*

                public enum StatusEntrevistado
                {
                    Erro,
                    Sucesso,
                    CamposInvalidos,
                    PesquisaInvalida
                }

                public class RespostaEntrevistado
                {
    
                    public int Sequencia { get; set; }
                    public string StatusMensagem { get; set; }
                    public StatusEntrevistado Status { get; set; }
                    public RespostaEntrevistado() { }
                }

                public partial class SMS
                {
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public SMS(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }
    
                    public async Task< RespostaEntrevistado > CadastreEntrevistado
                        (int pesquisa, 
                        string celular, 
                        string nome = null,
                        string apelido = null, 
                        string referencia = null)
                    {
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(
                                new MediaTypeWithQualityHeaderValue("application/json"));

                            httpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue(
                                    "Basic", 
                                    Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}")));

                            var entrevistado = new
                            {
                                Pesquisa = pesquisa,
                                Celular = celular,
                                Nome = nome,
                                Apelido = apelido,
                                Referencia = referencia
                            };

                            try
                            {
                                var post = await httpClient.PostAsync("sms/entrevistado", 
                                    new StringContent(
                                        JsonConvert.SerializeObject(entrevistado), 
                                        Encoding.UTF8, 
                                        "application/json"));
                
                                var resposta = JsonConvert
                                    .DeserializeObject< RespostaEntrevistado >(
                                        await post.Content.ReadAsStringAsync());

                                //  ...
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação

                                return resposta;
                            }
                            catch (Exception e)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }
                }
                //  Exemplo de envio
                //  var sms = new SMS("usuario", "senha" );
                //  var resposta = await sms.CadastreEntrevistado(40,"11987654321");
            
        
            
                //Requisito: Instalar OpenSSL http://slproweb.com/products/Win32OpenSSL.html
                unit TesteApi;

                //  Tipos e declarações no exemplo Envio Simples
                function TWS20.CadastreEntrevistado
                    (
                    pesquisa: cardinal; 
                    Celular: string;
                    nome: string; 
                    apelido: string; 
                    referencia: string): cardinal;
                    var
                        objetos: TJSONObject;
                        vetor: TJSONArray;
                        i: integer;
                        mailing: TMailings;
                        ml: TMailingSMS;
                    begin
                        objetos := TJSONObject.Create;
                        objetos.AddPair(TJSONPair.Create(TJSONString.Create('Pesquisa'),
                            TJSONNumber.Create(pesquisa)));

                        objetos.AddPair(TJSONPair.Create(TJSONString.Create('Celular'),
                            TJSONString.Create(Celular)));

                        objetos.AddPair(TJSONPair.Create(TJSONString.Create('Nome'),
                            TJSONString.Create(nome)));

                        objetos.AddPair(TJSONPair.Create(TJSONString.Create('Apelido'),
                            TJSONString.Create(apelido)));

                        objetos.AddPair(TJSONPair.Create(TJSONString.Create('Referencia'),
                            TJSONString.Create(referencia)));

                        objetos := self.InvoqueMetodo('entrevistado', objetos);

                        if objetos.GetValue<TJSONString>('Status').Value <> '1' then
                            begin
                                raise Exception
                                .Create(objetos.GetValue<TJSONString>('StatusMensagem').Value);
                            end
                        else
                            result := StrToInt(objetos.GetValue<TJSONNumber>('Sequencia').Value);
                    end;

                (*
                    Exemplo de envio
                    sms := TWS20.Create(usuario,senha);            
                    sms.CadastreEntrevistado(40,'179917579492','nome','apelido','');                
                *)
            
        
            
                //  Tipos e declarações no exemplo Envio Simples
                class RespostaEntrevistado 
                {
                    public $Sequencia, $Status, $Celular, $StatusMensagem;
                    public function set($data) 
                    {
                        foreach ($data AS $key => $value) $this->{$key} = $value;
                    }  
                }

                class SMS 
                {    
                    function cadastre_entrevistado ($pesquisa, $celular, $nome)
                    {
                        $parametros = array ('pesquisa' => $pesquisa, 'celular' => $celular ,'nome' => $nome); 
                        return $this->invoque_metodo('sms/entrevistado', $parametros, 'RespostaEntrevistado');
                    }
                }
                //  Exemplo de envio
                //  $sms = new SMS (usuario, senha);
                //  $sms->cadastre_entrevistado(pesquisa,celular, nome);
            
        
            
                //  Tipos e declarações no exemplo Envio Simples
                public class Entrevistado 
                {
	                public int pesquisa;
	                public String celular;
	                public String nome;
	                public String apelido;
	                public String referencia;
                }

                public class SMSApi 
                {
	                public int cadastreEntrevistado(Entrevistado entrevistado) throws Exception
	                {
		                return new InvocarMetodo<RespostaRadar, Entrevistado>()
			                .invoqueMetodo(this.usuario, this.senha, 
				                "entrevistado", entrevistado, RespostaRadar.class).sequencia;
	                } 
                }

                static class RespostaRadar extends RS 
                {
	                public RespostaRadar () {}
	                public int sequencia;
                }
            
        

Cadastro lote entrevistado RADAR

Cadastre novo lote de entrevistados na ferramenta RADAR

URL: https://api.smartcomm.digital/sms/entrevistadoLote

Método: POST

Restrições:

Parâmetros
Parâmetro Descrição Tipo Requerido*
Entrevistados Lista com os seguintes parâmetros: Array/lista (object/class):
Parâmetro Descrição Tipo Requerido*
Pesquisa Código identificador da pesquisa. int/numérico
Celular Número de celular do entrevistado string/texto
Nome Nome do entrevistado string/texto
Apelido Apelido do entrevistado string/texto
Referencia Nome de referência da pesquisa; Ex.: 'Satisfação campanha novos produtos' string/texto
Data Data para o envio da pesquisa datetime/data
Retorno
Parâmetro Descrição
Sequencias Array/lista (int/numérico):
Sequencia Código identificador da entrevista
MensagemId * Código identificador da mensagem enviada ao entrevistado
Status Código númerico da resposta da consulta
0: Ocorreu uma exceção
1: Cadastrados com sucesso
2: Parâmetros requeridos
3: Pesquisa não cadastrada para o usuário
4: Pesquisa expirada
StatusMensagem Mensagem do status da resposta do envio
Exemplos de implementação
            
               // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*
                public enum StatusEntrevistado
                {
                    Erro,
                    Sucesso,
                    CamposInvalidos,
                    PesquisaInvalida
                }

                public class RespostaEntrevistados
                {
                    public string StatusMensagem { get; set; }
                    public IEnumerable< int > Sequencias { get; set; }
                    public StatusEntrevistado Status { get; set; }
                    public RespostaEntrevistados() { }
                }

                public class Entrevistado 
                {
                    public int Pesquisa { get; set; }
                    public string Celular { get; set; }
                    public string Nome { get; set; }
                    public string Apelido { get; set; }
                    public string Referencia { get; set; }
                    public Entrevistado() { }
                }


                public partial class SMS
                {
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public SMS(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }
    
                    public async Task< RespostaEntrevistadoLote > CadastreEntrevistadoLote
                        (IEnumerable< Entrevistado > entrevistados)
                    {
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(
                                new MediaTypeWithQualityHeaderValue("application/json"));
                            httpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue(
                                    "Basic", 
                                    Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}")));

                            var entrevistados = new { Entrevistados = entrevistados };

                            try
                            {
                                var post = await httpClient.PostAsync(
                                    "sms/entrevistadoLote", 
                                    new StringContent
                                    (
                                        JsonConvert.SerializeObject(entrevistados), 
                                        Encoding.UTF8, 
                                        "application/json"));

                                var resposta = JsonConvert
                                    .DeserializeObject< RespostaEntrevistadoLote >(
                                        await post.Content.ReadAsStringAsync());
                
                                //  ...
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação
                
                                return resposta;
                            }
                            catch (Exception e)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }
                }
                //  Exemplo de envio
                //  var resposta = 
                //      await sms.CadastreEntrevistadoLote
                //      (
                //          new List< Entrevistado > 
                //          { 
                //              new Entrevistado { Pesquisa = 40, Celular="11987654321", Nome ="John Doe" },
                //              new Entrevistado { Pesquisa = 40, Celular="12968574321", Nome ="Jane Doe" },
                //              new Entrevistado { Pesquisa = 40, Celular="13987612345", Nome ="Joe Bloggs" } 
                //          }
                //      );
            
        
            
                
            
        
            
                
            
        
            
                
            
        

Consulta de respostas RADAR

Consulte as respostas obtidas através das pesquisas da ferramenta RADAR

URL: https://api.smartcomm.digital/sms/resultados

Método: POST

Restrições:

Parâmetros
Parâmetro Descrição Tipo Requerido*
Pesquisa Código identificador da pesquisa int/numérico
De Data inicial da consulta datetime/data
Ate Data final da consulta datetime/data
Referencia Nome de referência da pesquisa; Ex.: 'Satisfação campanha novos produtos' string/texto
Retorno
Parâmetro Descrição
Sequencias Array/lista (int/numérico):
Entrevistado Nome do entrevistado
Celular Celular do entrevistado
Resposta Resposta do entrevistado para a pesquisa enviada
Referencia Nome de referência cadastrado para a pesquisa
Status Código númerico da resposta da consulta
0: Ocorreu uma exceção
1: Cadastrados com sucesso
2: Pesquisa não cadastrada para o usuário
3: Pesquisa expirada
StatusMensagem Mensagem do status da resposta do envio
Exemplos de implementação
            
               // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*
                public class Resultado
                {
                    public string Referencia { get; set; }
                    public string Entrevistado { get; set; }
                    public string Celular { get; set; }
                    public string Resposta { get; set; }
                    public Resultado() { }
                }

                public enum StatusResultados
                {
                    Erro,
                    Sucesso,
                    PesquisaInvalida,
                    PesquisaExpirada
                }

                public class RespostaResultados
                {
                    public string StatusMensagem { get; set; }
                    public StatusResultados Status { get; set; }
                    public IEnumerable< Resultado > Resultados { get; set; }
                    public RespostaResultados() { }
                }


                public partial class SMS
                {
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public SMS(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }
    
                    public async Task< RespostaResultados > ConsultaResultadoPesquisa
                        (int pesquisa, DateTime de, DateTime ate, string referencia = "")
                    {
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(
                                new MediaTypeWithQualityHeaderValue("application/json"));

                            httpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue(
                                    "Basic", 
                                    Convert.ToBase64String
                                        (Encoding.UTF8.GetBytes($"{Usuario}:{Senha}")));

                            var envio = new
                            {
                                Pesquisa = pesquisa,
                                De = de,
                                Ate = ate,
                                Referencia = referencia 
                            };

                            try
                            {
                                var post = await httpClient.PostAsync(
                                    "sms/resultados", 
                                    new StringContent
                                    (
                                        JsonConvert.SerializeObject(envio), 
                                        Encoding.UTF8, 
                                        "application/json"));

                                var resposta = JsonConvert
                                    .DeserializeObject< RespostaResultados >(
                                        await post.Content.ReadAsStringAsync());
                
                                //  ...
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação
                
                                return resposta;
                            }
                            catch (Exception e)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }
                }

                //  Exemplo de envio
                //  var resposta = await sms.ConsultaResultadoPesquisa(40, DateTime.Now.AddDays(-60), DateTime.Now);
            
        
            
                
            
        
            
                
            
        
            
                
            
        

Cadastro de Usuário

Cadastre um novo usuário.

URL: https://api.smartcomm.digital/sms/usuario

Método: POST

Restrições:

  • Número máximo de vendedores: 06

Parâmetros
Parâmetro Descrição Tipo Requerido*
Login Login para acesso à plataforma string/texto
Senha Senha para acesso à plataforma string/texto
Celular Celular do usuário string/texto
Email Email do usuário string/texto
Nome Nome do usuário string/texto
UrlWebService URL para retorno de resposta e confirmação de entrega string/texto
Assinatura Assinatura padrão das mensagems SMS string/texto
Vendedor Indica se o usuário é um vendedor boolean/verdadeiro ou falso
Confirmacao Indica o tipo de confirmação de entrega das mensagens int/numérico
00: Não receber confirmação
01: Confirmação por SMS
02: Confirmação por e-mail
03: Confirmação por SMS e e-mail
Resposta Indica o canal de recebimento de respostas das mensagens int/numérico
00: Não receber respostas
01: Respostas por SMS
02: Respostas por e-mail
03: Respostas por SMS e e-mail
Retorno
Parâmetro Descrição
StatusMensagem Mensagem do status da resposta do envio
Status Código númerico da resposta do envio
0: Ocorreu uma exceção
1: Cadastrado com sucesso
2: Cota de venderores excedida
3: Login já cadastrado
4: Parâmetros requeridos
2: Parâmetros inválidos
Exemplos de implementação
            
                // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*
                public enum ConfirmacaoRespostaPor
                {
                    Nao,
                    PorSMS,
                    PorEmail,
                    PorSMSEmail
                }

                public enum StatusUsuario
                {
                    Erro,
                    Sucesso,
                    CotaExcedida,
                    UsuarioExistente,
                    CamposObrigatorios,
                    CamposInvalidos
                }

                public class RespostaUsuario
                {
                    public string StatusMensagem { get; set; }
                    public StatusUsuario Status { get; set; }
                    public RespostaUsuario() { }
                }

                public partial class SMS
                {
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public SMS(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }
    
                    public async Task< RespostaUsuario > CadastreUsuario(
                        string login, 
                        string senha, 
                        string celular, 
                        string email, 
                        string nome,
                        ConfirmacaoRespostaPor confirmacao, 
                        ConfirmacaoRespostaPor resposta, 
                        string assinatura = null, 
                        bool vendedor = false)
                    {
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(
                                new MediaTypeWithQualityHeaderValue("application/json"));

                            httpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue(
                                    "Basic", 
                                    Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}")));

                            var novoUsuario = new
                            {
                                Login = login,
                                Senha = senha,
                                Celular = celular,
                                Email = email,
                                Nome = nome,
                                Confirmacao = confirmacao,
                                Resposta = resposta,
                                Assinatura = assinatura,
                                Vendedor = vendedor
                            };

                            try
                            {
                                var post = await httpClient.PostAsync(
                                    "sms/usuario", 
                                    new StringContent
                                    (
                                        JsonConvert.SerializeObject(novoUsuario), 
                                        Encoding.UTF8, 
                                        "application/json"));

                                var resposta = JsonConvert
                                    .DeserializeObject< RespostaUsuario >(
                                        await post.Content.ReadAsStringAsync());
                
                                //  ...
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação
                
                                return resposta;
                            }
                            catch (Exception e)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }
                }

                //  Exemplo de envio
                //  var resposta = await sms.CadastreUsuario("meu_usuario", "minhasupersenhasecreta", 
                //  "11987654321", "email@dominio.com", "John Doe", ConfirmacaoRespostaPor.Nao, ConfirmacaoRespostaPor.Nao);
            
        
            
                //Requisito: Instalar OpenSSL http://slproweb.com/products/Win32OpenSSL.html
                unit TesteApi;

                //  Tipos e declarações no exemplo Envio Simples
                function TWS20.CadastreUsuario(
                    login: string; 
                    senha: string; 
                    Celular: string;
                    email: string; 
                    nome: string; 
                    confirmacao: byte; 
                    resposta: byte;
                    assinatura: string; 
                    vendedor: boolean = false) : int64;
                    var
                        objeto: TJSONObject;
                        vetor: TJSONArray;
                        i: integer;
                        mailing: TMailings;
                        ml: TMailingSMS;
                    begin
                        objeto := TJSONObject.Create;
                        objeto.AddPair(TJSONPair.Create(TJSONString.Create('Senha'),
                            TJSONNumber.Create(senha)));
                        objeto.AddPair(TJSONPair.Create(TJSONString.Create('Celular'),
                            TJSONString.Create(Celular)));
                        objeto.AddPair(TJSONPair.Create(TJSONString.Create('Nome'),
                            TJSONString.Create(nome)));
                        objeto.AddPair(TJSONPair.Create(TJSONString.Create('Login'),
                            TJSONString.Create(login)));
                        objeto.AddPair(TJSONPair.Create(TJSONString.Create('Email'),
                            TJSONString.Create(email)));
                        objeto.AddPair(TJSONPair.Create(TJSONString.Create('Assinatura'),
                            TJSONString.Create(assinatura)));
                        objeto.AddPair(TJSONPair.Create(TJSONString.Create('Resposta'),
                            TJSONNumber.Create(resposta)));
                        objeto.AddPair(TJSONPair.Create(TJSONString.Create('Confirmacao'),
                            TJSONNumber.Create(confirmacao)));
                        if vendedor then
                            begin
                                objeto.AddPair(TJSONPair.Create(TJSONString.Create('Vendedor'),
                                    TJSONTrue.Create()));
                            end
                        else
                            objeto.AddPair(TJSONPair.Create(TJSONString.Create('Vendedor'),
                                TJSONFalse.Create()));
                            objeto := self.InvoqueMetodo('usuario', objeto);

                        if objeto.GetValue<TJSONString>('Status').Value <> '1' then
                            begin
                                raise Exception.Create(objeto.GetValue<TJSONString>
                                    ('StatusMensagem').Value);
                            end
                        else
                            result := StrToInt(objeto.GetValue<TJSONNumber>('Status').Value);
                    end;
                                  
                (* 
                    Exemplo de envio
                    sms := TWS20.Create(usuario,senha);            
                    sms.CadastreUsuario(
                        'meu_usuario',
                        'minhasupersenhasecreta',
                        '17987654321', 
                        'email@email.com',
                        'John DOe'
                        ,1
                        ,1,
                        'assinatura');
                *)
            
        
            
                //  Tipos e declarações no exemplo Envio Simples
                class RespostaUsuario 
                {
                    public $Status;
                    public function set($data) 
                    {
                        foreach ($data AS $key => $value) $this->{$key} = $value;
                    } 
                }

                class SMS 
                {
                    function cadastre_usuario ($login, $senha, $celular, $email, $nome, $confirmacao, $resposta) 
                    {
                        $parametros = array (
                            'login' => $login, 
                            'senha' => $senha, 
                            'celular' => $celular, 
                            'email' => $email,
                            'nome' => $nome,
                            'confirmacao' => $confirmacao, 
                            'resposta' => $resposta); 

                        return $this->invoque_metodo('sms/usuario', $parametros, 'RespostaUsuario');
                    }
                }
                //  Exemplo de envio
                //  $sms = new SMS(usuario, senha);
                //  $sms->cadastre_usuario(login, senha, celular, email, nome, 0, 0);  
            
        
            
            
        

Encurtador de URL

Comprime uma URL e compacta utilizando o domínio: sm5.ms/codigo-url-encurtada.

URL: https://api.smartcomm.digital/sms/encurtador

Método: POST

Restrições:

Parâmetros
Parâmetro Descrição Tipo Requerido*
Destino URL para encurtar string/texto
Descricao Descrição para URL encurtada string/texto
Retorno
Parâmetro Descrição
URL URL gerada após o processo de encurtar
StatusMensagem Mensagem do status da resposta do envio
Status Código númerico da resposta do envio
0: Ocorreu uma exceção
1: Processado com sucesso
Exemplos de implementação
            
                // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*
                public enum StatusEncurtador 
                {
                    Erro,
                    Sucesso
                }

                public class RespostaEncurtador
                {

                    public string Url { get; set; }
                    public string StatusMensagem { get; set; }
                    public StatusEncurtador Status { get; set; }
                    public RespostaEncurtador() { }
                }

                public partial class SMS
                {
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public SMS(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }
    
                    public async Task< RespostaEncurtador > Encurte(string destino, string descricao)
                    {
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(
                                new MediaTypeWithQualityHeaderValue("application/json"));

                            httpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue(
                                    "Basic", 
                                    Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}")));

                            var linkEncurtar = new { Destino = destino, Descricao = descricao };

                            try
                            {
                                var post = await httpClient.PostAsync(
                                    "sms/encurtador", 
                                    new StringContent
                                    (
                                        JsonConvert.SerializeObject(linkEncurtar), 
                                        Encoding.UTF8, 
                                        "application/json"));

                                var resposta = JsonConvert
                                    .DeserializeObject< RespostaEncurtador >(
                                        await post.Content.ReadAsStringAsync());
                
                                //  ...
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação
                
                                return resposta;
                            }
                            catch (Exception e)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }
                }

                //  Exemplo de envio
                //  var sms = new SMS("usuario", "senha");
                //  var resposta = await sms.Encurte("https://www.meu-dominio.com.br", "Minha loja virtual");
            
        
            
            
        
            
            
        
            
            
        

Envio WhatsApp

Envio de mensagens de whatsapp.

URL: https://api.smartcomm.digital/sms/envioWhats

Método: POST

Restrições:

  • Número máximo de destinatários: 1.000

Parâmetros
Parâmetro Descrição Tipo Requerido*
Destinatarios Lista com os seguintes parâmetros: Array/lista (object/class):
Parâmetro Descrição Tipo Requerido*
Chat Código identificador do chat cadastrado int/numérico
Celular Celular com DDD Ex: (11) 98765-4321 string/texto
Data Horário para o envio da mensagem DateTime/data
Parametros Campos personalizados, cadastrados na criação do chat string/texto
Retorno
Parâmetro Descrição
Lote Código identificador do lote
CreditosGastos Quantidade de créditos utilizados no envio das mensagens
StatusMensagem Mensagem do status da resposta do envio
Destinatarios Array/lista (object/class):
Id Código identificador da mensagem
Celular Celular destinatário da mensagem
Status Código númerico da resposta do envio
0: Ocorreu uma exceção
1: Enviada com sucesso
2: Créditos insuficientes
3: Parâmetros requeridos
4: Parâmetros inválidos
10: Falha na requisição SharpSpring
Exemplos de implementação
            
                // *-- O nome das classes pode ser da preferência, desde que siga os parâmetros --*
                public class Destinatario
                {
                    public string Celular { get; set; };
                    public int Chat { get; set; }
                    public DateTime? Data { get; set; }
                    public Dictionary < string, string > Parametros { get; set; }
                    public Destinatario() { }
                }

                public class SequenciaWhats
                {
                    public long Celular { get; set; }
                    public int Id { get; set; }
                    public SequenciaWhats() { }
                }

                public class RespostaWhats
                {
                    public int Lote { get; set; }
                    public int CreditosGastos { get; set; }
                    public string StatusMensagem { get; set; }
                    public StatusWhats Status { get; set; }
                    public IEnumerable< SequenciaWhats > Destinatarios { get; set; }
                    public RespostaWhats() { }
                }

                public enum StatusWhats
                {
                    Erro,
                    Sucesso,
                    SemCreditos,
                    SemCelular,
                    CelularInvalido,
                    SemChat,
                    ChatInvalido,
                    SemParametros,
                    ParametroInvalido,
                    UsuarioSenhaInvalido,
                    AccountIdSecretKeyInvalido,
                }

                public partial class WhastApp
                {
                    public string Usuario { get; set; }
                    public string Senha { get; set; }

                    public WhastApp(string usuario, string senha)
                    {
                        Usuario = usuario;
                        Senha = senha;
                    }
    
                    public async Task< RespostaWhats > EnvieWhats(IEnumerable< Destinatario > destinatarios)
                    {
                        using (var httpClient = new HttpClient())
                        {
                            httpClient.BaseAddress = new Uri("https://ws.smartcomm.digital/");
                            httpClient.DefaultRequestHeaders.Accept.Clear();
                            httpClient.DefaultRequestHeaders.Accept.Add(
                                new MediaTypeWithQualityHeaderValue("application/json"));

                            httpClient.DefaultRequestHeaders.Authorization = 
                                new AuthenticationHeaderValue(
                                    "Basic", 
                                    Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Usuario}:{Senha}")));

                            var envio = new { Destinatarios = destinatarios };

                            try
                            {
                                var post = await httpClient.PostAsync(
                                    "sms/EnvioWhats", 
                                    new StringContent
                                    (
                                        JsonConvert.SerializeObject(envio), 
                                        Encoding.UTF8, 
                                        "application/json"));

                                var resposta = JsonConvert
                                    .DeserializeObject< RespostaWhats >(
                                        await post.Content.ReadAsStringAsync());
                
                                //  ...
                                //  TODO: Tratamento do resultado de acordo com as regras de negócio de sua aplicação
                
                                return resposta;
                            }
                            catch (Exception e)
                            {
                                //TODO: Log e/ou tratamento de acordo com as regras de negócio de sua aplicação
                                throw new Exception(e.Message);
                            }
                        }
                    }
                }

                //  Exemplo de envio
                //  var whats = new WhastApp("usuario", "senha");
                //  var resposta = await 
                //      sms.EnvieWhats(new List< Destinatario > 
                //          {
                //              new Destinatario 
                //              {
                //                  Celular = "(11) 987654321",
                //                  Chat = 40,
                //                  Data = " 13/05/2025 04:16:03 ",
                //                  Parametros = new Dictionary< string, string >()
                //                  {
                //                      { "nome", "John Doe" },
                //                      { "valor", "121.50" },
                //                      { "vencimento", "13/05/2025 04:16:03" },
                //                      { "codigo-barras", "642c6c70-85be-4b08-9794-cb37ba0b6e04" }
                //                  };
                //              },
                //              new Destinatario 
                //              {
                //                  Celular = "(11) 98765-1234",
                //                  Chat = 1,
                //                  Data = " 26/05/2025 04:16:03 ",
                //                  Parametros = new Dictionary< string, string >()
                //                  {
                //                      { "nome", "Jane Doe" },
                //                      { "desconto", "15%" },
                //                      { "data-limite", "13/05/2025 04:16:03" },
                //                      { "codigo-promocional", "e18fe95b-26e2-4723-8851-564a9a84a12e" }
                //                  };
                //              }
                //          });
            
        
            
            
        
            
            
        
            
            
        
© SmartComm 2025   |   Siga-nos nas redes sociais: