Twilio - SMS¶
Los mensajes de SMS y MMS bidireccionales de Twilio te permiten mantener una conversación enviando y recibiendo mensajes de texto y multimedia.
Warning
Este complemento asume que ya tienes una cuenta de Twilio creada y configurada para usar las funciones de números de teléfono. Si aún no tienes una cuenta configurada, por favor sigue los pasos en la documentación de Twilio.
Instalación¶
Importando el complemento¶
Después de instalar este paquete y configurar tu cuenta de Twilio, el siguiente paso es importar el paquete en tu código y comenzar a usar las funciones.
Instanciando el complemento¶
Primero, vamos a instanciar el complemento pasando alguna información de tu cuenta de Twilio. Todo lo que necesitamos es el ACCOUNT SID y el AUTH TOKEN de la cuenta, puedes obtener esta información en la sección Account Info de tu panel de control de Twilio.
Enviando mensajes de SMS¶
Con un número de teléfono obtenido a través de tu cuenta de Twilio, podemos enviar fácilmente mensajes de SMS. Los números de teléfono proporcionados deben seguir algunos formatos específicos, como se muestra a continuación.
Tip
Si tienes más de un número de teléfono configurado en tu cuenta de Twilio, puedes cambiar la propiedad phone number
en cualquier momento durante el proceso para definir qué número se utilizará.
from botcity.plugins.twilio.sms import BotTwilioSMSPlugin
account_sid = "<YOUR_ACCOUNT_SID>"
auth_token = "<YOUR_AUTH_TOKEN>"
# Phone numbers must be used in E.164 format
# [+][country code][phone number including area code]
my_phone = "+19403534611"
to_phone = "+5519987654321"
# Sending a simple message
sms = BotTwilioSMSPlugin(account_sid, auth_token, my_phone)
sms.send_sms(
to_number=to_phone,
msg_content="Hey! Sending to you a simple SMS"
)
Si tu número de Twilio admite MMS, podemos enviar contenido multimedia en los mensajes. El contenido multimedia debe ser una URL de acceso público, de esta manera podemos pasar esa URL como una lista al parámetro media urls
.
Recuperando mensajes¶
Con este complemento también podemos obtener mensajes asociados a un número de teléfono configurado. Podemos devolver mensajes que han sido enviados y recibidos por este número.
Puedes usar filtros para buscar mensajes específicos, como la fecha en que se envió el mensaje o el número que lo envió. Se devolverá una lista de mensajes y para cada mensaje es posible acceder a algunas propiedades y realizar algunas acciones más tarde.
sms = BotTwilioSMSPlugin(account_sid, auth_token, my_phone)
# Collects all messages that were received from this specific number
received_sms = sms.get_received_messages(from_number="+5519987654321")
# For each sms found, prints:
# The sending date
# The message content
for msg in received_sms:
print(msg.date_sent)
print(msg.body)
Respondiendo mensajes¶
Es posible responder a los mensajes que se devolvieron con el método get received messages
, podemos responder a un solo mensaje o recorrer la lista y responder a cada mensaje recuperado.
from datetime import datetime
from botcity.plugins.twilio.sms import BotTwilioSMSPlugin
account_sid = "<YOUR_ACCOUNT_SID>"
auth_token = "<YOUR_AUTH_TOKEN>"
my_phone = "+19403534611"
sms = BotTwilioSMSPlugin(account_sid, auth_token, my_phone)
# Get all messages received before 05/31/2022
messages = sms.get_received_messages(before_date=datetime(2022, 5, 31))
# Reply to all returned messages
for msg in messages:
sms.reply_sms(msg, "Received!")
Esperando nuevos mensajes¶
En casos en los que tenemos que esperar a que llegue un nuevo mensaje y no sabemos cuánto tiempo llevará, podemos usar el método wait for new sms
. De esta manera, es posible definir un tiempo máximo de espera y el número que enviará el mensaje, cuando sea necesario.
Descargando contenido multimedia recibido¶
Para los mensajes que se han recibido y tienen contenido multimedia, podemos guardar estos archivos en el disco.
Los tipos de contenido multimedia actualmente admitidos para guardar los archivos se definen en la siguiente tabla:
Tipo MIME admitido | Extensión utilizada para guardar el archivo |
---|---|
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 |