Twilio - SMS¶
As mensagens de SMS e MMS bidirecionais do Twilio permitem que você continue conversando, enviando e recebendo mensagens de texto e multimídia.
Aviso
Este plugin assume que você já possui uma conta do Twilio criada e configurada para usar os recursos de números de telefone. Se você ainda não possui uma conta configurada, siga as etapas da documentação do Twilio.
Instalação¶
Importando o plugin¶
Depois de instalar este pacote e configurar sua conta do Twilio, o próximo passo é importar o pacote para o seu código e começar a usar as funções.
Instanciando o plugin¶
Primeiro, vamos instanciar o plugin, passando algumas informações da sua conta do Twilio. Tudo o que precisamos é a ACCOUNT SID e o AUTH TOKEN da conta, você pode obter essas informações da seção Account Info no seu Twilio Dashboard.
Enviando mensagens SMS¶
Com um número de telefone obtido através da sua conta do Twilio, podemos enviar mensagens SMS facilmente. Os números de telefone fornecidos devem seguir alguns formatos específicos, conforme mostrado abaixo.
Dica
Se você tiver mais de um número de telefone configurado na sua conta do Twilio, poderá alterar a propriedade número de telefone
a qualquer momento durante o processo para definir qual número será usado.
from botcity.plugins.twilio.sms import BotTwilioSMSPlugin
account_sid = "<SUA_CONTA_SID>"
auth_token = "<SEU_AUTH_TOKEN>"
# Os números de telefone devem ser usados no formato E.164
# [+] [Código do país] [número de telefone, incluindo código de área]
meu_numero = "+19403534611"
numero_remetente = "+5519987654321"
# Enviando uma mensagem simples
sms = BotTwilioSMSPlugin(account_sid, auth_token, meu_numero)
sms.send_sms(
to_number=numero_remetente,
msg_content="Ei! Enviando para você um SMS simples"
)
Se o seu número de Twilio suportar MMS, podemos enviar algum conteúdo de mídia nas mensagens. O conteúdo da mídia deve ser uma URL acessível ao público, dessa maneira, podemos passar essa URL como uma lista para o parâmetro media urls
.
Recuperando mensagens¶
Com este plugin, também podemos obter mensagens associadas a um número de telefone configurado. Podemos devolver mensagens que foram enviadas e recebidas por esse número.
Você pode usar filtros para procurar mensagens específicas, como a data em que a mensagem foi enviada ou o número que o enviou. Uma lista de mensagens será retornada e, para cada mensagem, é possível acessar algumas propriedades e executar algumas ações posteriormente.
sms = BotTwilioSMSPlugin(account_sid, auth_token, meu_numero)
# Coleta todas as mensagens que foram recebidas deste número específico
sms_recuperados = sms.get_received_messages(from_number="+5519987654321")
# Para cada SMS encontrado, impressões:
# A data de envio
# O conteúdo da mensagem
for msg in sms_recuperados:
print(msg.date_sent)
print(msg.body)
Respondendo mensagens¶
É possível responder a mensagens que foram retornada com o método get received messages
, podemos responder a uma única mensagem ou percorrer pela lista e responder cada mensagem recuperada.
from datetime import datetime
from botcity.plugins.twilio.sms import BotTwilioSMSPlugin
account_sid = "<<SUA_CONTA_SID>>"
auth_token = "<SEU_AUTH_TOKEN>"
meu_numero = "+19403534611"
sms = BotTwilioSMSPlugin(account_sid, auth_token, meu_numero)
# Receba todas as mensagens recebidas antes05/31/2022
mensagens = sms.get_received_messages(before_date=datetime(2022, 5, 31))
# Responder a todas as mensagens retornadas
for msg in messages:
sms.reply_sms(msg, "Recebida!")
Aguardando por novas mensagens¶
Nos casos em que precisamos esperar que uma nova mensagem chegue e não sabemos quanto tempo levará, podemos usar o método wait for new sms
. Dessa maneira, é possível definir um tempo de espera máximo e o número que enviará a mensagem, quando necessário.
Baixando o conteúdo de mídia recebido¶
Para mensagens que foram recebidas e possuem conteúdo de mídia, conseguimos salvar esses arquivos no disco.
Os tipos de conteúdo de mídia atualmente suportados usados para salvar os arquivos são definidos na tabela abaixo:
Tipo MIME suportado | Extensão usada para salvar o arquivo |
---|---|
image/jpg |
.jpg |
image/jpeg |
.jpeg |
image/png |
.png |
image/gif |
.gif |
audio/mp4 |
.mp4 |
audio/mpeg |
.mpeg |
video/mp4 |
.mp4 |
video/mpeg |
.mpeg |
video/3gpp |
.3gpp |
application/pdf |
.pdf |