smshuman 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +42 -0
- data/lib/smshuman.rb +146 -0
- metadata +66 -0
data/README.rdoc
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
= sms_human
|
2
|
+
|
3
|
+
Integração ao Human Gateway.
|
4
|
+
|
5
|
+
== Forma de usar
|
6
|
+
|
7
|
+
== Enviar multiplos SMS
|
8
|
+
Sms.multiple(account,code,filename,callbackOption='0',type='C')
|
9
|
+
* account = Nome da conta (letras minúsculas)
|
10
|
+
* code = Senha de acesso para integração que deve ser fornecido no momento de criação da conta.
|
11
|
+
* filename = Arquivo em formato CSV de acordo com algum dos layouts descritos abaixo nesse documento.
|
12
|
+
* Retorno de status por callback.
|
13
|
+
Os valores possíveis para esse parâmetro são:
|
14
|
+
0 – inativo (padrão)
|
15
|
+
1 – envia somente o status final da mensagem
|
16
|
+
2 – envia os status intermediários e o status final da mensagem
|
17
|
+
Atenção: Só funciona se o campo "id" de cada SMS for preenchido
|
18
|
+
* type = Tipo de formatação do arquivo ou lista gerada, de acordo com os tipos abaixo (O Padrão é : C).
|
19
|
+
A to;msg Sem "id" não é possível consultar o status da mensagem;
|
20
|
+
Sem "from", será utilizado o remetente padrão da conta;
|
21
|
+
B to;msg;from Sem "id" não é possível consultar o status da mensagem;
|
22
|
+
C to;msg;id Sem "from", será utilizado o remetente padrão da conta;
|
23
|
+
D to;msg;id;from
|
24
|
+
E to;msg;id;from;schedule
|
25
|
+
|
26
|
+
==Enviar Sms individual
|
27
|
+
Sms.individual(from,to,msg,account,code,id=nil,schedule=nil)
|
28
|
+
* from = Informações do remetente
|
29
|
+
* to = Destinatario da mensagem
|
30
|
+
* msg = Corpo da mensagem. Junto com "from" deve ter no máximo 142 caracteres.
|
31
|
+
* account = Nome da conta (letras minúsculas)
|
32
|
+
* code = Senha de acesso para integração que deve ser fornecido no momento de criação da conta.
|
33
|
+
* id = Código que o usuário pode fornecer para evitar
|
34
|
+
duplicação e para poder consultar o status da
|
35
|
+
mensagem. Caso não seja fornecido, não será
|
36
|
+
possível a verificação de status. (máx. 20 caracteres)
|
37
|
+
* schedule=Data e hora em que o torpedo deve ser enviado à operadora (Padrão=Now).
|
38
|
+
|
39
|
+
|
40
|
+
== Copyright
|
41
|
+
|
42
|
+
Copyright (c) 2009 guilhermeap. See LICENSE for details.
|
data/lib/smshuman.rb
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
|
3
|
+
module Sms
|
4
|
+
|
5
|
+
def self.multiplo(account,code,filename,callbackOption='0',type='C')
|
6
|
+
begin
|
7
|
+
a = RestClient.post 'http://system.human.com.br/GatewayIntegration/msgSms.do',
|
8
|
+
:content_type => 'multipart/form-data',
|
9
|
+
:dispatch => 'sendMultiple',
|
10
|
+
:account => account,
|
11
|
+
:code => code,
|
12
|
+
:type => type,
|
13
|
+
:callbackOption => callbackOption,
|
14
|
+
:list => File.read(filename)
|
15
|
+
|
16
|
+
if RAILS_ENV
|
17
|
+
log = Log.new
|
18
|
+
log.message(msg(a))
|
19
|
+
else
|
20
|
+
puts msg(a)
|
21
|
+
end
|
22
|
+
rescue Exception => e
|
23
|
+
raise e
|
24
|
+
end
|
25
|
+
|
26
|
+
return status(a)
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.individual(from,to,msg,account,code,id=nil,schedule=nil)
|
30
|
+
begin
|
31
|
+
a = RestClient.post 'http://system.human.com.br/GatewayIntegration/msgSms.do',
|
32
|
+
:content_type => 'multipart/form-data',
|
33
|
+
:dispatch => 'send',
|
34
|
+
:account => account,
|
35
|
+
:code => code,
|
36
|
+
:msg => msg,
|
37
|
+
:from => from,
|
38
|
+
:to => to
|
39
|
+
|
40
|
+
|
41
|
+
if RAILS_ENV
|
42
|
+
log = Log.new
|
43
|
+
log.message(msg(a))
|
44
|
+
else
|
45
|
+
puts msg(a)
|
46
|
+
end
|
47
|
+
rescue Exception => e
|
48
|
+
raise e
|
49
|
+
end
|
50
|
+
return status(a)
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
#Retorno em Mensagem
|
55
|
+
def self.msg(retorno)
|
56
|
+
if retorno.include? "000"
|
57
|
+
mensagem=("#{retorno} -Mensagem Enviada")
|
58
|
+
elsif retorno.include? "010"
|
59
|
+
mensagem="#{retorno} - Erro em Sua Chamada"
|
60
|
+
elsif retorno.include? "200"
|
61
|
+
mensagem=("#{retorno} - Todas as mensagens foram enviadas")
|
62
|
+
elsif retorno.include? "011"
|
63
|
+
mensagem="#{retorno} - Erro em Sua Chamada"
|
64
|
+
elsif retorno.include? "012"
|
65
|
+
mensagem="#{retorno} - Erro em Sua Chamada"
|
66
|
+
elsif retorno.include? "013"
|
67
|
+
mensagem="#{retorno} - Erro em Sua Chamada"
|
68
|
+
elsif retorno.include? "014"
|
69
|
+
mensagem="#{retorno} - Erro em Sua Chamada"
|
70
|
+
elsif retorno.include? "015"
|
71
|
+
mensagem="#{retorno} - Erro em Sua Chamada"
|
72
|
+
elsif retorno.include? "016"
|
73
|
+
mensagem="#{retorno} - Erro em Sua Chamada"
|
74
|
+
elsif retorno.include? "017"
|
75
|
+
mensagem="#{retorno} - Erro em Sua Chamada"
|
76
|
+
elsif retorno.include? "080"
|
77
|
+
mensagem="#{retorno} - Mensagem já enviada com o mesmo ID"
|
78
|
+
elsif retorno.include? "900"
|
79
|
+
mensagem="#{retorno} - Erro de Autenticação"
|
80
|
+
end
|
81
|
+
return mensagem
|
82
|
+
end
|
83
|
+
|
84
|
+
#status do retorno
|
85
|
+
|
86
|
+
def self.status(retorno)
|
87
|
+
if retorno.include? "000"
|
88
|
+
resultado=true
|
89
|
+
elsif retorno.include? "200"
|
90
|
+
resultado=true
|
91
|
+
elsif retorno.include? "010"
|
92
|
+
resultado=false
|
93
|
+
elsif retorno.include? "011"
|
94
|
+
resultado=false
|
95
|
+
elsif retorno.include? "012"
|
96
|
+
resultado=false
|
97
|
+
elsif retorno.include? "013"
|
98
|
+
resultado=false
|
99
|
+
elsif retorno.include? "014"
|
100
|
+
resultado=false
|
101
|
+
elsif retorno.include? "015"
|
102
|
+
resultado=false
|
103
|
+
elsif retorno.include? "016"
|
104
|
+
resultado=false
|
105
|
+
elsif retorno.include? "017"
|
106
|
+
resultado=false
|
107
|
+
elsif retorno.include? "080"
|
108
|
+
resultado=false
|
109
|
+
elsif retorno.include? "900"
|
110
|
+
resultado=false
|
111
|
+
end
|
112
|
+
return resultado
|
113
|
+
end
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
private
|
120
|
+
|
121
|
+
class RecipesLogFormatter
|
122
|
+
def call(severity, time, program_name, message)
|
123
|
+
datetime = time.strftime("%b %d %H:%M:%S")
|
124
|
+
process = "rails[#{$PID}]"
|
125
|
+
hostname = Socket.gethostname.split('.')[0]
|
126
|
+
message = (String === message ?
|
127
|
+
message : message.inspect).gsub(/\n/, '').strip
|
128
|
+
"#{datetime} #{hostname} #{process}: #{message}\n"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
class Log
|
134
|
+
def message(m)
|
135
|
+
log_sms = File.open("#{RAILS_ROOT}/log/sms.log", 'a')
|
136
|
+
log_sms.sync=true
|
137
|
+
log=Logger.new(log_sms)
|
138
|
+
log.formatter=RecipesLogFormatter.new
|
139
|
+
log.level=Logger::INFO
|
140
|
+
log.info m
|
141
|
+
end
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
end
|
metadata
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: smshuman
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- "Jeov\xC3\xA1 Guilherme de Carvalho Filho"
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-10-08 00:00:00 -03:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rest-client
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
description:
|
26
|
+
email: jguilhermeap@gmail.com
|
27
|
+
executables: []
|
28
|
+
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- README.rdoc
|
33
|
+
files:
|
34
|
+
- README.rdoc
|
35
|
+
- lib/smshuman.rb
|
36
|
+
has_rdoc: true
|
37
|
+
homepage: http://www.naofiquedefora.com/
|
38
|
+
licenses: []
|
39
|
+
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options:
|
42
|
+
- --line-numbers
|
43
|
+
- --inline-source
|
44
|
+
require_paths:
|
45
|
+
- lib
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: "0"
|
51
|
+
version:
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
version:
|
58
|
+
requirements: []
|
59
|
+
|
60
|
+
rubyforge_project:
|
61
|
+
rubygems_version: 1.3.5
|
62
|
+
signing_key:
|
63
|
+
specification_version: 3
|
64
|
+
summary: "Integra\xC3\xA7\xC3\xA3o ao Human GatewayIntegra\xC3\xA7\xC3\xA3o ao Human Gateway"
|
65
|
+
test_files: []
|
66
|
+
|