Acceder

Ver la Versión Completa : [ SOLUCIONADO ] Problemas cuando falla acción CAPTAR VOZ Y %VOICE queda vacia


ariandroid
13/10/13, 18:45:17
Hola a todos, tengo una duda con la variable %VOICE que esoy usando como condición para que ejecute ciertas acciones en esta tarea.

Mi objetivo es que siempre que tenga una llamada perdida de cualquier contacto favorito le conteste con un mensaje de whats app.
Además si estoy en el coche(con el bluetooth encendido) y la llamada es de 4 determinados contactos de todos los que tengo marcados como favoritos, me de diga por voz que tengo opción de en vez de enviarle un whatsapp, llamarlo por telefono.


Contestar Perdida Fav (33)
A1: Vibrar [ Tiempo:200 ]
A2: Ir a acción [ Tipo:Número Acción Número:29 Etiqueta: ] Si (if) [ %BLUE !~ on ]
<Si la llamada es de FULANITO>
A3: Si (if) [ %CNUM ~ TELEFONO FULANITO ]
A4: Decir [ Texto:La llamada recibida es de FULANITO, ¿Quieres mejor que la llame? Motor: Voz:com.ivona.tts:spa-ESP Stream:3 Tono:8 Velocidad:6 Continuar tarea inmediatamente:Apagado ]
A5: Captar Voz [ Título:Captando Voz Modelo Lenguaje:Forma libre Resultados Máximos:1 Cuenta atrás (segundos):30 ]
A6: Separar variable [ Nombre:%VOICE Separador: Eliminar base:Apagado ]
A7: Llamar [ Número:FULANITO Automarcado:Encendido ] Si (if) [ %VOICE1 ~ si ]
A8: Fin si (End if)
<Si la llamada es de MENGANITO>
A9: Si (if) [ %CNUM ~ TELEFONO MENGANITO ]
A10: Decir [ Texto:La llamada recibida es de MENGANITO, ¿Quieres mejor que lo llame? Motor: Voz:com.ivona.tts:spa-ESP Stream:3 Tono:8 Velocidad:6 Continuar tarea inmediatamente:Apagado ]
A11: Captar Voz [ Título:Captando Voz Modelo Lenguaje:Forma libre Resultados Máximos:1 Cuenta atrás (segundos):30 ]
A12: Separar variable [ Nombre:%VOICE Separador: Eliminar base:Apagado ]
A13: Llamar [ Número:MENGANITO Automarcado:Encendido ] Si (if) [ %VOICE1 ~ si ]
A14: Fin si (End if)
<Si la llamada es de SUTANITO>
A15: Si (if) [ %CNUM ~ TELEFONO SUTANITO ]
A16: Decir [ Texto:La llamada recibida es de SUTANITO, ¿Quieres mejor que la llame? Motor: Voz:com.ivona.tts:spa-ESP Stream:3 Tono:8 Velocidad:6 Continuar tarea inmediatamente:Apagado ]
A17: Captar Voz [ Título:Captando Voz Modelo Lenguaje:Forma libre Resultados Máximos:1 Cuenta atrás (segundos):30 ]
A18: Separar variable [ Nombre:%VOICE Separador: Eliminar base:Apagado ]
A19: Llamar [ Número:SUTANITO Automarcado:Encendido ] Si (if) [ %VOICE1 ~ si ]
A20: Fin si (End if)
<Si la llamada es de PERENGANITO>
A21: Si (if) [ %CNUM ~ PERENGANITO ]
A22: Decir [ Texto:La llamada recibida es de PERENGANITO, ¿Quieres mejor que lo llame? Motor: Voz:com.ivona.tts:spa-ESP Stream:3 Tono:8 Velocidad:6 Continuar tarea inmediatamente:Apagado ]
A23: Captar Voz [ Título:Captando Voz Modelo Lenguaje:Forma libre Resultados Máximos:1 Cuenta atrás (segundos):30 ]
A24: Separar variable [ Nombre:%VOICE Separador: Eliminar base:Apagado ]
A25: Llamar [ Número:PERENGANITO Automarcado:Encendido ] Si (if) [ %VOICE1 ~ si ]
A26: Fin si (End if)
A27: Detener [ Con error:Apagado Tarea: ] Si (if) [ %VOICE1 ~ si ]
A28: Decir [ Texto:Entonces voy a contestar con un whats app la llamada de %CNAME Motor: Voz:com.ivona.tts:spa-ESP Stream:3 Tono:7 Velocidad:5 Continuar tarea inmediatamente:Apagado ]
A29: Establecer variable [ Nombre:%Data A:AQUI PONGO EL TEXTO QUE QUIERO QUE ME ENVIE Calcular:Apagado Añadir:Apagado ]
A30: Establecer variable [ Nombre:%Telefono A:%CNUM Calcular:Apagado Añadir:Apagado ]
A31: Establecer variable [ Nombre:%Key_id A:%TIMES Calcular:Apagado Añadir:Apagado ]
A32: Establecer variable [ Nombre:%Timestamp A:%TIMEMS Calcular:Apagado Añadir:Apagado ]
A33: Establecer variable [ Nombre:%Received_timestamp A:%TIMEMS Calcular:Apagado Añadir:Apagado ]
A34: Ejecutar consola [ Comando:sqlite3 /data/data/com.whatsapp/databases/msgstore.db "INSERT INTO messages (key_remote_jid, key_from_me, key_id,status, needs_push, data, timestamp, media_url, media_mime_type, media_wa_type, media_size, media_name, latitude, longitude, thumb_image, remote_resource, received_timestamp, send_timestamp, receipt_server_timestamp, receipt_device_timestamp, raw_data, media_hash, recipient_count, media_duration, origin) VALUES ('34%[email protected] (34%[email protected])',1,'%Key_id-1',0,0,'%Data',%Timestamp,'','','0',0,'',0.0,0.0,' ', '',%Received_timestamp,-1,-1,-1,0,'',0,0,0);" Cuenta atrás (segundos):0 Usar Root:Encendido Almacenar Salida En: Almacenar Errores En: Almacenar Resultado en: Continuar Tarea Tras Error:Encendido ]
A35: Matar aplicación [ Aplicación:WhatsApp Usar Root:Encendido ]
A36: Vibrar [ Tiempo:200 ]


