Attachments con sendTextMessageToGroupOrFalse()

34 views
Skip to first unread message

xoX

unread,
Nov 22, 2013, 5:38:55 AM11/22/13
to sbpo...@googlegroups.com
Podrias explicarme como crear un sbmail con sendTextMessageToGroupOrFalse? un ejemplo simple me valdria.. :(
Para que se envie a todos.. No lo entiendo, con texto normal me funciona pero al intentar hacer un sbmail.. algo hago mal.. T.T

/**
* Send a text message to a group of App followers. If attachments are set, then they will be automatically embedded
* into the message as a SBMail.
* @param string $msgText_        The text of the message to be sent
* @param string $toSBCode_        The SBCode of the App follower who will receive the message
* @return array|false with values (V1=date in ms,V2=message Id,V3=true if app received message, false if just server,V4=Msg unique Id)
*/
  public function sendTextMessageOrFalse($msgText_,$toSBCode_)
  {
    return $this->sendTextMessageToGroupOrFalse($msgText_, array($toSBCode_));
  }
He estado mirando la funcion pero pone que es automático? No entiendo nada.. Los adjuntos a quien pertenecen a la sbapp o al mensaje?

Guillermo Barbero

unread,
Nov 22, 2013, 6:04:43 AM11/22/13
to sbpo...@googlegroups.com
Con llamar a la función ya se crea el mensaje. Si tiene adjuntos, entonces es un sbmail. Para ver un ejemplo puedes consultar la carpeta de examples/SBAttachments


--
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

  

xoX

unread,
Nov 22, 2013, 6:12:08 AM11/22/13
to sbpo...@googlegroups.com
Pero la funcion de quien es? es que lo hago como el ejemplo que dijiste y algo me da error.. voy a borrar y ponerlo de cero porque sera alguna tonteria..  :/
es posible mostrar el numero de comentarios nuevos en un mensaje en la app?
  // destination users' sbcodes
                $sbcodeA = "TESTSB1";
                $sbcodeB = "TESTSB2";
                // set attachments for recipient A
                $this->_SBAttachments->addTitleOrFalse("This is a title");
                $this->_SBAttachments->addParagraphOrFalse("And this is a paragraph");
                // send message to recipient A
                if (!$this-> sendTextMessageOrFalse("Hello A!", $sbcodeA))
                {
                        error_log ("Could not send message to the user with sbcode: ".$sbcodeA);
                }
                $this->_SBAttachments->clearAttachments();
                // set attachments for recipient B
                $this->_SBAttachments->addTitleOrFalse("This is another title");
                $this->_SBAttachments->addParagraphOrFalse("And this is another paragraph");
                // send message
                if (!$this-> sendTextMessageOrFalse("Hello B!", $sbcodeB))
                {
                        error_log ("Could not send message to the user with sbcode: ".$sbcodeB);
                }

xoX

unread,
Nov 22, 2013, 7:50:27 AM11/22/13
to sbpo...@googlegroups.com
YAAAAA!!! POR FIN!!!!! NO SÉEEE QUEEE PASABA!! XDDD
Pero ya funciona lol.. creo que no cambie nada pero bueno.. :/
Una duda.. si quiero mandar varios SBMails con varias imagenes cada uno..
Hago varias veces: 
$cibelesImagePath = $this->_curlMngr->downloadFileOrFalse("http://upload.wikimedia.org/wikipedia/commons/0/03/Cibeles.jpg");
$this->_SBAttachments->addImageOrFalse($cibelesImagePath,10000,true);
$cibelesImagePath = $this->_curlMngr->downloadFileOrFalse("http://upload.wikimedia.org/wikipedia/commons/0/03/Cibeles.jpg");
$this->_SBAttachments->addImageOrFalse($cibelesImagePath,10000,true);

Asi, no? Para que sirve el tiempo ese? La sube a mi servidor y en ese tiempo la borra o como?

Guillermo Barbero

unread,
Nov 22, 2013, 8:08:06 AM11/22/13
to sbpo...@googlegroups.com
La subida a tu servidor se hace en la llamada downloadFileOrFalse, los campos timeout y unlink (opcionales) que se le pasan a las funciones de addImageOrFalse indica durante cuánto tiempo vas a esperar a que la conexión esté abierta para recibir la respuesta (el valor que tiene por defecto debería ser más que suficiente) y si ha de borrar la imagen de tu servidor una vez subido el attachment


--
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.

xoX

unread,
Nov 22, 2013, 9:11:12 AM11/22/13
to sbpo...@googlegroups.com
Muchas Gracias! ahora ya lo comprendi mas o menos.. menos el unlink que no lo comprendi muy bien.
se descargan en el servidor, se envian a la nube de la sbapp y luego a los 10 segundos se borran de mi servidor.
 mis dudas son sobre que hara con ellas la oculta nube de la sbapp.. ajajaj

La ultima pregunta en serio!!! :$
Si envio varios Sbmail(a todos los usuarios) en un bucle for, cada sbmail con diferente imagen, es necesario usar:
$this->_SBAttachments->clearAttachments();
Es decir, son varios sbmail de diferentes imagenes pero todos los usuarios reciben los mismos mensajes..
o automaticamente cuando se envia un sbmail, desaparecen los attachments para la siguiente ejecucion del bucle?


Guillermo Barbero

unread,
Nov 22, 2013, 9:21:11 AM11/22/13
to sbpo...@googlegroups.com
Sí, si los attachments cambian, tienes que llamar a clearAttachments. Ten en cuenta también que si saturas el servidor de envíos de mensajes, puede que se dropeen algunos como medida cautelar, así que tendrías que hacer throttling (esperar un tiempo) entre envíos.


--
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.

xoX

unread,
Nov 22, 2013, 9:34:45 AM11/22/13
to sbpo...@googlegroups.com
Y si quiero hacer varios attachments en un solo SBmail?
simplemente hago varios:
 $this->_SBAttachments->addImageOrFalse($imagePath1,10000,true);
 $this->_SBAttachments->addImageOrFalse($imagePath2,10000,true);
 $this->_SBAttachments->addImageOrFalse($imagePath3,10000,true);

no?

y luego para el siguiente sbmail haria:
 $this->_SBAttachments->clearAttachments();
y se borrarian las 3 imagenes anteriores y tendria que volver a añadirle las imagenes que yo quiera no?
Tengo dudas sobretodo con lo primero.. de si se añaden asi varias imagenes diferentes al mismo sbmail..

Nah.. no creo que sean muchas peticiones, es para enviar los tweets de vuestro twitter a la app.. Se actualiza cada 2 o 4 minutos, no recuerdo el tiempo exacto.
Asi que no creo que se sature enviando mensajes.. si publicais un tweet lo envia a todos los que estan suscritos.. si hubiera mil usuarios en la app quiza si, no se.. pero de momento con 8 que hay.. jajaj :$ Lo malo seria que en dos minutos publicaseis 10 o 20 tweets seguidos.. ahi quiza si podria pasar eso que dices supongo.. pero como es twitter oficial pues confio en vosotros, de todas formas esta "limitado" a traer 5 tweets como maximo cada dos minutos.. asi que si hubiera 100 usuarios, lo maximo que se podria enviar seria 100usuariosx5tweets=500 mensajes... Es mucho? Lo normal es que traiga un tweet cada varias horas asi que no veo peligro pero es la primera vez que uso apis y cosas de estas, asi que ni idea..

Guillermo Barbero

unread,
Nov 24, 2013, 6:27:42 PM11/24/13
to sbpo...@googlegroups.com
Enviar varios attachments en un mensaje se hace así, si
500 mensajes en un segundo sería mucho, tendrías que enviarlos poco a poco para que lleguen a todos


--
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.

xoX

unread,
Nov 25, 2013, 7:33:51 AM11/25/13
to sbpo...@googlegroups.com
500 seria algo muy extremo.. si hubiese 100 en la app serian 100 de golpe normalmente.. que tambien me parece mucho jajaj
Y como me aconsejas que haga eso? haciendo un usleep entre cada envio? o entre cada 10 envios por ejemplo?
Es que no se me ocurre otra forma.. :(  Y de cuanto tendria que ser la pausa aproximadamente..?
Por cierto uando envio mensajes desde el portal de spotbros a la app  me mete muchos   en el mensaje.. no entiendo muy bien si es que hay algun error al parsear el html o que..

Guillermo Barbero

unread,
Nov 25, 2013, 7:44:55 AM11/25/13
to sbpo...@googlegroups.com
Haciendo un sleep de 1 segundo por cada 10 mensajes debería irte perfecto

El tema de los   debe ser cosa del parser, sí. Diseñé ese formulario de forma que te puedas enviar un mensaje primero a ti, y luego ya le das a todo el mundo (o los destinatarios que quieras).

xoX

unread,
Nov 26, 2013, 7:39:23 AM11/26/13
to sbpo...@googlegroups.com
Vale, gracias, arreglado. ^^
En cualquier peticion que haga la app a todos los usuarios, deberia hacer sleep de 1s cada 10usuarios?
O solo si les envio mensajes?


El viernes, 22 de noviembre de 2013 11:38:55 UTC+1, xoX escribió:

Guillermo Barbero

unread,
Nov 26, 2013, 9:28:35 AM11/26/13
to sbpo...@googlegroups.com
No entiendo la pregunta,

Si haces un proceso batch que se recorra todos los usuarios y les envíe un mensaje, deberías evitar que se envíen todos esos mensajes de golpe: con 1s de sleep cada 10 usuarios debería ir bien

Si el tema es una respuesta a un mensaje enviado por un usuario, ahí no deberías tener que hacer nada (salvo que en vez de un mensaje le envíes como respuesta varios, en tal caso también estaría bien cuidarse en salud haciendo un sleep de 1s entre mensajes)


--
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.

xoX

unread,
Nov 26, 2013, 11:09:24 AM11/26/13
to sbpo...@googlegroups.com
Me referia si habria que hacer sleep si hiciera algo asi para obtener un dato de todos los usuarios:
class usuarioApp extends SBClientApi
{
public function pruebaObtenerDatoOrFalse()
{
$usuario = new SBUser($this->_appSBCode, $this->_appKey);
$usuario->loadUserBySBCodeOrFalse("XXXXXXX");

echo $usuario->getSBUserLastNameOrFalse(); // Me lo devuelve bien
echo "</br>".$usuario->getSBUserEmailOrFalse(); // Me lo devuelve en blanco, lo mismo con el telefono o la localizacion..
echo "</br>".$usuario->getSBUserRatingOrFalse(); //Me lo devuelve bien
}
}

$usuarioA=new usuarioApp($SBCode, $SBKey);
$usuarioA->pruebaObtenerDatoOrFalse();

Casi todos los datos los devuelve, pero los datos que hay que dar "permiso" como email, telefono o localizacion, no..
Por qué? hay algun error?


Guillermo Barbero

unread,
Nov 27, 2013, 2:58:56 AM11/27/13
to sbpo...@googlegroups.com
Esos datos sólo te vienen si en el manifiesto has puesto que te vengan, y sólo en los mensajes enviados por los usuarios. No puedes consultar en cada momento dónde están tus usuarios a pesar de haber puesto la localización como parte del manifiesto


--
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.

xoX

unread,
Dec 10, 2013, 3:31:55 PM12/10/13
to sbpo...@googlegroups.com
Pues vaya m :(
Y por que no se reciben los mensajes enteros de los usuarios? es decir si ellos envian un mensaje muy largo a la app, yo no lo recibo entero, lo enviais cortado.. :/
Reply all
Reply to author
Forward
0 new messages