Você está na página 1de 16

Gateway SMS com playSMS + Gammu no Debian Buster

blog.remontti.com.br/3812

Rudimar Remontti 26 de novembro de 2019

Ouvir tutorial

O playSMS é um software de gerenciamento de SMS gratuito e de código aberto.

Um sistema de portal móvel flexível baseado na Web que pode ser adaptado a vários
serviços, como um gateway SMS, provedor de SMS em massa, sistema de mensagens
pessoais, ferramentas de comunicação corporativa e de grupo.

Requisito:
1- Debian 10 Stretch / Instalação Limpa
2- Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no
Debian 10 Buster “LAMP”
Instalação do PHP 7.3 (Requisito)
Instalação do MariaDB 10.3 (Requisito)
Instalação do Apache 2.4 (Requisito)
phpMyAdmin :: (Opcional)

Repositório

1 # vim /etc/apt/sources.list

Certifique-se de que ao final de cada repositório tenha contrib non-free, se não tiver
adicione.
Ex.:

1/16
1 deb http://deb.debian.org/debian/ buster main contrib non-free
2 deb-src http://deb.debian.org/debian/ buster main contrib non-free
3 deb http://security.debian.org/debian-security buster/updates main contrib non-free
4 deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
5 # buster-updates, previously known as 'volatile'
6 deb http://deb.debian.org/debian/ buster-updates main contrib non-free
7 deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free
8
9

Instale os modulos extra do kernel “para reconher melhor seu modem”:

1 # apt install firmware-linux firmware-linux-free firmware-linux-nonfree firmware-misc-


nonfree

Vamos precisar mais alguns pacotes e extensões do PHP extras, aqui vem um porém o
pacote php-mcrypt não esta mais disponivel na versao 7.3 do php, então vamos instala-lo
um pouco diferente.

1 # apt install php-dev libmcrypt-dev php-pear php-imap git wget unzip


2 # pecl channel-update pecl.php.net
3 # pecl install mcrypt
4 libmcrypt prefix? [autodetect] : ENTER
5 # echo 'extension=mcrypt.so' >> /etc/php/7.3/mods-available/mcrypt.ini

Ativar extensão mcrypt manualmente

1 # phpenmod mcrypt

Restart apache2

1 # systemctl restart apache2


2 # php -m | grep mcrypt

Crie o banco de dados playSMS

1 # mysql -p

1 CREATE DATABASE playsms;


2 GRANT ALL PRIVILEGES ON playsms.* TO 'playsms'@'localhost' IDENTIFIED BY
3 'SUA-SENHA';
4 FLUSH PRIVILEGES;
quit;

2/16
Vamos usar o script de instalação install-playsms.sh. O script está incluído no pacote do
playSMS. A versão atual é do playSMS é a 1.4.
Vamos fazer download do projeto e extraia o pacote em /usr/local/src.

1 # cd /tmp/
2 # wget
3 https://sourceforge.net/projects/playsms/files/playsms/Version%201.4.2/playsms-
4 1.4.2.tar.gz
# tar -zxf playsms-1.4.2.tar.gz -C /usr/local/src
# mv /usr/local/src/playsms-1.4.2/ /usr/local/src/playsms

Acesse o local que extraímos

1 # cd /usr/local/src/playsms/

Copie install.conf.dist para install.conf e edite informando a senha de conexão mysql. Nota:
Se você tiver domínios virtuais configurado no seu apache, você deve ajustar no install.conf
PATHWEB=”/var/www/html/playsms”.

1 # cp install.conf.dist install.conf
2 # vim install.conf

1 ...
2 # MySQL database username
3 DBUSER="playsms"
4
5 # MySQL database password
6 DBPASS="SUA-SENHA"
7 ...

Execute o script de instalação

1 # ./install-playsms.sh

1 playSMS Install Script for Ubuntu (Debian based)


2
3 ==================================================================
4 WARNING:
5 - This install script WILL NOT upgrade currently installed playSMS
6 - This install script WILL REMOVE your current playSMS database
7 - This install script is compatible ONLY with playSMS version 1.4
8 - Please BACKUP before proceeding
9 ==================================================================
10
11 You ARE running this installation script as root
12 That means you need to make sure that you know what you're doing

3/16
13
14 ==================================================================
15
16 Proceed ?
17
18 When you're ready press [y/Y] or press [Control+C] to cancel Y
19
20 ==================================================================
21
22 INSTALL DATA:
23
24 MySQL username = playsms
25 MySQL password = SUA-SENHA
26 MySQL database = playsms
27 MySQL host = localhost
28 MySQL port = 3306
29
30 Web server user = www-data
31 Web server group = www-data
32
33 playSMS source path = /usr/local/src/playsms
34
35 playSMS web path = /var/www/html/playsms
36 playSMS lib path = /var/lib/playsms
37 playSMS bin path = /usr/local/bin
38 playSMS log path = /var/log/playsms
39
40 playSMS conf path = /etc
41
42 ==================================================================
43
44 Please read and confirm INSTALL DATA above
45
46 When you're ready press [y/Y] or press [Control+C] to cancel Y
47
48 ==================================================================
49
50 Are you sure ?
51
52 Please read and check again the INSTALL DATA above
53
54 When you're ready press [y/Y] or press [Control+C] to cancel Y
55
56 ==================================================================
57
58 Installation is in progress
59
60 DO NOT press [Control+C] until this script ends
61
62 ==================================================================
63
64 Getting composer from https://getcomposer.com

4/16
65
66 Please wait while the install script downloading composer
67
68 Composer is ready in this folder
69
70 Pleas wait while composer getting and updating required packages
71
72 Do not run Composer as root/super user! See https://getcomposer.org/root for details
73 Loading composer repositories with package information
74 Updating dependencies (including require-dev)
75 Package operations: 0 installs, 1 update, 0 removals
76 - Updating pear/db dev-trunk (93e9d4d => f3f60bb): Checking out f3f60bb610
77 Writing lock file
78 Generating autoload files
79
80 Composer has been installed and packages has been updated
81
82 Start.................end
83
84 PLAYSMSD_CONF = /etc/playsmsd.conf
85 PLAYSMS_PATH = /var/www/html/playsms
86 PLAYSMS_LIB = /var/lib/playsms
87 PLAYSMS_BIN = /usr/local/bin
88 PLAYSMS_LOG = /var/log/playsms
89 DAEMON_SLEEP = 1
90 ERROR_REPORTING = E_ALL ^ (E_NOTICE | E_WARNING)
91 IS_RUNNING =
92 PIDS schedule =
93 PIDS ratesmsd =
94 PIDS dlrssmsd =
95 PIDS recvsmsd =
96 PIDS sendsmsd =
97
98 playsmsd has been started
99 schedule at pid 28793
100 ratesmsd at pid 28795
101 dlrssmsd at pid 28797
102 recvsmsd at pid 28799
103 sendsmsd at pid 28801
104
105 playsmsd is running
106 schedule at pid 28793
107 ratesmsd at pid 28795
108 dlrssmsd at pid 28797
109 recvsmsd at pid 28799
110 sendsmsd at pid 28801
111
112
113 playSMS has been installed on your system
114
115
116 Your playSMS daemon script operational guide:

5/16
117
118 - To start it : playsmsd /etc/playsmsd.conf start
119 - To stop it : playsmsd /etc/playsmsd.conf stop
120 - To check it : playsmsd /etc/playsmsd.conf check
121
122
123
124 ATTENTION
125 =========
126
127 When message "unable to start playsmsd" occurred above, please check:
128
129 1. Possibly theres an issue with composer updates, try to run: "./composer update"
130 2. Manually run playsmsd, "playsmsd /etc/playsmsd.conf start", and then "playsmsd
/etc/playsmsd.conf status"

Precisamos configurar também que playsmsd inicie durante o boot para isso vamos usar o
systemd

1 # /usr/local/bin/playsmsd stop
2 # ln -s /usr/local/bin/playsmsd /etc/init.d/
3 # vim /etc/systemd/system/playsms.service

1 [Unit]
2 Description=PlaySMS
3 After=mariadb.service
4
5 [Service]
6 Type=oneshot
7 RemainAfterExit=yes
8 ExecStart=/usr/local/bin/playsmsd start
9 ExecStop=/usr/local/bin/playsmsd stop
10
11 [Install]
12 WantedBy=multi-user.target

Ative o novo serviço, e verifique se o mesmo foi ativado

1 # systemctl daemon-reload
2 # systemctl enable playsmsd
3 # systemctl restart playsmsd

1 # systemctl status playsmsd


2 # systemctl list-unit-files | grep playsmsd

Agora você já pode reiniciar que o playsmsd que o mesmo vai estar iniciando junto com o
boot.

6/16
Se você configurar um domínio virtual com certificado altere em
/var/www/html/playsms/config.php para $core_config['ishttps'] = true;

Para futuras atualizações execute:

1 # /usr/local/src/playsms/composer update

Instalação do Modem / Gammu

1 # apt install wvdial usb-modeswitch gammu gammu-smsd -y

Vamos verificar se o modem está conectado:

1 # wvdialconf

Resultado será algo como: (varia de cada modem)

1 Editing `/etc/wvdial.conf'.
2
3 Scanning your serial ports for a modem.
4
5 Modem Port Scan<*1>: S0 S1 S2 S3
6 ttyUSB0<*1>: ATQ0 V1 E1 -- OK
7 ttyUSB0<*1>: ATQ0 V1 E1 Z -- OK
8 ttyUSB0<*1>: ATQ0 V1 E1 S0=0 -- OK
9 ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
10 ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
11 ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- COMMAND NOT
12 SUPPORT
13 ttyUSB0<*1>: Modem Identifier: ATI -- Manufacturer: huawei
14 ttyUSB0<*1>: Speed 9600: AT -- OK
15 ttyUSB0<*1>: Max speed is 9600; that should be safe.
16 ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
17 ttyUSB1<*1>: ATQ0 V1 E1 -- failed with 2400 baud, next try: 0 baud
18 ttyUSB1<*1>: ATQ0 V1 E1 -- failed with 0 baud, next try: 0 baud
19 Modem Port Scan<*1>: USB2
20
21 Found a modem on /dev/ttyUSB0.
22 Modem configuration written to /etc/wvdial.conf.
ttyUSB0<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0 &C1 &D2"

O que deve ser observado é “Found a modem on /dev/ttyUSB0” e “Speed 9600”;

1 # cat /etc/wvdial.conf

Resultado vai ser algo como:

7/16
1 [Dialer Defaults]
2 Init1 = ATZ
3 Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
4 Modem Type = Analog Modem
5 Baud = 9600
6 New PPPD = yes
7 Modem = /dev/ttyUSB0
8 ISDN = 0

Certifique-se que os valores estão de acordo com a detecção:

Criamos os diretorios do gammu:

1 # mkdir -p /var/log/gammu /var/spool/gammu/{inbox,outbox,sent,error}

Demos permissões para o usuário do apache:

1 # chown www-data:www-data -R /var/spool/gammu/*

1 # cp /etc/gammu-smsdrc /etc/gammu-smsdrc_old
2 # vim /etc/gammu-smsdrc

Ajuste os valores port e connection para o valores detectados:

8/16
1 # Configuration file for Gammu SMS Daemon
2 [gammu]
3 port = /dev/ttyUSB0
4 connection = at9600
5 logfile = /var/log/gammu/gammu.log
6 logformat = textall
7
8 [smsd]
9 service = files
10 logfile = /var/log/gammu/smsd.log
11
12 debuglevel = 1
13
14 RunOnFailure = /etc/gammu-error.sh
15
16 #commtimeout = 1
17 #sendtimeout = 15
18 #statusfrequency = 0
19
20 outboxformat = unicode
21
22 transmitformat = auto
23 #unicode
24
25 inboxpath = /var/spool/gammu/inbox/
26 outboxpath = /var/spool/gammu/outbox/
27 sentsmspath = /var/spool/gammu/sent/
28 errorsmspath = /var/spool/gammu/error/

Vamos criar um script para que todos os números errados sejam enviado para o diretório
error, assim quando for enviar para algum númerro inválido não trava a o envio dos demais.

1 # vim /etc/gammu.error.sh

Adicione ao arquivo:

1 #!/bin/sh
2 echo $1 >> /var/log/gammu/numero-errado.log
3 mv /var/spool/gammu/outbox/$1 /var/spool/gammu/error/

De permissão para execução:

1 # chmod +x /etc/gammu.error.sh

Mais alguns ajustes e colocamos o gammu rodar com poderes de root.

9/16
1 # ln -s /etc/gammu-smsdrc /etc/gammurc
2 # echo "USER=root" >> /etc/default/gammu-smsd

Pare o gammu e vamos tenta-lo reconhecer o modem:

1 # systemctl stop gammu-smsd


2 # gammu -f /var/log/gammulog identify

Resultado vai ser algo como:

1 Dispositivo : /dev/ttyUSB0
2 Fabricante : Huawei
3 Modelo : unknown (E303C)
4 Firmware : 21.157.01.00.150
5 IMEI : 999999999999999
6 SIM IMSI : 999999999999999

Ainda com o gammu parado faça um teste enviando uma mensagem para seu celular,
algumas opereradoras so funcionam adicionando o DDD.

1 # echo "Minha mensagem" | gammu sendsms TEXT 55999999999

Start o gammu e verifique se esta tudo certo:

1 # systemctl start gammu-smsd


2 # systemctl status gammu-smsd

Agora você pode acompanhar os logs em /var/log/gammu/smsd.log:

1 # tail -f /var/log/gammu/smsd.log

Vamos a interface web, acesse http://[seu-ip]/playsms/ usando usario e senha admin.

Acesse o menu: Settings –> Manage gateway and SMSC

10/16
Localize o ícone da pastinha e clique nela.

Certifique-se que Spool folder esteja: /var/spool/gammu e clique em SAVE e depois BACK.

11/16
Agora clique no ícone com simbolo de mais (+)

Verifique se está como a imagem e clique em SAVE e depois em BACK

No menu Settings -> Manage credit adicione crédito ao seu usuário.

12/16
Selecione o usuário (provavelmente você só tem o admin) e coloque o valor de credito,
clique em ADD CREDIT depois BACK.

Agora no menu Settings -> Main configuration vamos definir o Default SMSC.

13/16
Seleciona em Default SMSC -> gammu

14/16
Vamos ao teste, acesse o menu My account -> Compose message e escreva uma
mensagem.

15/16
No meu Reports -> All sent messages, você pode acompanhar o status da mensagem, se
uma “quadradinho” verde estiver do lado da mensagem significa que ela foi entregue.

Bom o mais “complicado” era fazer isso, agora com um pouco de curiosidade você vai
longe…

Espero que tenha gostado!

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em
saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato
clique aqui.

Abraço!

16/16

Você também pode gostar