Arquivos
AGI Portabilidade para números móveis em Asterisk
Postei estes dias um source em python para descobrir a portabilidade de números móveis na comunidade Asterisk e meu email começou a lotar sobre perguntas de como construir um AGI para rotear as chamadas por um gateway GSM etc etc.
Cada um tem um cenário diferente do outro vou postar a essencia do Script em Perl + Agi para descobrir para qual operadora um número móvel pertence a partir disso é simples, mas se precisarem de ajuda para algo estamos ae …
Já tem nego me Perguntado pq nao fez em Python o AGI??
R: Acordei com vontade de fazer em perl …
Script Perl
#!/usr/bin/perl -w
use Asterisk::AGI;
use WWW::Mechanize;
use MIME::Base64;
my $AGI = new Asterisk::AGI;
my %input = $AGI->ReadParse();
my @operadoras = (“Eder”, “Claro”, “Tim”, “Vivo”, “Telemig”, “Oi”, “Nextel”, “Brasil telecom”, “Sercomtel”, “CTBC”);
my $num_saida = $AGI->get_variable(‘EXTEN’);
$num_saida = substr($num_saida,3,10);
$m = WWW::Mechanize->new();
my $data = decode_base64(‘aHR0cDovL3dlYnNlcnZpY2VzLnR3d3dpcmVsZXNzLmNvbS5ici9yZWx1emNhcC93c3JlbHV6Y2FwL’ . ‘mFzbXg=’);
$m->add_header(Referer => $data);
my $s = $data . “/VerOperadora?celular=55″ . $num_saida;
$m->get($s);
$c = $m->content;
$c =~ m/>(\d+)</;
$AGI->exec(“NoOp”,”$num_saida”);
$AGI->exec(“NoOp”,”$operadoras[$1]“);
# O codigo se adapta conforme o cenario de cada um, mudar o DIAL para rotear a saida da operadora em questao
####$AGI->exec(“Dial”,”SIP/MUDE AQUI PARA SUA SAIDA SIP ou GSM ou ZAP ou DAHDI ou UNICALL ou DVG etc etc|10″);
# FIM
Extensions.conf
minha linha para a chamada do AGI de testes
exten => _999.,1,agi,pega.pl
ou seja só discar no seu telefoneIP ou sftphone “999+num_do_celular”
Tela:
Fui
Eng Eder de Souza
SMS Grátis
Olá Pessoas !!
Início de ano resolvi postar um presente para a galera, Script em Python para envio de sms na faixa para Operadoras Tim e Claro!!
Logo deixarei ele completo para o envio de sms para qualquer operadora Aguardem
Script:
#Eng Eder de Souza
#data 10/01/2010
# -*- coding: iso-8859-1 -*-
import base64
import ClientCookie
import urllib2
import urllib
import re
import sys
NOME = “DIGITE O SEU NOME AQUI”
MSG = “DIGITE SUA MSG AQUI”
def sendsms(ddd,NUM):
Operadora = ["Eder", "Claro", "Tim", "Vivo", "Teleming", "Oi", "Nextel", "Brasil telecom", "Sercomtel", "CTBC"]
data = base64.decodestring(‘aHR0cDovL3dlYnNlcnZpY2VzLnR3d3dpcmVsZXNzLmNvbS5ici9yZWx1emNhcC93c3JlbHV6Y2FwLmFzbXg=’)
p = urllib.urlopen(data+’/VerOperadora?celular=55′+ddd+NUM).read()
find = re.search(‘>(\d+)<’, p)
i = int(find.group(1))
i = 2
if (i < 1) or (i > 2):
print “Este Script ainda nao Efetua envio de SMS para a ” + Operadora[i] + ” Aguarde proximas versoes”
sys.exit()
url = “http://www.sbrobous.com/pan”+str(i)+”.php“
req = urllib2.Request(url)
req.add_header(‘Referer’, url)
f = urllib2.urlopen(req)
data = f.read()
f.close()
find = re.search(‘ss=(\d+)’, data)
codcaptcha = find.group(1)
s = base64.decodestring(‘aHR0cDovL3d3dy5zYnJvYm91cy5jb20vY2FwdGNoYS5waHA/c3M9′)
url = s + codcaptcha
req = urllib2.Request(url)
req.add_header(‘Referer’, url)
cj = ClientCookie.MozillaCookieJar()
opener = ClientCookie.build_opener(ClientCookie.HTTPCookieProcessor(cj))
ClientCookie.install_opener(opener)
data = ClientCookie.urlopen(req).read()
cj.save(“infer”, ignore_discard=True, ignore_expires=True)
find = re.findall(‘>(\d+)<’, data)
captcha = find[0] + find[1]
cj = ClientCookie.MozillaCookieJar()
cj.load(“infer”, ignore_discard=True, ignore_expires=True)
opener = ClientCookie.build_opener(ClientCookie.HTTPCookieProcessor(cj))
ClientCookie.install_opener(opener)
url = “http://www.sbrobous.com/ser”+str(i)+”.php“
req = urllib2.Request(url)
req.add_header(‘Referer’, url)
data = {‘ddd’: ddd, ‘rmsisdn’: NUM, ‘sms’: MSG, ‘nome’: NOME, ‘code’: captcha, ‘ss’: codcaptcha}
req.add_data(urllib.urlencode(data))
f = opener.open(req)
data = f.read()
if “sucesso” in data:
print “SMS Enviado com Sucesso”
else:
print “Problemas no Envio”
tel=sys.argv[1]
ddd = tel[:2]
NUM = tel[2:10]
sendsms(ddd,NUM)
Tela:
Só para constar a linha 15 do script inteira é esta
data = base64.decodestring(‘aHR0cDovL3dlYnNlcnZpY2VzLnR3d3dpcmVsZXNzLmNvbS5ici9yZWx1emNhcC93c3JlbHV6Y2FwL
mFzbXg=’)
VLW até
Eng Eder de Souza

