Saltar al contenido

Construye un Futurama Quote-bot con Twilio y Ruby

Es hora de empezar a construir nuestra aplicación. En tu directorio Gemfile, abre un nuevo archivo llamado morbotron.rb en tu editor preferido.

En la parte superior de este archivo, agregue las siguientes líneas:

Construye un Futurama Quote-bot con Twilio y Ruby
Construye un Futurama Quote-bot con Twilio y Ruby
1234567891011require$0027twilio-ruby$0027require$0027rufus-scheduler$0027require$0027httparty$0027# Configura un cliente para hablar con el Twilio REST API.account_sid =$0027XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$0027# Tu cuenta SID de www.twilio. com/consoleauth_token =$0027YYYYYYYYYYYYYYYYYYYYYYYYYY$0027# Tu Auth Token de _COPY0@client=Twilio::REST::Client.newaccount_sid, auth_token# Configura nuestro scheduler.scheduler =Rufus::Scheduler.new

rubí

Las tres primeras líneas del código anterior son simplemente la importación de todas las bibliotecas que acabamos de instalar. Las tres líneas después de nuestras importaciones configuran y crean un objeto Twilio::REST::Client que nos permitirá hacer llamadas a la API Twilio REST. Asegúrate de reemplazar los valores de account_sid y auth_token con el SID de tu cuenta y el token de autenticación. Puedes encontrar estos valores en el panel de control de tu cuenta de Twilio. La última línea crea nuestro planificador, que configuraremos en breve.

Nota importante : Nunca envíes código con tus credenciales de la API a un repositorio público. Consulta la sección «Pasos opcionales» al final de este post para un enfoque alternativo al uso de tus claves de la API de Twilio.

A continuación, añade el siguiente método get_quote:

1234567891011121314151617defget_quote r =HTTParty.get($0027https://morbotron.com/api/random$0027)# Comprueba si nuestra solicitud tenía una respuesta válida.if r.code ==200 json = r.parsed_response # Extrae el número de episodio y la marca de tiempo de la respuesta de la API. _, episodio, marca de tiempo = json["Frame"].values # Construye una URL adecuada image_url ="https://morbotron.com/meme/"+ episodio +"/"+ marca de tiempo.to_s # Combina cada línea de subtítulos en una cadena, separada por líneas nuevas. caption = json["Subtitles"].map{|subtitle| subtitle["Content"]}.join("
")return image_url, caption endend

rubí

get_quote utiliza httparty para enviar una solicitud de GET a Morbotron. Esto recupera datos sobre un momento aleatorio de Futurama. Aunque Morbotron no es técnicamente una API, todo el sitio está basado en React y obtiene recursos a través de HTTP. Como tal, podemos usar el sitio de la misma manera que usaríamos un API.

A continuación, convertimos nuestros datos recuperados en JSON, extraemos la marca de tiempo y el código del episodio, y convertimos la marca de tiempo en una cadena. La marca de tiempo y el episodio se utilizan para crear la URL que apunta a una captura de pantalla del momento aleatorio de Futurama.

Finalmente, tomamos el contenido de cada línea de subtítulos en nuestro JSON y los unimos para formar el pie de foto de nuestro guión.

Ahora añadamos el único otro método que necesitamos:

1234567891011121314defsend_MMS media, body = get_quote begin@client.messages.create( body: body, media_url: media, to:$0027+12345678901$0027,# Reemplazar con tu número de teléfono de:$0027+12345678901$0027# Reemplazar con tu número de Twilio) puts "Message sent!"rescueTwilio::REST::RequestError= > e puts e.message endend

rubí

Este método comienza llamando al método get_quote que creamos en el paso anterior y almacenando sus valores de retorno. El bloque de inicio/rescate de arriba fue adaptado de la documentación de la Twilio Ruby Helper Library. Estas líneas simplemente toman una serie de parámetros y los convierten en una llamada a la API REST de Twilio.

Reemplaza los parámetros de ida y vuelta con tu número de teléfono real y tu número de teléfono de Twilio, respectivamente. Te recomiendo que compruebes tu terminal para ver si se ha producido algún error durante la llamada al API.

Ahora en la parte inferior de nuestro archivo, debajo de los dos métodos que acabamos de añadir, inserte las siguientes tres líneas:

1234scheduler.every $002724h$0027do send_MMSendscheduler.join

rubí

rufus-scheduler permite establecer intuitivamente la frecuencia de un método. Nuestra aplicación se comportará ahora de acuerdo con el programador, lo que significa que send_MMS será llamado una vez cada 24 horas indefinidamente o hasta que salgas de la aplicación.