Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Re: [OT] Enviar SMS em massa

Em sábado, 1 de junho de 2013 10h30min04s UTC-3, Rodrigo Alves escreveu:
> Cara, eu já fiz algo parecido p uma empresa... Lá contratamos os serviços da www.SmsEmMassa.com onde geramos um arquivo txt com os tels e a msg e importamos p o site q se vira p enviar... Dependendo do plano sai a 0,05 centavos a sms... Dá uma olhada lá... Acho melhor gerar um txt simples do q quebrar a cabeça p fazer uma parada q já existe
>
>
> Em 01/06/2013 10:23, "Renato Mateus" <renato...@gmail.com> escreveu:
>
> Em quinta-feira, 27 de setembro de 2012 16h36min49s UTC-3, Evandro Choma  escreveu:
>
> > Boa tarde amigos
>
> >
>
> > Estou precisando de uma APP gostaria de saber se alguem conhece alguma que exista.
>
> > Preciso enviar SMS em massa, tenho uma lista de 15 mil números de telefones celulares e gostaria de enviar uma mensagem igual para todos, então precisaria de uma APP que populasse uma base via CSV ou TXT e depois eu escreveria a mensagem e pediria para enviar, o programa ficaria rodando de forma a enviar os SMS a todos os números cadastrados.
>
>
> >
>
> > Alguem conhece algo similar?
>
> >
>
> > Não precisa ser gratuito eu tenho uma plano de SMS no meu chip.
>
> >
>
> >
>
> > Obrigado
>
> > Evandro Choma
>
>
>
> Pessoal, poderiam me ajudar? Estou com um problema semelhante, entretanto, preciso fazer isso para uma clientela FIXA da minha pizzaria. www.JardimDaPizza.com.br. O que ocorre é.
>
>
>
>
> Através de um webservice, ele obterá uma lista de telefones a enviar, e irá processar. Isto tudo, está fazendo certo, preciso ter um retorno de delivery e resposta mesmo para cadastrar o cliente em eventos realizados pela pizzaria.
>
>
>
>
> Mas, quando no emulador funciona perfeitamente, no celular. GALAXY NOTE 2 é derrubado, também testei no milestone da motorolla e derruba também. segue codigo:
>
>
>
>
>
> /*Classe que efetua todo o processo, inclusive o webservice.*/
>
>
>
> ```
>
> package com.example.multisend;
>
>
>
> import java.util.ArrayList;
>
>
>
> import org.ksoap2.SoapEnvelope;
>
> import org.ksoap2.serialization.SoapObject;
>
>
>
> import org.ksoap2.serialization.SoapSerializationEnvelope;
>
> import org.ksoap2.transport.HttpTransportSE;
>
> import android.os.Bundle;
>
> import android.os.Handler;
>
> import android.app.Activity;
>
> import android.app.PendingIntent;
>
> import android.content.BroadcastReceiver;
>
> import android.content.Context;
>
> import android.content.Intent;
>
> import android.content.IntentFilter;
>
> import android.graphics.Color;
>
> import android.telephony.TelephonyManager;
>
> import android.telephony.SmsManager;
>
> import android.view.Menu;
>
> import android.view.View;
>
> import android.widget.TextView;
>
> import android.widget.Toast;
>
> import android.widget.ToggleButton;
>
>
>
> public class MultiSend extends Activity {
>
>         ToggleButton btnIniciar;
>
>         TextView txtStatus, txtContador;
>
>         Thread t;
>
>         private static final String SENT  = "SMS_SENT";
>
>         private static final String DELIVERED = "SMS_DELIVERED";
>
>
>
>         String URL = "http://10.0.2.2:65052/Operacional.asmx";
>
>
>
>         String TEMP_URI = "MultiSend.info";
>
>
>
>         String resultado = "";
>
>
>
>         TelephonyManager tm;
>
>
>
>         SmsManager sMessage;
>
>
>
>         int _CONTADOR = 0;
>
>
>
>         @Override
>
>         protected void onCreate(Bundle savedInstanceState) {
>
>                 super.onCreate(savedInstanceState);
>
>                 setContentView(R.layout.layout_multi_send);
>
>                 iniciarServico();
>
>         }
>
>
>
>         @Override
>
>         public boolean onCreateOptionsMenu(Menu menu) {
>
>                 // Inflate the menu; this adds items to the action bar if it is present.
>
>                 getMenuInflater().inflate(R.menu.multi_send, menu);
>
>                 return true;
>
>         }
>
>
>
>         private void iniciarServico(){
>
>                 tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
>
>                 txtStatus = (TextView) findViewById(R.id.txtStatus);
>
>                 txtStatus.setTextColor(Color.RED);
>
>                 txtStatus.setText("Serviço parado.");
>
>
>
>                 txtContador = (TextView) findViewById(R.id.txtContador);
>
>                 txtContador.setTextColor(Color.DKGRAY);
>
>
>
>
>
>                 btnIniciar = (ToggleButton) findViewById(R.id.btnIniciaServico);
>
>
>
>                 btnIniciar.setOnClickListener(new View.OnClickListener() {
>
>
>
>                         @Override
>
>                         public void onClick(View v) {
>
>                                 iniciar();
>
>
>
>                         }
>
>                 });
>
>         }
>
>         private void iniciar(){
>
>                 if(btnIniciar.isChecked()){
>
>                         txtStatus.setTextColor(Color.GREEN);
>
>                         txtStatus.setText("Serviço iniciado.");
>
>                         getOrdens();
>
>                 }
>
>                 else{
>
>                         txtStatus.setTextColor(Color.RED);
>
>                         txtStatus.setText("Serviço interrompido.");
>
>                 }
>
>
>
>         }
>
>         private void servicoWeb(SoapObject request, String nameSpce, String metodo, String url, String soapAction, String property){
>
>                 try{
>
>
>
>                         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
>
>                         envelope.dotNet = true;
>
>                         envelope.setOutputSoapObject(request);
>
>
>
>                         HttpTransportSE transporte = new HttpTransportSE(url, 6000);
>
>                         transporte.call(soapAction, envelope);
>
>                         SoapObject result = (SoapObject) envelope.getResponse();
>
>                         retornoWS(result);
>
>
>
>                 }
>
>                 catch(Exception ex){
>
>                         txtStatus.setTextColor(Color.RED);
>
>                         txtStatus.setText(ex.getMessage().toString());
>
>                 }
>
>
>
>         }
>
>
>
>         private void registraAparelho(){
>
>                 Toast.makeText(this, "Por favor aguarde, estou registrando o aparelho.", Toast.LENGTH_SHORT).show();
>
>
>
>                 String nameSpace = TEMP_URI;
>
>                 String metodo = "xml_registraAparelho";
>
>                 String soapAction = "MultiSend.info/xml_registraAparelho";
>
>                 String property = "Retorno_SMS";
>
>
>
>                 SoapObject request = new SoapObject(nameSpace, metodo);
>
>                         request.addProperty("marca", "Avulso");
>
>                         request.addProperty("marca", "Modelo Avulso");
>
>                         request.addProperty("numero", tm.getLine1Number());
>
>                         request.addProperty("imei", tm.getDeviceId());
>
>
>
>                 servicoWeb(request, nameSpace, metodo, URL, soapAction, property);
>
>
>
>         }
>
>
>
>         private void getOrdens(){
>
>                 Toast.makeText(this, "Por favor aguarde...", Toast.LENGTH_SHORT).show();
>
>                 String nameSpace = TEMP_URI;
>
>                 String metodo = "xml_getOrdensEnvio";
>
>                 String soapAction = "MultiSend.info/xml_getOrdensEnvio";
>
>                 String property = "Retorno_SMS";
>
>                 SoapObject request = new SoapObject(nameSpace, metodo);
>
>                         request.addProperty("imei", tm.getDeviceId());
>
>
>
>                 servicoWeb(request, nameSpace, metodo, URL, soapAction, property);
>
>         }
>
>         private void retornoWS(SoapObject result){
>
>                 ArrayList<SMS> lista = new ArrayList<SMS>();
>
>                 int count = result.getPropertyCount();
>
>                 for (int i = 0; i< count; i++){
>
>                         SoapObject soap = (SoapObject) result.getProperty(i);
>
>                         if(soap.getProperty("Retorno_SMS").toString().equals("0031")){
>
>                                 reiniciaProcesso();
>
>                         }
>
>                         else if(soap.getProperty("Retorno_SMS").toString().equals("0034")){
>
>                                 registraAparelho();
>
>                         }
>
>                         else if(soap.getProperty("Retorno_SMS").toString().equals("0030")){
>
>                                 getOrdens();
>
>                         }
>
>                         else if(soap.getProperty("Retorno_SMS").toString().equals("0000")){
>
>                                 Toast.makeText(this, "Por favor aguarde, preparando envio.", Toast.LENGTH_SHORT).show();
>
>                                 int id = Integer.parseInt(soap.getProperty("ID_SMS").toString());
>
>                                 String texto = soap.getProperty("Texto_SMS").toString();
>
>                                 String numero = soap.getProperty("Numero_SMS").toString();
>
>                                 String data = soap.getProperty("DataHoraRequisicao_SMS").toString();
>
>                                 int id_parceiro = Integer.parseInt(soap.getProperty("ID_Parceiro").toString());
>
>                                 SMS sms = new SMS(id, texto, numero, data, id_parceiro, "");
>
>                                 lista.add(sms);
>
>                                 if(!lista.isEmpty()){
>
>                                         iniciaProcessoEnvio(lista);
>
>                                         lista.clear();
>
>                                 }
>
>                         }
>
>                         else if(soap.getProperty("Retorno_SMS").toString().equals("0001")){
>
>                                 Toast.makeText(this, "Sem ordens para enviar", Toast.LENGTH_SHORT).show();
>
>                                 reiniciaProcesso();
>
>                         }
>
>                         else{
>
>                                 txtStatus.setText(soap.getProperty("Retorno_SMS").toString());
>
>                         }
>
>                         /*Fim do Loop*/
>
>                 }
>
>                 /*Chama a função para dar início ao envio*/
>
>
>
>         }
>
>         private void iniciaProcessoEnvio(ArrayList<SMS> lista){
>
>                 Toast.makeText(this, "Enviando mensagem...", Toast.LENGTH_SHORT).show();
>
>                 int contador = lista.size();
>
>                 for (int i = 0; i<contador; i++){
>
>                         enviaMensagem(lista.get(i).Numero_SMS, lista.get(i).Texto, lista.get(i).ID_SMS);
>
>                 }
>
>         }
>
>         private void enviaMensagem(String numero, String texto, int id){
>
>                 try{
>
>                         PendingIntent sendPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT).putExtra("ID_SMS", id), 0);
>
>                         PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED).putExtra("ID_SMS", id), 0);
>
>                         registerReceiver(new BroadcastReceiver() {
>
>
>
>                                 @Override
>
>                                 public void onReceive(Context context, Intent intent) {
>
>                                         switch(getResultCode()){
>
>                                         case Activity.RESULT_OK:
>
>                                                 atualizaStatus("Mensagem Enviada", "envio", intent.getExtras().getInt("ID_SMS"));
>
>                                                 break;
>
>                                         case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
>
>                                                 atualizaStatus("Erro no envio da mensagem", "envio", intent.getExtras().getInt("ID_SMS"));
>
>                                                 break;
>
>                                         case SmsManager.RESULT_ERROR_NO_SERVICE:
>
>                                                 atualizaStatus("Sem serviço", "envio", intent.getExtras().getInt("ID_SMS"));
>
>                                                 break;
>
>                                         case SmsManager.RESULT_ERROR_NULL_PDU:
>
>                                                 atualizaStatus("Erro de PDU", "envio", intent.getExtras().getInt("ID_SMS"));
>
>                                                 break;
>
>                                         }
>
>                                         unregisterReceiver(this);
>
>                                 }
>
>
>
>                         }, new IntentFilter(SENT));
>
>
>
>
>
>                         registerReceiver(new BroadcastReceiver() {
>
>
>
>                                 @Override
>
>                                 public void onReceive(Context context, Intent intent) {
>
>                                         switch(getResultCode()){
>
>                                         case Activity.RESULT_OK:
>
>                                                 atualizaStatus("Mensagem entregue", "recebimento", intent.getExtras().getInt("ID_SMS"));
>
>                                                 break;
>
>                                         case Activity.RESULT_CANCELED:
>
>                                                 atualizaStatus("Mensagem não entregue", "recebimento", intent.getExtras().getInt("ID_SMS"));
>
>                                                 break;
>
>                                         }
>
>                                         unregisterReceiver(this);
>
>                                 }
>
>                         }, new IntentFilter(DELIVERED));
>
>                         sMessage = SmsManager.getDefault();
>
>                         sMessage.sendTextMessage(numero, null, texto, sendPI, deliveredPI);
>
>                         _CONTADOR += 1;
>
>                         txtContador.setText("Enviados até agora: "+String.valueOf(_CONTADOR));
>
>                 }
>
>                 catch(Exception ex){
>
>                         txtStatus.setTextColor(Color.RED);
>
>                         txtStatus.setText(ex.getMessage());
>
>                 }
>
>         }
>
>
>
>         private void atualizaStatus(String status, String tipo, int id){
>
>                 String metodo;
>
>                 if(tipo.equals("envio")){
>
>                         metodo = "xml_atualizaStatusEnvio";
>
>                 }
>
>                 else{
>
>                         metodo = "xml_atualizaStatusRecebimento";
>
>                 }
>
>
>
>                 String nameSpace = TEMP_URI;
>
>                 String soapAction = "MultiSend.info/"+metodo;
>
>                 String property = "Retorno_SMS";
>
>
>
>                 SoapObject request = new SoapObject(nameSpace, metodo);
>
>                         request.addProperty("imei", tm.getDeviceId());
>
>                         request.addProperty("status", status);
>
>                         request.addProperty("id", id);
>
>
>
>                 servicoWeb(request, nameSpace, metodo, URL, soapAction, property);
>
>                 Toast.makeText(this, status, Toast.LENGTH_SHORT).show();
>
>         }
>
>         private void reiniciaProcesso(){
>
>                 try{
>
>                   Handler r = new Handler();
>
>                   r.postDelayed(new Runnable() {
>
>
>
>                         @Override
>
>                         public void run() {
>
>                                 getOrdens();
>
>                         }
>
>                 }, 60 * 1000);
>
>
>
>                 }
>
>                 catch (Exception e) {
>
>
>
>                 }
>
>         }
>
>
>
>
>
> }
>
>
>
> ```
>
> /*Agora a classe que registra quando o receptor respondeu o SMS*/
>
>
>
> ```
>
> package com.example.multisend;
>
>
>
> import java.util.ArrayList;
>
>
>
> import org.ksoap2.SoapEnvelope;
>
> import org.ksoap2.serialization.SoapObject;
>
> import org.ksoap2.serialization.SoapSerializationEnvelope;
>
> import org.ksoap2.transport.HttpTransportSE;
>
>
>
> import android.content.BroadcastReceiver;
>
> import android.content.Context;
>
> import android.content.Intent;
>
> import android.graphics.Color;
>
> import android.os.Bundle;
>
> import android.telephony.SmsMessage;
>
>
>
> import android.widget.Toast;
>
>
>
> public class SMSReceiver extends BroadcastReceiver {
>
>
>
>         String URL = "http://10.0.2.2:65052/Operacional.asmx";
>
>
>
>         String TEMP_URI = "MultiSend.info";
>
>
>
>         String resultado = "";
>
>
>
>
>
>         @Override
>
>         public void onReceive(Context context, Intent intent) {
>
>                 Bundle bundle = intent.getExtras();
>
>                 SmsMessage[] msg  = null;
>
>                 String str = "";
>
>                 String from = "";
>
>                 String texto = "";
>
>
>
>
>
>                 if(bundle != null){
>
>                         Object[] pdus = (Object[]) bundle.get("pdus");
>
>                         msg = new SmsMessage[pdus.length];
>
>
>
>                         for(int i = 0; i<msg.length; i++){
>
>                                 msg[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
>
>                                 from = msg[i].getOriginatingAddress();
>
>                                 texto = msg[i].getMessageBody();
>
>                         }
>
>                         atualizaRetornoSMS(from, texto);
>
>                         Toast.makeText(context, "Retorno de: "+from, Toast.LENGTH_SHORT).show();
>
>
>
>                 }
>
>
>
>
>
>         }
>
>
>
>         private void atualizaRetornoSMS(String numero, String texto){
>
>
>
>                 String metodo = "xml_atualizaStatusRetornoSMS";
>
>
>
>                 String nameSpace = TEMP_URI;
>
>                 String soapAction = "MultiSend.info/"+metodo;
>
>                 String property = "Retorno_SMS";
>
>
>
>                 SoapObject request = new SoapObject(nameSpace, metodo);
>
>                         request.addProperty("numero", numero);
>
>                         request.addProperty("retorno", "SMS lido e respondido");
>
>                         request.addProperty("texto", texto);
>
>
>
>                 servicoWeb(request, nameSpace, metodo, URL, soapAction, property);
>
>
>
>         }
>
>
>
>         private void servicoWeb(SoapObject request, String nameSpce, String metodo, String url, String soapAction, String property){
>
>                 try{
>
>
>
>                         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
>
>                         envelope.dotNet = true;
>
>                         envelope.setOutputSoapObject(request);
>
>
>
>                         HttpTransportSE transporte = new HttpTransportSE(url, 6000);
>
>                         transporte.call(soapAction, envelope);
>
>                         SoapObject result = (SoapObject) envelope.getResponse();
>
>                         //retornoWS(result);
>
>
>
>                 }
>
>                 catch(Exception ex){
>
>                         new Exception(ex.getMessage());
>
>                 }
>
>
>
>         }
>
>
>
>
>
> }
>
>
>
> ```
>
>
>
> Espero que alguém possa me ajudar. Não sei mais para onde ir aqui. Obriagdo a todos.
>
>
>
> --
>
> You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
>
> To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
>
> For more options, visit https://groups.google.com/groups/opt_out.

Entendo, acho que seria uma boa. Mas quero fazer algo particular entende? Por isso estou quebrando a cabeça. Sei que posso fazer por comandos AT. E já estou até pensando nisto.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário