Busca


imprimir pdf
Enviar SMS via um script PHP

Qual a função que é necessário utilizar?


A OVH coloca à disposição de todos, há vários anos, funções SOAPI. Este método permite realizar as acções disponíveis no Manager através de um script :
http://www.ovh.com/soapi/pt/

A função da qual vamos necessitar agora chama-se "telephonySmsSend" e está disponível na página :
http://www.ovh.com/soapi/pt/?method=telephonySmsSend

Implementação


Pré-requisitos :
É indispensável possuir uma conta SMS criada no seu espaço Manager para utilizar a função que iremos descrever. O seu saldo de SMS deve igualmente ser positivo. O número do expeditor deve ser validado a partir do Manager (Secção SMS). Para saber mais, pode consultar o seguinte site :
http://www.ovh.pt/sms/pack_sms.xml?step=tech


O script de envio :
A função que vamos "chamar" via um script PHP necessita de php5, portanto o nome de ficheiro escolhido tem a extensão .php5 (neste caso send.php5) para que não ocorra um erro de versão.

O código está comentado para lhe permitir saber o que está a ser executado. Ao longo deste guia iremos tomar como exemplo um NIC-Handle fictício (sms-xx123456-1). O número de telefone do cliente (que não existe) será o "0600110011", seja no formato internacional : "+33600110011" .

A documentação de "telephonySmsSend" apresenta-se da seguinte forma :

int telephonySmsSend(string session, string smsAccount, string numberFrom, string numberTo, string message, int smsValidity, int smsClass, int smsDeferred, int smsPriority)

As variáveis estão descritas na página : http://www.ovh.com/soapi/pt/?method=telephonySmsSend

A própria função de envio assemelha-se a :

$result = $soap->telephonySmsSend(ligacao_ao_manager, "conta_sms", "numero_do_expeditor", "numero_do_destinatario", "mensagem_do_sms", "tempo_para_o_envio", "tipo_de_sms", "tempo_antes_do_envio", "prioridade_da_sms");


No nosso exemplo iremos ser o mais simples possível, deixando os parâmetros "por defeito" :


$result = $soap->telephonySmsSend($session, "sms-xx123456-1", "+33600110011", "numero_do_destinatário", "$message", "", "1", "", "");


Enviar uma SMS a partir do código fonte, funciona bem, mas criar variáveis a fim de implementar um formulário é melhor. Portanto, tomando em conta o nosso exemplo, eis o que podemos propor :

É criado um ficheiro HTML na forma :

<!-- abertura da tag html -->
<html>

<!-- abrimos a tag do formulário indicando que o método POST será feito no ficheiro "send.php5", o nome deste formulário é SMS -->
<form action="send.php5" method="post" name="sms">

<!-- uma informação sobre a página : aqui indicamos o nome do campo a preencher, bem como o formato a respeitar -->
Destinatário : (exemplo para enviar uma SMS para um número de telemóvel francês: +33600110011)

<!-- "saltamos" uma linha para a apresentação da página -->
<br />

<!-- um campo do tipo "texto" com um tamanho de 20, podendo conter 16 caracteres; o nome deste campo é destinatario -->
<input type="text" name="destinatario" size="20" maxlength="16" />

<br /><br />

Mensagem :
<br />

<!-- eis a zona de texto para a mensagem SMS, o tamanho da zona é de 30 (colunas de caracteres) em largura com 10 linhas; o nome desta zona é "texto" -->
<textarea name="texto" cols="30" rows="10"></textarea>

<br />

<!-- enviámos o formulários com o botão enviar; o nome do botão é "enviar" -->
<input name="enviar" type="submit" value="send" />

<!-- fechamos a tag do formulário -->
</form>

<!-- fechamos a tag html -->
</html>

Chamamos ao ficheiro "form.html"

Agora vamos criar o ficheiro send.php5 que será "chamado" pelo formulário form.html :

<!-- abertura da tag php -->
<?php

//introduza o seu NIC-Handle, substitua xx123456-ovh pelo seu próprio NIC-handle
$nic="xx123456-ovh";

//Introduza a sua palavra-passe associada ao nic-handle, substituindo ovh123456 pela palavra passe correcta.
$pass="ovh123456";

//introduza o nome da sua conta sms, substituindo sms-xx123456-1 pelo valor correcto.
$conta_sms="sms-xx123456-1";

/*introduza o número do remetente da sms, este número deverá ser validado no seu Manager,
substituindo +33600110011 pelo seu número de telemóvel*/
$from="+33600110011";


/* criação da variável "to" a partir da qual recuperamos via o método POST o campo que tem o nome "destinatario" na página form.html */
$to=$HTTP_POST_VARS['destinatario'];

/* criação da variável "mensagem" a partir da qual recuperamos via o método POST o campo que tem o nome "texto" na página form.html */
$message=$HTTP_POST_VARS['texto'];

// abertura da função soapi
try
{
// vamos usar "soapi"
$soap = new SoapClient("https://www.ovh.com/soapi/soapi-re-1.8.wsdl");

/* ligação ao seu manager usando o seu identificador, aqui utilizaremos a conta
xx123456-ovh ($nic) com a palavra passe ovh123456 ($pass), o nic-handle pertence a um cliente francês (fr) */
$session = $soap->login("$nic", "$pass","fr", false);

// apresentação da mensagem de sucesso na ligação
echo "login successfull\n";

/* utilizaremos aqui a conta sms sms-xx123456-1 ($conta_sms) pertencente ao nic-handle xx123456-ovh,
cujo numero 06600110011 ($from) foi já validado no manager e será usado como
remetente, o destinatário coloca-se de seguida ($to), a variável $mensagem contém o texto da SMS, o espaço vazio permite deixar os parâmetros por defeito
, o "1" força o envio da SMS no formato clássico,
a mensagem será guardada no telefone do destinatário */
$result = $soap->telephonySmsSend($session, "$conta_sms", "$from", "$to", "$mensagem", "", "1", "", "");

// apresentação do estado
echo "telephonySmsSend successfull\n";

// apresentação do resultado retornado
print_r($result);

// fechamos a ligação ao Manager
$soap->logout($session);
// apresentação da confirmação de fecho da sessão
echo "logout successfull\n";

}

catch(SoapFault $fault)
{
// apresentação dos erros
echo $fault;
}

// fecho da tag php
?>


Se tudo correu bem, terá agora uma página HTML (form.html) a partir da qual poderá introduzir o número de um destinatário via um formulário on-line, bem como uma mensagem a enviar sob a forma de SMS. Se clicar no botão "enviar", a página send.php5 é invocada e a sua SMS é enviada.


A saber :
Pense em tornar seguro o acesso a estas páginas pois elas permitem utilizar a sua conta e o seu saldo SMS.

Visto que utilizámos um script com as variáveis, o envio da SMS pode ser automatizado. Poderá igualmente criar um ciclo que fará envios de SMS em massa.
Poderá fazer uma ligação à sua base de dados ... as possibilidades são bastantes.