Tutorial de Integração PYTHON Sumário Tutorial de Integração - Python ............................................................................................ 3 Configurando Envio .............................................................................................................. 4 Enviando Múltiplos SMS ........................................................................................................ 5 Enviando Múltiplos SMS a partir de um arquivo CSV ............................................................... 7 Enviando SMS Individuais ..................................................................................................... 8 Cancelamento de envio de SMS .......................................................................................... 10 Consulta de SMS recebidos ................................................................................................. 11 Consulta de status de SMS.................................................................................................. 12 Obtendo respostas das requisições ...................................................................................... 13 Glossário ........................................................................................................................... 14 2 Tutorial de Integração - Python Objetivo O objetivo do tutorial de integração é guiar os desenvolvedores que desejam integrar suas aplicações ao gateway de SMS da Zenvia, automatizando assim seus envios de SMS conforme sua necessidade. Mostraremos em simples passos como fazer suas aplicações Python enviarem SMS por meio da biblioteca de integração que disponibilizamos para facilitar os envios. Pré-requisitos Para executar a biblioteca de integração Python, basta ter instalada a versão 2.0 ou superior do Python. Visite http://www.python.org/. Entendendo a biblioteca Python A biblioteca Python é um conjunto de classes que tem como principal função fazer requisições HTTP da forma mais organizada e simplificada possível, fazendo com que poucas informações sejam passadas por sua aplicação. 3 Configurando Envio 1º Passo Faça o download da biblioteca de integração por meio do link http://www.zenvia.com.br/desenvolvedores/bibliotecas/Python.zip descompacte o conteúdo do arquivo dentro da pasta onde se encontrão os códigos-fontes de sua aplicação (p. ex., dentro da pasta src). 2º Passo Para manipulação de mensagens (envios e consultas), importe em seu código Python a biblioteca HumanClientMain do package HUMANSMS. Exemplo: from humansms.HumanClientMain import * 3º Passo Para qualquer operação do gateway de SMS, é preciso identificar-se com sua conta e código de acesso. Trabalharemos com a instância da classe MultipleMessageService para envio múltiplo de SMS; com a instância da classe SimpleMessageService para envio de mensagens simples; e com a instância da classe QueryService para consultas de status de SMS, sempre passando por parâmetros de seus construtores a sua conta e o código de acesso. Tais dados são cedidos pela Zenvia juntamente com a negociação do contrato firmado com a empresa. Exemplo: send = SimpleMessageService('human.fake.hc', 'ABC132') send = MultipleMessageService('human.fake.hc', 'ABC132') send = QueryService('human.fake.hc', 'ABC132') 4 Enviando Múltiplos SMS 1º Passo Crie uma instância de objeto da classe MultipleMessageService. Exemplo: send = MultipleMessageService('human.fake.hc', 'ABC132') 2ºPasso Escolheremos um layout de mensagem que será passado ao gateway, pois essa configuração influencia no formato da string que passaremos por parâmetro para o envio. Esse será passado como o segundo parâmetro, podendo ser uma constante da classe MultipleMessage. Esse parâmetro é opcional, pois por padrão será estabelecido o tipo C. Exemplo: tipo = MultipleMessage.TYPE_C 3ºPasso Em nosso exemplo, escolheremos o layout C, que é padrão da API e que consiste em “to;message;id”. Para adicionar mais de um SMS, inclua o caractere \n entre as strings. Exemplo: msg_list = "550099999999;teste0;004\n" msg_list = "550099999998;teste1;005\n" msg_list = "550099999997;teste2;006" 4ºPasso Configuraremos o Retorno de Status por Callback, que, por padrão, será inativo, ou seja, igual a zero (esse parâmetro não é obrigatório). Ele pode ser passado como uma constante da classe Message. Exemplo: callBack = Message. CALLBACK_INACTIVE ou callBack = Message. CALLBACK_FINAL_STATUS ou callBack = Message. CALLBACK_INTERMEDIARY_STATUS 5º Passo: Para enviar o SMS, basta chamar o método sendMultipleList da classe MultipleMessageService e passar os parâmetros que acabamos de definir. Exemplo: 5 responses = send.sendMultipleListMsg(msg_list, tipo, callBack) 6ºPasso: Para obter as respostas das requisições, veja o item “Obtendo respostas das requisições”. 6 Enviando Múltiplos SMS a partir de um arquivo CSV 1º Passo Crie uma instância de objeto da classe MultipleMessageService. 2ºPasso O envio de múltiplos SMS a partir de um arquivo CSV é muito semelhante ao envio de SMS múltiplos a partir de uma string. Passaremos por parâmetro o caminho do arquivo, respeitando os layouts de mensagens. Utilizaremos o layout C como exemplo. Exemplo: 550092167288;teste0;004 550095650122;teste1;005 550097745821;teste2;005 Exemplo: path = “C:\arquivo.csv”; tipo = MultipleMessage.TYPE_C 3º Passo Configuraremos o Retorno de Status por Callback, que, por padrão, será inativo, ou seja, igual a zero (esse parâmetro não é obrigatório). Ele pode ser passado como uma constante da classe Message. Exemplo: callBack = Message. CALLBACK_INACTIVE ou callBack = Message. CALLBACK_FINAL_STATUS ou callBack = Message. CALLBACK_INTERMEDIARY_STATUS 4º Passo Basta chamar o método sendMultipleFileCSV da classe MultipleMessageService e passar os parâmetros que acabamos de definir. Exemplo: responses = send.sendMultipleFileCSV(path, tipo, callBack); 5ºPasso Para obter as respostas das requisições, veja o item “Obtendo respostas das requisições”. 7 Enviando SMS Individuais 1º Passo Crie uma instância de objeto da classe SimpleMessageService. Exemplo: send = SimpleMessageService('human.fake.hc', 'ABC132') 2º Passo Vamos informar qual SMS será enviado. O número de caracteres não deve ultrapassar 150 por mensagem. Exemplo: msg= “Olá mundo da Mensagem de Texto!!” 3º Passo Definiremos o número de celular do destinatário, sempre iniciando com o DDI 55, por se tratar de uma mensagem nacional, e seguido do DDD da localidade de destino. Exemplo: to= “551199554455” 4ºPasso Podemos também informar o número do remetente do SMS, seguindo as mesmas regras de numeração do destinatário. Esse parâmetro é opcional. Exemplo: from = “555181183663” 5º Passo Informaremos o id do SMS a ser enviado. Esse id deve ser gerado e informado por sua aplicação. Essa informação é opcional, mas de muita importância caso você deseje cancelar ou consultar status dos SMS. Exemplo: id = “002” 8 6º Passo Para agendarmos o envio de um SMS passaremos por parâmetro a data em que queremos que o SMS seja enviado. Esse parâmetro é opcional; se não for informado, o SMS será enviado imediatamente. Exemplo: schedule= “dd/mm/aaaa hh:mm:ss” 7º Passo Configuraremos o Retorno de Status por Callback, que, por padrão, será inativo, ou seja, igual a zero (esse parâmetro não é obrigatório). Ele pode ser passado como uma constante da classe Message. Exemplo: callBack = Message. CALLBACK_INACTIVE ou callBack = Message. CALLBACK_FINAL_STATUS ou callBack = Message. CALLBACK_INTERMEDIARY_STATUS 8º Passo Agora basta chamar o método sendSimpleMsg. responses = send.sendSimpleMsg(msg, to, from, id, schedule, callBack ); 9º Passo Para obter as respostas das requisições, veja o item “Obtendo respostas das requisições”. 9 Cancelamento de envio de SMS 1º Passo Para cancelarmos um SMS agendado que ainda não foi enviado, precisamos ter em mãos o id do SMS (isso ressalta a importância de termos um controle de ids de SMS enviados em nossa aplicação). Crie uma instância de objeto da classe SimpleMessageService. Exemplo: send = SimpleMessageService('human.fake.hc', 'ABC132') 2ºPasso Agora basta invocarmos o método cancelSMS, passando por parâmetro o id do SMS que queremos cancelar. Exemplo: responses = send.cancelSMS(“002”) 10 Consulta de SMS recebidos 1º Passo Para consultar textos SMS enviados para a sua aplicação (por exemplo, quando um SMS é enviado por sua aplicação e você espera que seu cliente a responda), sua aplicação deve estar habilitada a receber SMS (veja mais informações na área dos desenvolvedores da Zenvia Desenvolvedores >> Consulta de SMS Recebido) Crie uma instância de objeto da classe QueryService. Exemplo: send = QueryService('human.fake.hc', 'ABC132') 2º Passo Invoque o método listReceivedSMS, para obter a lista de SMS recebidos. Exemplo: responses = send.listReceivedSMS() 11 Consulta de status de SMS 1º Passo Para consultar o status dos SMS enviados, crie uma instância de objeto da classe QueryService. Exemplo: send = QueryService('human.fake.hc', 'ABC132') 2º Passo Agora basta passarmos por parâmetro uma lista com os ids dos SMS enviados. Exemplo: msg_list = {}; msg_list = {"001","002","003","004","005","006","007","008","009","010"} Obs.: Fica a cargo de sua aplicação salvar os ids dos SMS ao serem enviados com o layout C (lembrando que nesse layout o id dos SMS é passado por sua aplicação), pois assim será possível fazer a consulta de status de cada SMS. 3º Passo Vamos chamar o método queryMultipleStatus, passando por parâmetro a nossa lista de ids de SMS enviados. Exemplo: responses = send.queryMultipleStatus(msg_list) Podemos também fazer uma consulta individual do status de um SMS. Para isso, chamaremos o método querySimpleStatus(), passando o id do SMS. Exemplo: responses = send.querySimpleStatus(“001”) 12 Obtendo respostas das requisições Todas as requisições feitas pela API retornaram um array de objetos Response com seus respectivos códigos e descrições da mensagem de resposta. Exemplo: for msgResponse in response: print msgResponse.getCode() print msgResponse.getDescription() 13 Glossário Item Propriedade Descrição 1 To Número de telefone do SMS no formato DDI + DDD + Telefone (Exemplo: 555199990101). 2 Message Mensagem que será enviada ao telefone. Terá no máximo 150 caracteres (sem o campo From). 3 From Identificação do remetente que será atribuído à mensagem. O campo “Message” + o campo “From” devem ter tamanho máximo de 150 caracteres. 4 Id Sua identificação do SMS para fins de consulta. 5 Schedule Data de agendamento de envio do SMS. 6 Tipos de INACTIVE(0) (Padrão): Não será enviada mensagem de callback para a sua aplicação. ● FINAL(1): Será enviada a mensagem de callback com somente o estado final de cada mensagem enviada. ● FULL(2): Será enviada a mensagem de callback com os estados intermediários e o estado final de cada mensagem enviada. Observação: Para os callbacks Final e Full, deverá ser cadastrado no atendimento da Zenvia um host ao qual serão enviadas as requisições. 7 String Conjunto de caracteres. 8 Tipos de Tipo A: to;message callback layout ● Tipo B: to;message;from Tipo C: to;message;id Tipo D: to;message;id;from Tipo E: to;message;from;id;schedule 14