Reenvio de mensajes

22 views
Skip to first unread message

Jaime Sánchez Force

unread,
Sep 17, 2013, 5:13:00 PM9/17/13
to sbpo...@googlegroups.com
Estoy intentando hacer un reenvio del mensaje de un usuario, hacia mis seguidores, tal y como creo que se debería hacer. 

Dejo el código para que veáis

protected function onNewMessage(SBMessage $msg_)
{
$senderSBUser = $msg_->getSBMessageFromUserOrFalse();
if(!($sbmessageId = $msg_->getSBMessageIdOrFalse())){
error_log ("There was an error while getting the id");
}
if(!($followersSBCodes = $this->getFollowerSBCodesOrFalse())){
error_log ("There was an error while getting the sbcodes");
}else{
$this->replyOrFalse($sbmessageId);
if (!($this->forwardSBMessageOrFalse($sbmessageId, $followersSBCodes))){
$this->replyOrFalse("No se puede reenviar");
error_log ("Could not send message to group");
}
}
}

Como os podéis imaginar al tener que estar escribiendo aquí, es que es imposible reenviar ningún mensaje, siempre escupe lo de "no se puede reenviar"

Creo que lo he hecho todo correctamente. Llevo un par de horas con esto y soy incapaz de hacerlo funciona. Me podéis echar un cable?

Guillermo Barbero

unread,
Sep 18, 2013, 3:25:18 AM9/18/13
to sbpo...@googlegroups.com
¿Has puesto algo en la función onError(), igual salta algún mensaje por ahí...? Si no, modifica el CurlMngr para ver la urls que estás lanzando. Luego mira el log y copia esa url y pídela por consola (usando el comando wget o curl).

No te quiero spoilear lo que está pasando, prefiero que lo averigües primero tu. De todas formas, a nada que tengas muchos usuarios, puede que especificar todos esos destinatarios hace que construyas una url muy larga y te falle. Si usas la función sendTextMessageOrFalse puedes usar el destinatario genérico "EVERYONE" y lo que haces es mandar al servidor que envíe ese mensaje. Todavía no se ha modificado la SDK para incluirlo como constante, pero está implementado en los servidores.

Espero que te sirva de ayuda


--
Has recibido este mensaje porque estás suscrito al grupo "sbportal" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a sbportal+u...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.



--
 
Guillermo Barbero - Backend Team

Spotbros Technologies

  

Jaime Sánchez Force

unread,
Sep 18, 2013, 3:59:57 AM9/18/13
to sbpo...@googlegroups.com
onError no parece que salte nada en principio. Por ahora estoy probando en un servidor gratuito un poco limitado (Parece que no tengo permisos para escribir un fichero de Log, ni tengo una forma de configurar los permisos para esa carpeta... tendré que probar en local para que al menos pueda tener algo más de información) y cualquier cosa que necesito ver lo lanzo a través de un replyOrFalse

Tu solución podría ser válida, pero me temo que quiero ir un poco mas allá, no quiero mandar mensajes a las personas, quiero reenviar los mensajes (Que sean los mensajes de los usuarios originales los que les lleguen, vamos un reenvio de toda la vida, si es que se puede hacer a través de una sbapp claro...) originales tal cual, excluyendo al que lo envía. Por eso el textmessageorfalse no me valdría de mucho, además tengo que ir recorriendo todos los seguidores que tengo para hacer comprobaciones (Si, se que es altamente ineficiente, pero dado que no hay una llamada que me de una lista de los seguidores, que se encuentren a menos de una distancia que yo le indique es lo que me toca ->!SPOILER ALERT! de lo que quiero hacer jejeje) y entonces mas o menos podré reenviar el mensaje a cada uno de ellos (Cosa que ya he probado creando un array con un solo sbcode y pasándoselo al forward, y sigue igual) después de hacer las comprobaciones, por lo cual la url siempre va a ser muy corta, por ahora solo estaba probando a reenviar.

Así que sigo en el mismo sitio que estaba ayer, cuando tenga un rato probaré en local a ver si me deja escribir un fichero de log y ver lo de las urls de curl que me comentas