Me funciona correctamente siempre menos cuando falla el reconocimiento de voz, por que no ha captado nada o pasa el tiempo del reconocimiento.
He estado mirando que cuando sucede esto, la variable se queda en blanco y me jode la acción 27, Puesto que su valor no va ha ser ni SI ni NO, sino que va ha estar en blanco.

A27: Detener [ Con error:Apagado Tarea: ] Si (if) [ %VOICE1 ~ si ]

Había pensado poner una / para decirle a la accíon 27 que cuando el valor de VOICE coincida con "si" o este en blanco, por eso lo de la barra que por lo que he leido significa "o".

A27: Detener [ Con error:Apagado Tarea: ] Si (if) [ %VOICE1 ~ si/ ]


Pero ¿Qué tengo que poner para representar que el valor de la variable está en blanco?

Gracias y un saludito a toda la comunidad que sois unos makinas.:dios::dios::dios::dios:

mlesir
13/10/13, 19:13:11
Esto pero sin las comillas "%VOICE"
Otra forma de hacerlo útil es "%*" de esta forma le dices que si el primer carácter del valor de una variable coincide con el signo % se cumple la condición. Todas las variables empiezan con ese signo. Y haz una prueba : ejecuta una acción flash que muestre una varíable a la que no le hayas dado valor. A ver que te muestra. Luego prueba a ponerle if y prueba a ver si te funciona lo que te digo.
Después prueba a darle a esa primera variable el valor %Ejemplo. Igualas las dos variables, estando las dos vacías, a ver que te sale en el flash.
Y luego si quieres pruebas a hacer un if %VOICE coincide con "" (o sea nada, dejar esto vacío como si estuviera vacio) a ver que pasa...
Con esto entenderás perfectamente como funcionan las variables vacías.
Yo cambiaría el título de tu post por algo muy parecido a lo que has puesto en rojo, es mucho más descriptivo para alguien que posteriormente tenga la misma duda que tu.

