Enviar mensagens SMS e MMS em PHP
Neste guia, mostraremos como enviar mensagens SMS e MMS em seu aplicativo web PHP usando o Programmable SMS da Twilio.
Embora você possa enviar mensagens SMS somente de texto em praticamente qualquer lugar do planeta, o envio de mídia está disponível atualmente apenas nos EUA e no Canadá. Saiba mais neste artigo de suporte.
Os trechos de código neste guia são direcionados para as versões 5.x e 7.x do PHP e usam a Biblioteca auxiliar PHP da Twilio. Fique atento às versões PHP atualmente compatíveis e sempre use uma versão que ainda recebe atualizações de segurança.
Inscreva‐se (ou faça login) na conta da Twilio
Já tem uma conta da Twilio com um número de telefone? Você está pronto. Fique à vontade para pular esta seção.
Antes de receber chamadas telefônicas e enviar mensagens, você precisa se inscrever em uma conta da Twilio e adquirir um número de telefone da Twilio.
Se você é novo na Twilio, pode se inscrever em uma conta de avaliação gratuita para começar. Depois de se conectar, acesse o Console e obtenha o Account SID (SID da conta) e seu Auth Token (Token de autenticação). Você precisará desses valores para os exemplos de código abaixo.
Obter um número de telefone com recursos de SMS (e MMS)
O envio de mensagens requer um número de telefone da Twilio com recursos de SMS. Se você não possui atualmente um número de telefone da Twilio com recursos de SMS, precisará adquirir um. Depois de navegar até a página Buy a Number (Comprar um número), marque a caixa "SMS" e clique em "Search" (Pesquisar):
Se você mora nos EUA ou no Canadá e também deseja enviar mensagens MMS, pode selecionar a caixa "MMS". Ao visualizar os resultados da pesquisa, você pode ver os ícones do recurso na lista de números disponíveis:
Encontre um número que você goste e clique em "Buy" (Comprar) para adicioná‐lo à sua conta.
Se você estiver usando uma conta de avaliação, primeiro verifique seu número de telefone pessoal pelo console para poder testar o envio de SMS para você mesmo. (Saiba mais sobre como trabalhar com sua conta de avaliação gratuita.)
Agora que você tem um número de telefone da Twilio, pode começar a enviar mensagens para dispositivos móveis.
Enviar uma mensagem SMS em PHP pela API REST
Para enviar uma mensagem SMS da sua conta da Twilio, você precisará fazer um HTTP POST para o recurso Message da Twilio.
Ao usar a Biblioteca auxiliar PHP da Twilio, você pode criar uma nova instância do recurso Message, e especificar os parâmetros To, From e Body para sua mensagem.
Instalar o Composer e a biblioteca auxiliar PHP da Twilio
Se você ainda não tiver a biblioteca auxiliar PHP instalada, poderá instalá‐la usando o Composer. Se você precisar instalar o Composer, siga essas instruções para sua plataforma:
Há duas maneiras de instalar a biblioteca auxiliar PHP, o que é mais fácil dependendo da sua plataforma.
Em um terminal, execute o seguinte comando no diretório do projeto:
composer require twilio/sdk
Ou, você pode criar um arquivo chamado composer.json
. Nesse arquivo, adicione:
{
"require": {
"twilio/sdk": "^5.0"
}
}
Em seguida, execute
composer install
Salvar e executar o código SMS/MMS em PHP
Em seguida, abra um arquivo chamado send-sms.php
. Cole no seguinte conteúdo:
Substitua os valores de espaço reservado para sid
e token
por seus valores exclusivos para Account SID (SID da conta) e Auth Token (Token de autenticação). Você pode encontrá‐los no Console da Twilio.
Observação: não há problema em codificar suas credenciais para teste, mas use variáveis de ambiente para mantê‐las secretas antes de implantar na produção. Confira como definir variáveis de ambiente para obter mais informações.
Você informará à Twilio qual número de telefone usar para enviar essa mensagem substituindo o número from
pelo número de telefone da Twilio que você comprou anteriormente. Na linha com o comentário // to
(linha 11 em nosso código de exemplo), coloque o número do destinatário (provavelmente seu número de telefone celular).
Os dois parâmetros devem usar a formatação E.164 ("+
" e um código de país, por exemplo +16175551212
)
Depois de atualizar o código, salve-o. Em seguida, você pode executá‐lo a partir da linha de comando:
php send-sms.php
Então você deve ver rapidamente um telefone piscando ou emitindo bipes com o SMS - ótimo!
Se estiver usando uma conta de avaliação, você notará que todas as mensagens enviadas sempre começarão com "Sent from a Twilio trial account (Enviado de uma conta de avaliação da Twilio)". Depois de atualizar sua conta, você não verá mais esta mensagem. Saiba mais sobre o envio de mensagens SMS e MMS a partir de uma conta de avaliação.
Vamos ver o que acontece nos bastidores quando você envia esta solicitação para a Twilio.
Resposta da Twilio
Quando a Twilio receber sua solicitação para enviar um SMS pela API REST, ela verificará se você incluiu um número de telefone válido da Twilio no campo from
. A Twilio enfileirará o SMS ou retornará esse erro HTTP em resposta à sua solicitação.
Supondo que sua solicitação não tenha gerado um erro, a resposta HTTP da Twilio incluirá o SID da nova mensagem. Esse identificador exclusivo nos ajudará a fazer referência a esta mensagem mais tarde. No código acima, imprimimos esse SID no terminal.
A resposta JSON da Twilio inclui uma quantidade robusta de dados sobre sua mensagem. Um exemplo de resposta pode ser assim:
{"sid": "SMxxxxxxxxxxxxxxx",
"date_created": "Thu, 09 Aug 2018 17:26:08 +0000",
"date_updated": "Thu, 09 Aug 2018 17:26:08 +0000",
"date_sent": null,
"account_sid": "ACxxxxxxxxxxxxxxxx",
"to": "+15558675310",
"from": "+15017122661",
"messaging_service_sid": null,
"body": "This is the ship that made the Kessel Run in fourteen parsecs?",
"status": "queued",
"num_segments": "1",
"num_media": "0",
"direction": "outbound-api",
"api_version": "2010-04-01",
"price": null,
"price_unit": "USD",
"error_code": null,
"error_message": null,
"uri": "/2010-04-01/Accounts/ACxxxxxxxxx/Messages/SMxxxxxxxxxxxx.json",
"subresource_uris": {
"media": "/2010-04-01/Accounts/ACxxxxxxxx/Messages/SMxxxxxxxxxxxxx/Media.json"
}
}
Você pode acessar qualquer um desses atributos a partir do seu código PHP, como fizemos quando imprimimos o sid
.
Tente adicionar uma instrução de impressão como print($message->status);
. Salve o arquivo e execute o código com php send-sms.php
mais uma vez. Você deverá ver o status de sua mensagem, "queued
", impresso em seu terminal.
Se você receber um erro em resposta da Twilio ou nunca receber a mensagem, consulte estas dicas de resolução de problemas de mensagens não entregues.
{"sid": "SMxxxxxxxxxxxxxxx",
"date_created": "Thu, 09 Aug 2018 17:26:08 +0000",
"date_updated": "Thu, 09 Aug 2018 17:26:08 +0000",
"date_sent": null,
"account_sid": "ACxxxxxxxxxxxxxxxx",
"to": "+15558675310",
"from": "+15017122661",
"messaging_service_sid": null,
"body": "This is the ship that made the Kessel Run in fourteen parsecs?",
"status": "queued",
"num_segments": "1",
"num_media": "0",
"direction": "outbound-api",
"api_version": "2010-04-01",
"price": null,
"price_unit": "USD",
"error_code": null,
"error_message": null,
"uri": "/2010-04-01/Accounts/ACxxxxxxxxx/Messages/SMxxxxxxxxxxxx.json",
"subresource_uris": {
"media": null
}
}
Deseja rastrear o status de suas mensagens em tempo real? Será necessário configurar um URL de StatusCallback. Saiba mais em nosso tutorial sobre como confirmar a entrega de mensagens em PHP.
Enviar várias mensagens ou uma mensagem para vários destinatários
Para enviar mais de uma mensagem, basta chamar
$twilio->messages->create(...
em um loop - não há necessidade de adicionar um delay em sua lógica. Você pode enviar quantas mensagens desejar o mais rápido possível e a Twilio as colocará na fila para entrega no limite de taxa prescrito. Isso criará uma nova Instância de mensagem para cada número de telefone na lista.
Você pode achar útil organizar seus logs de contas e mensagens em Serviços de mensagens separados. Consulte nosso guia sobre como configurar e enviar mensagens de um serviço de mensagens para obter mais dicas.
Enviar uma mensagem com mídia (MMS) em PHP
Embora você possa enviar mensagens SMS somente de texto em praticamente qualquer lugar do planeta, o envio de mídia está disponível atualmente apenas nos EUA e no Canadá.
Para incluir mídia em sua mensagem de texto com tecnologia Twilio, você precisa fazer uma pequena adição ao código que escrevemos acima. Para enviar um MMS, você ainda fará uma solicitação HTTP POST
para o recurso Message, mas desta vez especifique um parâmetro para o URL de mídia, como uma imagem.
Crie um arquivo chamado send-mms.php
e inclua o seguinte código:
Mais uma vez, atualize a linha comentada from
e // to
para utilizar o número de telefone da Twilio e o seu celular.
O novo parâmetro mediaUrl
neste código informa à Twilio onde buscar nossa imagem incluída. Este deve ser um URL acessível publicamente: A Twilio não conseguirá acessar nenhum URL oculto ou que exija autenticação.
Assim como quando você envia um SMS simples, a Twilio enviará dados sobre a mensagem em sua resposta à sua solicitação. A resposta JSON conterá o SID exclusivo e o URI para seu recurso de mídia:
"subrecurso_uris": {"mídia": "/2010-04 01/Contas/ACxxxxxxxx/Mensagens/SMxxxxxxxxxxxxx/Mídia.json"}
Quando a API REST da Twilio cria seu novo recurso Message, ela salvará a imagem encontrada em media_url
especificado como um recurso de mídia. Uma vez criado, você pode acessar esse recurso a qualquer momento por meio da API.
Salve o arquivo e execute‐o a partir da linha de comando:
php send_mms.php
Em alguns segundos, você deve receber uma mensagem de texto com uma imagem - legal, não?
O que vem a seguir: Indo mais longe com PHP, MMS e SMS
Quer criar mais funcionalidade de mensagens em seu aplicativo PHP? Além disso, experimente nosso Início rápido do SMS em PHP e veja como receber e responder mensagens em PHP.
Precisa de ajuda?
Às vezes, todos nós precisamos; a programação é difícil. Receba ajuda agora da nossa equipe de suporte, ou confie na sabedoria da multidão navegando pelo Stack Overflow Collective da Twilio ou buscando a tag Twilio no Stack Overflow.