Story Transcript
Este tutorial demuestra como una aplicación puede responder automáticamente a los mensajes de texto. Crearás una aplicación que devuelve una respuesta cuando se recibe un mensaje de texto. La idea para la aplicación procede del estudiante Daniel Finnegan de la Universidad de San Francisco. Para realizar este tutorial se supone que ya estas familiarizado con los conceptos básicos de App Inventor -- el uso del Diseñador de componentes para construir una interfaz de usuario, y el uso del Editor de bloques para especificar controladores de evento. Intenta realizar alguno de los tutoriales basicos antes de continuar.
Conéctate al sitio web de App Inventor y comienza un nuevo proyecto. Nómbralo NoTextWhileDriving, y también el Title (título) de la pantalla a NoTextWhileDriving. Abre el editor de bloques y conéctalo al teléfono.
Diseñarás la aplicación para que envíe una respuesta para cualquier mensaje recibido. También permitirás al usuario personalizar la respuesta enviada. Este tutorial introduce los siguientes conceptos de App Inventor: El componente Texting para enviar textos y procesar los textos recibidos. El componente base de datos TinyDB para guardar el mensaje personalizado incluso cuando se cierra la aplicación.
La interfaz de usuario para NoTextWhileDriving es simple: tiene una caja de texto para el mensaje de respuesta y un botón para enviar los cambios en el mensaje. También necesitarás un componente Texting y un componente TinyDB, los cuales aparecerán en el área de componentes "no visuales". Mas abajo hay una tabla con instrucciones detalladas para el diseño de los componentes, pero puedes también construirla a partir la la siguiente imagen de como deberían quedar:
Los componentes que se muestran a continuación son los usados para crear la pantalla del diseñador mostrada mas arriba. Arrastra cada componente desde la Paleta dentro del Viewer y nómbralos como se especifica a continuación: Tipo de componente
Grupo de la paleta
Como lo llamarás
Propósito del componente
Label
Basic
PromptLabel
Informa al usuario sobre el funcionamiento de la aplicación
1 de 5
TextBox
Basic
MessageTextbox
El usuario introducirá su respuesta personalizada aquí
Button
Basic
SubmitResponseButton
El usuario hace clic aquí para enviar la respuesta a la base de datos
Texting
Social
Texting1
El componente que procesará los textos
TinyDB
Basic
TinyDB1
El componente que almacenará la respuesta en la base de datos
Ajusta las propiedades de los componentes del siguiente modo: Cambia la propiedad Text de PromptLabel a "The text below will be sent in response to all texts while this app is running." (El texto a continuación se enviará como respuesta a todos los mensajes mientras la aplicación esté funcionando) Cambia la propiedad Text de MessageTextbox a "I'm driving right now, I'll contact you shortly". (Estoy conduciendo, te llamaré en breve) Cambia la propiedad Text de SubmitResponseButton a "Modify Response". (Modificar la respuesta)
NoTextWhileDriving tiene los siguientes comportamientos: 1. Cuando se recibe un mensaje, el texto introducido en MessageTextbox se envía como mensaje de texto en respuesta al remitente. 2. Cuando el usuario modifica el mensaje personalizado en MessageTextbox y hace clic en SubmitResponseButton, el nuevo mensaje se guarda de forma persistente en la base de datos del teléfono. 3. Cuando se inicia la aplicación, el mensaje personalizado se carga desde la base de datos a MessageTextbox.
Cuando se recibe un mensaje en el teléfono, el evento Texting.MessageReceived es iniciado. Tu aplicación debe manejar este evento ajustando las propiedades PhoneNumber y Message del componente Texting apropiadamente y enviar texto de respuesta. Necesitarás los siguientes bloques: Tipo de bloque
Cajón
Propósito
Texting1.MessageReceived
Texting1
el controlador de evento que se activa cuando se recibe un mensaje de texto
set Texting1.PhoneNumber to
Texting1
Ajusta la propiedad PhoneNumber antes de enviar.
value number
My Definitions
este es el número de teléfono de la persona que envió el mensaje
set Texting1.Message to
Texting1
ajusta la propiedad Message antes de enviar
MessageText.Text
MessageText
Es el mensaje que el usuario ha introducido.
Texting1.SendMessage
Texting
Envía el mensaje.
Los bloques deben quedar así:
Cuando el teléfono recibe cualquier mensaje, el evento Texting1.MessageReceived es activado. El número de teléfono del remitente está en el argumento number, y el mensaje del remitente en el argumento messageText. En respuesta, la aplicación envía un mensaje de texto al remitente. Para enviar un mensaje, la aplicación ajusta las dos propiedades clave del componente Texting: la propiedad PhoneNumber y la propiedad Message. Texting.PhoneNumber se ajusta al número del remitente, y Texting.Message se ajusta al mensaje de MessagetextBox-- este puede ser, "I'm driving right now, I'll contact you shortly.", (Estoy conduciendo, te llamaré en breve) por defecto, o el usuario también podrá modificarlo. Una vez que estas propiedades están ajustadas, se llama a Texting1.SendMessage para enviar el mensaje de respuesta.
Prueba el comportamiento. Necesitaras un segundo teléfono para probar este comportamiento. Desde el segundo teléfono, envía un mensaje de texto al teléfono que está ejecutando la aplicación. ¿Recibe el segundo teléfono el mensaje de respuesta? Si esto funciona, prueba a modificar el mensaje de respuesta y enviar otro mensaje desde el segundo teléfono. ¿Se ha enviado la nueva respuesta?
Hasta ahora la aplicación funciona, pero si la cierras y la vuelves a abrir el mensaje que has personalizado se habrá perdido. Para hacer las cosas de un modo mas conveniente, almacena la respuesta personalizada que el usuario ha introducido en una base de datos usando el componente TinyDB. TinyDB te proporciona dos bloque: StoreValue y GetValue. De esta forma te permite almacenar y etiquetar una pieza de información, que mas tarde podrás recuperar.
2 de 5
Necesitarás los siguientes bloques para almacenar la respuesta almacenada: Tipo de bloque
Cajón
Propósito
SubmitResponseButton.Click
SubmitResponseButton
El usuario hace clic en este botón para guardar el mensaje de respuesta
TinyDB1.StoreValue
TinyDB1
almacena el mensaje de respuesta en la base de datos del teléfono
text ("responseMessage")
Text
es usado como etiqueta para los datos
MessageTextbox.Text
MessageTextbox
el mensaje de respuesta introducido por el usuario está aquí
Los bloques deben quedar así:
Cuando el usuario hace clic en SubmitResponseButton, la aplicación almacena la respuesta introducida en la base de datos. El texto "responseMessage" es usado como etiqueta para identificar específicamente la información -- mas tarde usarás esa etiqueta para recuperar el mensaje desde la base de datos.
Programa el controlador de evento Screen1.Initialize para que la respuesta personalizada que se ha almacenado sea recuperada desde la base de datos y colocada en MessageTextbox. Comprueba los datos recuperados para asegurarte que contienen "algo" -- después de todo, la primera vez que se use la aplicación, la base de datos no tendrá ningún mensaje guardado. Si hay un mensaje guardado, colócalo en MessageTextbox para que el usuario pueda verlo y que pueda ser usado para responder a los mensajes entrantes. Necesitarás los siguientes bloques: Tipo de bloque
Cajón
Propósito
def variable ("response")
Definitions
Una variable temporal para almacenar los datos recuperados
text (vacio)
Text
El valor inicial de la variable puede ser cualquier cosa
Screen1.Initialize
Screen1
Este es activado cuando se inicia la aplicación
set response to
My Definitions
cambiaras la variable al valor recuperado de la base de datos
TinyDB1.GetValue
TinyDB1
toma la respuesta de texto almacenada en la base de datos
text ("responseMessage")
Text
colócalo en la ranura tag de GetValue, asegurate de que el texto es el mismo que se usó en StoreValue above
if test
Control
para preguntar si el valor recuperado contiene algún texto
> block
Math
comprueba si la longitud del valor recuperado es > (mayor que) 0
length text
Text
comprueba si la longitud del valor recuperado es mayor que 0
global response
My Definitions
esta variable mantiene el valor devuelto desde GetValue
number (0)
Math
para comparar con la longitud de la respuesta
set MessageTextbox.Text to MessageTextbox si recuperamos algo, lo coloca en MessageTextbox global response
My Definitions
esta variable mantiene el valor devuelto desde GetValue
Los bloques deben quedar así:
Cuando se inicia la aplicación, el evento Screen1.Initialize es activado. La aplicación llama a la base de datos TinyDB1.GetValue con la etiqueta (tag) "responseMessage"-- la misma etiqueta usada cuando almacenaste la entrada del usuario anteriormente. El valor resultante se coloca en la variable de respuesta (response). La variable de respuesta se usa para que el valor devuelto por la base de datos pueda ser comprobado. Si tiene una longitud de 0, entonces no hay una entrada en
3 de 5
la base de datos con la etiqueta "responseMessage"-- algo que ocurrirá la primera vez que se use esta aplicación. Pero si el mensaje es mayor que 0, la aplicación sabe que una respuesta ha sido almacenada anteriormente, y el valor devuelto puede ser colocado en MessageTextBox lo cual podrá ver el usuario y será usado como respuesta en los mensajes enviados.
Prueba la aplicación. Introduce una nueva respuesta en MessageTextbox y haz clic en SubmitResponseButton. Entonces reinicia la aplicación haciendo clic en el botón Restart App en el Editor de bloques. Esto hará que la aplicación se reinicie tal como lo haría cuando el usuario cierra y vuelve a abrir la aplicación mas tarde. ¿Aparece el mensaje personalizado que has introducido?
Una vez que tengas la aplicación No Text While Driving funcionando, puede que quieras explorar algunas variaciones. Por ejemplo. Crea una versión que lea en voz alta los mensajes recibidos. Necesitará usar el componente TextToSpeech. Crea una versión que permita al usuario crear mensajes personalizados para números en particular. Crea una versión que envíe respuestas personalizadas basándose en la localización del usuario (por ejemplo, Estoy en unan iglesia...)
Estas son algunas de las ideas examinadas en este tutorial: El componente Texting puede ser usado tanto para enviar mensajes como para procesar los que se reciben. El componente TinyDB se usa para almacenar información de modo persistente, en la base de datos del teléfono, para que esté disponible cada vez que se inicie la aplicación.
Escanea el siguiente código Qr con tu teléfono para instalar y ejecutar la aplicación de ejemplo.
Si te ha gustado trabajar con este ejemplo en App Inventor, descarga el código fuente a tu computadora, despues abre App Inventor, ve a la página My Projects, y elige More Actions | Upload Source.
Google agradece al Profesor David Wolber, Profesor de Ciencias de la Computación en la Universidad de San Francisco, el desarrollo de este tutorial.
4 de 5
Este trabajo está bajo una licencia Creative Commons Attribution-NonCommercial 3.0 Unported License. El trabajo original de Google se ha modificado El trabajo modificado se ha traducido del ingles al español por Pepe Corcín Acerca de | Privacidad | Condiciones
5 de 5