ariandroid
13/10/13, 21:42:41
Dices: ...Y haz una prueba : ejecuta una acción flash que muestre una variable a la que no le hayas dado valor. A ver que te muestra.


El flash de la variable sin valor %Prueba me muestra en el flash el texto "%Prueba".


Dices: ...Luego prueba a ponerle if y prueba a ver si te funciona lo que te digo.

Le pongo al flash lo que me dices if %Prueba~%Prueba al flash y me muesta el texto %Prueba, me muestra el texto pese al if independientemente al valor que tenga la variable %Prueba que en este caso esta vacía.


Dices: ...Después prueba a darle a esa primera variable el valor %Ejemplo.

Le doy a la variable %Prueba el valor %Ejemplo (que a su vez también es una variable sin valor) y el flash, que tiene activa la condición if %Prueba~%Prueba ,me muestra el texto %Ejemplo y creo que no debería mostrarme nigun flash puesto que en ese momento la variable %Prueba ya si tiene valor que es el valor texto %Ejemplo con lo que no debería visualizarse el flash al no cumplirse la condición para que se muestre.

o bien ¿Es que se si cumple la condición para mostrar el flash, por que el valor de la variable %Ejemplo tiene valor, pero es un valor que no vale nada, porque a su vez la variable %Ejemplo esta vacía, por lo que si coincidiría la condición para mostrar el flash, que a su vez es estar vacío?

Como me ha hecho pensar le he dado a la variable %Prueba el valor de la variable %Ejemplo y a su vez a la variable %Ejemplo le he dado el valor de noventa por ciento (90%) que casualmente lleva un símbolo de porcentaje % y me muestra el flash el texto 90%.

Yo entiendo que el flash no debería mostrase, porque muestra el valor de la variable %Prueba solamente cuando el valor de %Prueba este vacío por eso tiene activo el (si %Prueba~%Prueba) es decir si la variable prueba esta vacía y la variable %Prueba en ese momento ya no esta vacía ya que su valor es 90% por es el valor que toma la variable %Prueba que toma a su vez de la variable %Ejemplo

Entonces puedo deducir y corrígeme si me equivoco que:
1.Cuando el valor de una variable esta vacía muestra como texto su propio nombre.
2.Cuando el valor de una variable contiene un símbolo de porcentaje como el 90%, la liamos porque tasker entenderá que no es una cantidad sino que estamos hablando de una variable y no funcionara correctamente.

Vaya rayada me He vuelto loco, creo que lo he pillado ¿no?

mlesir
13/10/13, 22:33:15
Lo que te quería decir básicamente con lo anterior es que la mejor manera de saber una cosa es probarla.Y Efectivamente veo que has aprendido un montón.

Entonces puedo deducir y corrígeme si me equivoco que:
1.Cuando el valor de una variable esta vacía muestra como texto su propio nombre.CORRECTO
2.Cuando el valor de una variable contiene un símbolo de porcentaje como el 90%, la liamos porque tasker entenderá que no es una cantidad sino que estamos hablando de una variable y no funcionara correctamente.INCORRECTO: Si pones esto en la comparación "%*" solo se cumplirá si pones "%90" si pones "90%" no coincide. El asterisco si lo pones delante (*%) significa sin importar lo que haya antes de lo que hay después del asterisco, si lo pones detrás, sin importar lo que pones después del asterisco. En la guia viene bastante bien explicado. Como siempre lo mejor es que hagas unas cuantas pruebas.
Por ejemplo Hola coincidirá con *ola con *la y con *a, pero no con 1hola ni bola.
Otra cosa:
3-cuando tu comparas %VOICE con %VOICE el error es pensar que estas comparando el valor que tenga %VOICE con la expresión literal "%VOICE". %VOICE SIEMPRE será igual a %VOICE. SIEMPRE.
4- Con la expresión "%*" te aseguras de que si esa variable ha cogido como valor otra variable que esta vacia al empezar por % lo detectará siempre como vacía.
En todo caso para tu caso emplea "%*" para detectar si %VOICE esta vacío.
En el la guia para principiantes las variables (lección 2) viene estupendamente explicada. Te aconsejo que la leas para esto y para muchas cosas ya que las variables son fundamentales.