PD: Se me ha encendido una bombillita, pero dudo mucho que sea por eso ¿No habrá que cargar el sbmessage completo para poder reenviar el mensaje no? Porque el forward solo pide el id del mensaje nada mas...

Jaime Sánchez Force

unread,
Sep 18, 2013, 4:56:50 AM9/18/13
to sbpo...@googlegroups.com
Acabo de probar en un servidor local imprimiendo las url y lanzando esta url con wget https://sbmail.me/public-api/forwardSBMessage.php?appSBCode=BR359H1&appKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&messageId=a590c0b3409f14e2acecdd8f9368e257&toSBCodes=%5B%227FTBDW6%22%2C%22WHO5NXL%22%5D&msgUniqueIds=%5B%223fbf998943a746aa1a1512849498c34e%22%2C%2269ca35208a7f5098b76b6580217c91d4%22%5D

la respuesta que me da un wget es 

Resolviendo sbmail.me (sbmail.me)... 54.229.36.210
Conectando con sbmail.me (sbmail.me)[54.229.36.210]:80... conectado.
Petición HTTP enviada, esperando respuesta... 404 Not Found
2013-09-18 10:51:34 ERROR 404: Not Found.

(Por supuesto las xxxxxx es la clave de la sbapp)

Toma 404 que me suelta! Así que una de dos, o estáis tocando algo, o el sdk no anda muy actualizado (Tengo la ultima versión del git bajada de ayer por la noche)

He probado otras urls que me imprime y funcionan perfectamente.

Guillermo, hora de Spoilearme lo que esta pasando jejjeje

Guillermo Barbero

unread,
Sep 18, 2013, 6:03:38 AM9/18/13
to sbpo...@googlegroups.com
Efectivamente, el forward para la SDK falta por implementar en la API del servidor. De hecho, creo recordar que existía, pero se quitó, por las implicaciones que podía tener un mal uso de la SDK (envías un mensaje con la respuesta a como tratar la gonorrea y el usuario escribe un comentario "Gracias", y luego vas y haces un forward de ese mensaje cuando otro usuario te pregunta por lo mismo, le llegarían esos comentarios...)

Deberías componer el mensaje, añadiendo los mismos attachments y poniendo el texto que quieras ("El usuario %%% dice: ...").

Por otro lado, la ubicación de un usuario la tienes cuando éste envía un mensaje. Cuando obtienes su perfil sólo está la información básica... Así que si quieres tenerla en cuenta deberías guardarla en local y tirar de ahí para sacar a lista de destinatarios.

¡Ánimo, que tiene buena pinta lo que quieres hacer!

Jaime Sánchez Force

unread,
Sep 18, 2013, 6:24:01 AM9/18/13
to sbpo...@googlegroups.com
Ufff mira que me imaginaba que tendría ese obstáculo, si no puedo consultar la localización de uno de los seguidores en un determinado momento (sin que mande ningún mensaje), las cosas van a ser un poco liosas para la gente, porque tenerlo en local me cuesta un pedo, una base de datos con una tabla y 4 columnas me llega en local, el tema es actualizar esos datos locales, que hasta que no mande algo el usuario seguirá recibiendo cosas de su antigua posición... pero bueno, también acceder a la posición de un usuario cuando a mi me diera la gana seria invadir mucho la privacidad (Al menos si se hace por parte de alguien externo a SB)

Otra cosa, ¿La localización del usuario también se manda cuando se suscribe a la aplicación? Más que nada, para poder tener una inicialización de ese usuario.

Ya sabía yo que esto no iba a ser tan coser y cantar jejejjej

Guillermo Barbero

unread,
Sep 18, 2013, 6:52:19 AM9/18/13
to sbpo...@googlegroups.com
Podrías hacer que el usuario se apunte ciertas localizaciones con algún concepto que él quiera: casa, bar, etc... Mándale como respuesta un mapa con la posición con la que se ha registrado, porque si justo acaba de activar la localización, puede que el dato no sea correcto (a mi me pasa con mi android).

Luego ya le podrías decir: ha ocurrido algo en "casa"

En cuanto al perfil que se envía con la suscripción, sí, es el completo, con todos los datos que pide el manifiesto

Reply all
Reply to author
Forward
0 new messages