ariandroid
14/10/13, 00:09:23
Bueno gracias por tu interés y por ayudarme.

Creo que crearé una nueva acción
A32: Establecer variable [ Nombre:%Mlesir A:%MAESTRO Calcular:Apagado Añadir:Apagado ] .

Ya centrándome un poco un mi problema.

En la acción 23 hay 3 posibilidades
1. Que capte "si" , por lo que %VOICE1~SI continuaría la tarea y al llegar a la accíon27 detendría la tarea por que conincide (que es lo que quiero que haga y además realiza correctamente).
2. Que capte "no"o "cualquier otra cosa", por lo que %VOICE1~NO/cualquiotracosa, continuaría la tarea , al llegar a la acción27 no detendría la tarea por que no coincidiría con si %VOICE~SI, continuando de este modo con las demás acciones (que es lo que quiero que haga y además realiza correctamente
3. Que no capte nada,aquí es donde tengo el problema.

Según pone en la información de captar voz cito "Si falla el reconocimiento o se excede el tiempo límite especificado, la variable %VOZ será limpiada(detecta esta condición con Establecer Variable)"

Pues bien si fuese así no tendria problema por que el valor de %VOICE1 debería coincidir con %VOICE puesto que esta vacía con lo que continuaría la tarea y al llegar a la acción27 no detendría la tarea por que no coincidiría con si %VOICE~SI, continuando de este modo con las demás acciones (que es lo que quiero que haga PERO NO HACE).

El caso que que en el log del registro de ejecución me sale un exitErr cuando no capta la voz y me detiene la tarea.


Creo que ese es mi problema que me detiene la tarea.

¿Cómo puedo hacer para que no me detenga la tarea? la acción en que se detiene no tiene la opción de continuar tras error ya que es la de captar voz.

mlesir
14/10/13, 01:37:50
Lo primero que tienes que hacer es ir al log y mirar ese error en donde exactamente te lo da. Para mi que te lo está dando en separar variable.
Tienes que tener en cuenta que la acción separar variable da error en caso de que la variable este vacía, y por otro lado en la acción separar variable no veo que hayas puesto que nigun separador? Y si no lo has puesto entonces como te lo va a separar?
Por último no se pq utilizas separar variable. Entiendo que dices si o no, entonces que hay que separar?
Puedes utilizar esto if %VOICE ~ *si*. Así coincidirá con "claro que si" etc.
Además yo le pondría una acción en A6 en vez de la de separar variable que creo q no sirve de nada, tal que así :
A6 Ir a acción 4 if %VOICE ~ %*
De esta manera si el reconocimiento no ha captado nada y %VOICE se queda vacía vuelve a preguntar.
Los if de zutano mengano etc se pueden sustituir por un solo:

If ZUTANO, MENGANO ETC ~ *%CNUM*
o escrito de otro modo:
IF 600102030,600405060,600607080 ~ *%CNUM*

Por último decirte que en AV es mas fácil puesto que tiene dos eventos, u o para comando no reconocido y otro para fallo en el reconocimiento.

Caravantes
14/10/13, 02:29:07
En la acción 23 hay 3 posibilidades 1. Que capte "si" [...] 2. Que capte "no"o "cualquier otra cosa" [...] 3. Que no capte nada,aquí es donde tengo el problema.

Con las pistas que ha dado %MAESTRO, yo trataría de resolverlo de la forma siguiente:

A22: Decir [ Texto:La llamada recibida es de PERENGANITO, ¿Quieres mejor que lo llame?
A23: Captar Voz
A24: Ir a acción 22 Si(If) %VOICE~%*

De este modo, si la variable %VOICE está vacía... la tarea volverá a preguntar y esperar una nueva respuesta de voz. Así nos aseguramos que en las acciones siguientes (la A25 y las posteriores) la variable %VOICE no puede estar vacía, ya sabemos que contiene algo, sea lo que sea.

ariandroid
14/10/13, 13:15:24
Siguiendo vuestros consejos he conseguido reducir la tarea a menos acciones.(GRAAACIAS,me es mucho mas comodo de ver):ok:

-He unido los 4 if como indicaba :dios: %MAESTRO :dios:, en uno solo, en la acción3 (era evidente, no se como no me di cuenta de esa absurda repetición).

-He eliminado la acción de separar %VOICE para usar %VOICE1, que como tú bien dices :dios:%MAESTRO:dios: puede que diera el error al no poder separar nada cuando %VOICE se queda vacía .( Yo lo separaba siguiendo la recomendación de tasker, que en la acción de captar voz dice: Se almacena una lista de resultados separados por comas dentro de la variable %VOICE. Es muy posible que haya varios resultados debdo a las deficiencias del reconocimiento de voz p.ej.ruido ambiental. Para conseguier el primer resultado, utiliza la acción Separar variable y entonces accede a %VOICE1).

-He añadido como indica Caravantes una acción tras la de captar voz (acción6 en este caso) para hacer que se repita la accion5 captar voz ,en caso de de que %VOICE no capte nada y quede vacia. (Eso no me interesa mucho ya que si voy en el coche con el telefono en la mochila y no capta bien la voz creo que se quedaría en bucle infinito ahí, pero por seguir las indicaciones lo he hecho, luego pondré en vez ir a acción4, ir a acción10 consiguiendo que si no capta nada realice las mismas acciones que si fuese un "NO" y realice las siguientes acciones, etc.:ok:

:palomitas:De momento ha quedado así :palomitas:

Contestar Perdida Fav (33)
A1: Vibrar [ Tiempo:200 ]
A2: Ir a acción [ Tipo:Número Acción Número:10 Etiqueta: ] Si (if) [ %BLUE !~ on ]
<Si la llamada es de Fulano, Mengano, Sutano o Perengano>
A3: Si (if) [ %CNUM ~ telefono1/telefono2/telefono3/telefono4 ]
A4: Decir [ Texto:La llamada recibida es de %CNAME, ¿Quieres mejor que le llame? Motor: Voz:com.ivona.tts:spa-ESP Stream:3 Tono:8 Velocidad:6 Continuar tarea inmediatamente:Apagado ]
<Captando Voz>
A5: Captar Voz [ Título:Captando Voz Modelo Lenguaje:Forma libre Resultados Máximos:1 Cuenta atrás (segundos):10 ]
A6: Ir a acción [ Tipo:Número Acción Número:4 Etiqueta: ] Si (if) [ %VOICE ~ %* ]
A7: Llamar [ Número:%CNUM Automarcado:Encendido ] Si (if) [ %VOICE ~ *si* ]
A8: Fin si (End if)
A9: Detener [ Con error:Apagado Tarea: ] Si (if) [ %VOICE ~ *si* ]
A10: Decir [ Texto:Entonces voy a contestar con un whats app la llamada de %CNAME Motor: Voz:com.ivona.tts:spa-ESP Stream:3 Tono:7 Velocidad:5 Continuar tarea inmediatamente:Apagado ]
A11: Establecer variable [ Nombre:%Data A:No puedo hablar ahora, estoy ocupado, dime lo que quieres en un whats app y cuando pueda te contesto o te llamo. Calcular:Apagado Añadir:Apagado ]
A12: Establecer variable [ Nombre:%Telefono A:%CNUM Calcular:Apagado Añadir:Apagado ]
A13: Establecer variable [ Nombre:%Key_id A:%TIMES Calcular:Apagado Añadir:Apagado ]
A14: Establecer variable [ Nombre:%Timestamp A:%TIMEMS Calcular:Apagado Añadir:Apagado ]
A15: Establecer variable [ Nombre:%Received_timestamp A:%TIMEMS Calcular:Apagado Añadir:Apagado ]
A16: Ejecutar consola [ Comando:sqlite3 /data/data/com.whatsapp/databases/msgstore.db "INSERT INTO messages (key_remote_jid, key_from_me, key_id,status, needs_push, data, timestamp, media_url, media_mime_type, media_wa_type, media_size, media_name, latitude, longitude, thumb_image, remote_resource, received_timestamp, send_timestamp, receipt_server_timestamp, receipt_device_timestamp, raw_data, media_hash, recipient_count, media_duration, origin) VALUES ('34%[email protected]',1,'%Key_id-1',0,0,'%Data',%Timestamp,'','','0',0,'',0.0,0.0,' ', '',%Received_timestamp,-1,-1,-1,0,'',0,0,0);" Cuenta atrás (segundos):0 Usar Root:Encendido Almacenar Salida En: Almacenar Errores En: Almacenar Resultado en: Continuar Tarea Tras Error:Encendido ]
A17: Matar aplicación [ Aplicación:WhatsApp Usar Root:Encendido ]
A18: Vibrar [ Tiempo:200 ]

El caso es que después de hacer todo eso, como se ve en el log de registro de ejecución que he puesto abajo, cuando no capta voz me da error y me detiene la tarea, lo que me lleva a mi PROBLEMA INICIAL y no me sirve ni que la acción 6 me remita a ningún sitio porque nunca se llega a ejecutar, se queda en la acción5.




20131014 12.30.43 T Running ID33 Contestar Perdida Fav
20131014 12.30.43 A OK ID33.1 Contestar Perdida Fav.Vibrar
20131014 12.30.43 A OK ID33.2 Contestar Perdida Fav.Ir a acción
20131014 12.30.43 A OK ID33.3 Contestar Perdida Fav.Si la llamada es de Fulano, Mengano, Sutano o Perengano
20131014 12.30.43 A OK ID33.4 Contestar Perdida Fav.Decir
20131014 12.30.48 A OK ID33.5 Contestar Perdida Fav.Captando Voz
20131014 12.30.55 T ExitErr ID33 Contestar Perdida Fav


¿No puedo hacer que me continue tras el error de alguna otra forma?

:cry::cry::cry::cry::cry::cry::cry:

mlesir
14/10/13, 15:48:21
Esta es la tarea que yo he creado para probarlo:

Captar Voz (927)
A1: Captar Voz [ Título: Modelo Lenguaje:Forma libre Resultados Máximos:5 Cuenta atrás (segundos):9 ]
A2: Ir a acción [ Tipo:Número Acción Número:1 Etiqueta: ] Si (if) [ %VOICE ~ %* ]

La ejecutó y una vez dejo pasar el tiempo sin decir nada, después digo cualquier cosa. Como ves en el log funciona perfectamente y a la segunda es cuando ya sale de la tarea pq ya la ha acabado:

20131014 15.22.33 T Running ID927 Captar Voz
20131014 15.22.33 A OK ID927.1 Captar Voz.Captar Voz
20131014 15.22.42 A OK ID927.2 Captar Voz.Ir a acción
20131014 15.22.42 A OK ID927.1 Captar Voz.Captar Voz
20131014 15.22.47 A OK ID927.2 Captar Voz.Ir a acción
20131014 15.22.47 T ExitOK ID927 Captar Voz

Si provoco un error de reconocimiento por ejemplo tosiendo, me da error pero espero que se agote el tiempo que le he dado al reconocimiento y se realiza la tarea.
Una cosa de la que me he dado cuenta en tu log es que a pesar de haberle puesto 10 segundos de espera al reconocimiento, entre este y la salida que te indica error solo pasan 7 segundos.
A mi el error solo me lo da si soy yo manualmente el que le da a cancelar.
Prueba con esta tarea y haz lo que yo he hecho porque es un poco raro que a ti te de error y a mi no. Otra cosa: yo no tengo el reconocimiento offline, lo tengo online, y tu? Que versión android tienes?

ariandroid
14/10/13, 16:21:32
Con la tarea exacta que tu has puesto me sale en el log.

20131014 16.14.09 T Running ID12 1borrar
20131014 16.14.09 A OK ID12.1 1borrar.Captando Voz
20131014 16.14.16 T ExitErr ID12 1borrar
Tengo la versión android 4.1.2 yo también tengo el reconocimiento offline

ariandroid
14/10/13, 16:49:07
He notado que el error que me detiene la tarea solo se produce, cuando el reconocimiento de voz capta silencio absoluto y pasa el tiempo de reconocimiento.

Sin embargo si el reconocimiento capta algo de ruido aunque no lo reconozca, si funciona la tarea de volver a la acción1 y no me detiene la tarea haya que entiende algo o yo la paro.

El log cuando capta ruido pero no reconoce lo que se dice es este:

20131014 16.38.02 T Running ID12 1borrar
20131014 16.38.02 A OK ID12.1 1borrar.Captando Voz
20131014 16.38.12 A OK ID12.2 1borrar.Ir a acción
20131014 16.38.12 A OK ID12.1 1borrar.Captando Voz
20131014 16.38.22 A OK ID12.2 1borrar.Ir a acción
20131014 16.38.22 A OK ID12.1 1borrar.Captando Voz
20131014 16.38.32 A OK ID12.2 1borrar.Ir a acción
20131014 16.38.32 A OK ID12.1 1borrar.Captando Voz
20131014 16.38.42 A OK ID12.2 1borrar.Ir a acción
20131014 16.38.42 A OK ID12.1 1borrar.Captando Voz
20131014 16.38.46 T ExitErr ID12 1borrar

Así que por afinar algo más el error es cuando el reconocimiento no detecta nada (estoy en silencio) no cuando no entiende.

Caravantes
15/10/13, 00:03:31
-He añadido como indica Caravantes una acción tras la de captar voz (acción6 en este caso) para hacer que se repita la accion5 captar voz ,en caso de de que %VOICE no capte nada y quede vacia. (Eso no me interesa mucho ya que si voy en el coche con el telefono en la mochila y no capta bien la voz creo que se quedaría en bucle infinito ahí, pero por seguir las indicaciones lo he hecho, luego pondré en vez ir a acción4, ir a acción10 consiguiendo que si no capta nada realice las mismas acciones que si fuese un "NO" y realice las siguientes acciones, etc.

Veamos otra propuesta:A5: Captar Voz
A6: Establecer variable %voz a %VOICE
A7: Establecer variable %voz a NO Si (if) [ %VOICE ~ %* ][/quote]
En las acciones siguientes podrás olvidarte de %VOICE y trabajar solo con la variable %voz, y con la certeza de que esa variable %voz nunca estará vacía: si %VOICE estaba vacía... %voz contendrá un NO; en cualquier otro caso, ambas variables contendrán la misma información. Espero que eso resuelva el problema.

mlesir
15/10/13, 00:57:25
Pues a mi eso no me lo hace, ni me da error cuando está en silencio y pasa el tiempo.
Te queda una opción. Meter la acción captar voz como una tarea independiente. En esa tarea solo tienes una acción captar voz. Esa tarea la invocas con la acción tasker/realizar tarea.
Así si la tarea hija "captar voz" se detiene por un error la tarea madre no se para si no que sigue con la acción de if voice esta vacía. Si está vacía entonces ir a (la acción realizar tarea "captar voz".
De todos modos ya es raro que te pase a ti y a mi no pero bueno.....
Tienes el reconocimiento offline o vía red? Y que versión android?

ariandroid
15/10/13, 17:21:57
Gracias he resuelto el problema como comentaba %Maestro.

Además he tenido que añadir un esperar durante el tiempo vque dura el reconocimiento porque sino no iniciaba éste, pero ya funciona correctamente.

He pillado lo que decías de convertir la acción captar voz en una tarea independiente, en este caso es como si fuera un continuar tras error de la acción captar voz porque se realizan de manera independiente y no ne paraliza la tarea primera

Lo de Caravates era muy buena idea pero no se ejecutaba nunca por el mismo problema al estar tras captar voz.

mlesir
16/10/13, 00:22:40
Ariandroid me alegro q lo solucionaras y más todavía que hayas pillado lo que te dije pq no era fácil ni evidente. Enhorabuena.
Si te acuerdas cambia el título a solucionado y quizá le pondría otro título más descriptivo, algo asi quizá :
"Acción captar voz en caso de error o que %VOICE quede vacía."
Como tu lo veas..