Mensajería
La plataforma ByXone te permite el envío de mensajes a los diferentes dispositivos de una manera fácil e intuitiva. A continuación te mostramos cómo proveer a nuestro proyecto de un gestor de Mensajería
Aquí vamos a ver un ejemplo de la colección para la mensajeria.
Primeramente mostramos la colección de avisos con la que recibiríamos un aviso con la recepción de algún mensaje.
<coll name="SMSAvisosSMSr" nostopreplica="true" title="AvisosSMSr" sql="SELECT ID FROM gen_SMS WHERE IDRECEPTOR=##USERID## AND LEIDO=0" objname="SMS" updateobj="SMS" progid="ASData.CASBasicDataObj" fontsize="8" editwidth="60" editheight="81" autorefresh="true" notify="true" otify_coll="SMSr" notify_counter="true" alternate-counter="true" notify_always="true" notify_title="Mensajes nuevos" notify-refresh="true"> <group name="General" id="1" /> <prop name="ID" title="ID" group="1" visible="0" fieldsize="1" size="1" type="N" /> </coll>
Ahora vamos a ver como sería la colección necesaria para poder enviar mensajes.
<coll name="SMS" notab="true" editmask="16" cell-bgcolor="#ffffff" title="SMS" nostopreplica="true" sql="SELECT a.*, a.ASUNTO AS MAP_ASUNTO,m1.NOMBRE AS MAP_DESTINATARIO_GRID, a.FECHA AS MAP_FECHA, a.HORA AS MAP_HORA,m1.NOMBRE AS MAP_DESTINATARIO FROM ##PREF##SMS a left outer join ##PREF##usuarios m on a.IDEMISOR=m.ID left outer join ##PREF##usuarios m1 on a.IDRECEPTOR=m1.ID" sort="FECHA DESC,HORA DESC" filter="a.IDEMISOR=##USERID## AND a.ENVIADO=1 and (a.BAJA_ENVIADO=0 or a.BAJA_ENVIADO is null)" objname="SMS" updateobj="SMS" progid="ASData.CASBasicDataObj" fontsize="8" autorefresh="true"> <group name="General" id="1" /> <prop name="MODIFICADO" group="1" size="10" fieldsize="10" type="N" visible="0" /> <prop name="IDEMISOR" group="1" size="10" fieldsize="10" type="N" visible="0" mapcol="Usuarios" mapfld="ID" /> <prop name="ENVIADO" group="1" size="10" fieldsize="10" type="N" visible="0" /> <prop name="BAJA_ENVIADO" group="1" size="10" fieldsize="10" type="N" visible="0" /> <prop name="LEIDO" group="1" size="10" fieldsize="10" type="N" visible="0" /> <prop name="IDRECEPTOR" group="1" size="10" fieldsize="10" type="N" visible="0" mapcol="Usuarios" mapfld="ID" /> <frame name="id1" framebox="false" width="100%" align="center" tmargin="2%" /> <frame name="id2" framebox="false" width="100%" align="left" bgcolor="#005222" /> <prop name="MAP_ETIQUETA" visible="1" frame="id2" group="1" type="TL" title="MENSAJE" class="etiquetatitulo" labelwidth="23" fontsize="23" line="2" fixed-lines="true" align="center" /> <prop name="MAP_SALIR" type="B" frame="id1" title="Salir" group="1" visible="1" onchange="Refresh" method="ExecuteNode(salir)" class="botonestandard" /> <prop name="MAP_ACEPTAR" type="B" frame="id1" title="Aceptar" group="1" visible="1" onchange="Refresh" method="ExecuteNode(aceptar)" class="botonestandard" lmargin="5%" newline="false" /> <prop name="MAP_DESTINATARIO" visible="1" disableedit="ENVIADO=1" tmargin="2%" autofocus="true" group="1" type="T" linkedto="IDRECEPTOR" linkedfield="NOMBRE" showinline="true" class="textoprograma" title="Destinatario:" /> <prop name="ASUNTO" visible="1" group="1" disableedit="ENVIADO=1" type="T" class="textoprogramaIzquierda" size="9" fixed-text="true" autoformat="false" title="Asunto:" /> <prop name="FECHA" visible="0" group="1" disableedit="ENVIADO=1" type="D" class="textoprograma" locked="true" title="Fecha:" /> <prop name="HORA" visible="0" group="1" disableedit="ENVIADO=1" type="T" class="textoprograma" locked="true" title="Hora:" /> <prop name="MAP_OBSERVACIONES" visible="1" group="1" type="N" class="textoprograma" locked="true" fieldsize="0" size="9" fixed-text="true" autoformat="false" title="Texto:" /> <prop name="MAP_ELIMINAR" visible="1" group="1" disablevisible="ENVIADO=0" type="NC" class="textoprograma" title="Eliminar" newline="false" rmagin="0%" /> <prop name="OBSERVACIONES" visible="1" group="1" disableedit="ENVIADO=1" type="T" class="textoprogramaIzquierda" lines="10" fixed-lines="true" width="100%" labelwidth="0" size="400" fixed-text="true" autoformat="false" title="Texto:" /> <!-- grid --> <prop name="MAP_DESTINATARIO_GRID" visible="2" tmargin="2%" autofocus="true" group="1" type="T" linkedto="IDRECEPTOR" linkedfield="NOMBRE" showinline="true" class="textoprogramaGrid2" title="Destinatario:" /> <prop name="MAP_ASUNTO" visible="2" group="1" type="T" class="textoprogramaGrid2" size="9" fixed-text="true" autoformat="false" title="Asunto:" /> <prop name="MAP_FECHA" visible="2" group="1" type="T" class="textoprogramaGrid2" locked="true" title="Fecha:" /> <prop name="MAP_HORA" visible="2" group="1" type="T" class="textoprogramaGrid2" locked="true" title="Hora:" /> <create> <action name="runscript"> <script language="VBScript"> this("FECHA") = formatearFecha(Now()) this("HORA") = formatearHora(Now()) </script> </action> </create> <onchange> <field name="MAP_ELIMINAR"> <action name="runscript"> <script language="VBScript"> if this("MAP_ELIMINAR") = 1 then this("BAJA_ENVIADO") = 1 this.Save else this("BAJA_ENVIADO") = 0 this.Save end if </script> </action> </field> </onchange> <aceptar> <action name="runscript"> <script language="VBScript"> EnviarSms </script> </action> </aceptar> <salir> <action name="runscript"> <script language="VBScript"> AppData.FailWithMessage -11888,"##EXIT##" </script> </action> </salir> </coll>
La siguiente colección es la necesaria para poder recibir.
<coll name="SMSr" notab="true" editmask="16" cell-bgcolor="#ffffff" title="SMSr" nostopreplica="true" sql="SELECT a.*, a.ASUNTO AS MAP_ASUNTO,m.NOMBRE AS MAP_DESTINATARIO_GRID, a.FECHA AS MAP_FECHA, a.HORA AS MAP_HORA,m.NOMBRE AS MAP_DESTINATARIO, CASE LEIDO WHEN 1 THEN '#FFFFFF' WHEN 0 THEN '#DCDCDC' END AS MAP_COLORVIEW FROM ##PREF##SMS a left outer join ##PREF##usuarios m on a.IDEMISOR=m.ID left outer join ##PREF##usuarios m1 on a.IDRECEPTOR=m1.ID" filter="a.IDRECEPTOR=##USERID## and (a.BAJA_RECIBIDO=0 or a.BAJA_RECIBIDO is null)" sort="LEIDO asc,FECHA DESC,HORA DESC" objname="SMS" updateobj="SMS" progid="ASData.CASBasicDataObj" fontsize="8" autorefresh="true"> <group name="General" id="1" /> <prop name="MODIFICADO" group="1" size="10" fieldsize="10" type="N" visible="0" /> <prop name="IDEMISOR" group="1" size="10" fieldsize="10" type="N" visible="0" mapcol="Usuarios" mapfld="ID" /> <prop name="ENVIADO" group="1" size="10" fieldsize="10" type="N" visible="0" /> <prop name="BAJA_RECIBIDO" group="1" size="10" fieldsize="10" type="N" visible="0" /> <prop name="LEIDO" group="1" size="10" fieldsize="10" type="N" visible="0" /> <prop name="IDRECEPTOR" group="1" size="10" fieldsize="10" type="N" visible="0" mapcol="Usuarios" mapfld="ID" /> <frame name="id1" framebox="false" width="100%" align="center" tmargin="2%" /> <frame name="id2" framebox="false" width="100%" align="left" bgcolor="#005222" /> <prop name="MAP_ETIQUETA" visible="1" frame="id2" group="1" type="TL" title="MENSAJE" class="etiquetatitulo" labelwidth="23" fontsize="23" line="2" fixed-lines="true" align="center" /> <prop name="MAP_SALIR" type="B" frame="id1" title="Salir" group="1" visible="1" onchange="Refresh" method="ExecuteNode(salir)" class="botonestandard" /> <prop name="MAP_DESTINATARIO" visible="1" locked="true" tmargin="2%" autofocus="true" group="1" type="T" linkedto="IDEMISOR" linkedfield="NOMBRE" showinline="true" class="textoprograma" title="De:" /> <prop name="ASUNTO" visible="1" group="1" locked="true" type="T" class="textoprogramaIzquierda" size="9" fixed-text="true" autoformat="false" title="Asunto:" /> <prop name="FECHA" visible="0" group="1" type="D" class="textoprograma" locked="true" title="Fecha:" /> <prop name="MAP_COLORVIEW" visible="0" group="1" colorview="true" type="T" class="textoprograma" locked="true" title="Fecha:" /> <prop name="HORA" visible="0" group="1" type="T" class="textoprograma" locked="true" title="Hora:" /> <prop name="MAP_OBSERVACIONES" visible="1" group="1" type="N" class="textoprograma" locked="true" fieldsize="0" size="9" fixed-text="true" autoformat="false" title="Texto:" /> <prop name="MAP_ELIMINAR" visible="1" group="1" type="NC" class="textoprograma" title="Eliminar" newline="false" rmagin="0%" /> <prop name="OBSERVACIONES" locked="true" visible="1" group="1" type="T" class="textoprogramaIzquierda" lines="10" fixed-lines="true" width="100%" labelwidth="0" size="400" fixed-text="true" autoformat="false" title="Texto:" /> <!-- grid --> <prop name="MAP_DESTINATARIO_GRID" visible="2" tmargin="2%" autofocus="true" group="1" type="T" linkedto="IDEMISOR" linkedfield="NOMBRE" showinline="true" class="textoprogramaGrid2" title="De:" /> <prop name="MAP_ASUNTO" visible="2" group="1" type="T" class="textoprogramaGrid2" size="9" fixed-text="true" autoformat="false" title="Asunto:" /> <prop name="MAP_FECHA" visible="2" group="1" type="T" class="textoprogramaGrid2" locked="true" title="Fecha:" /> <prop name="MAP_HORA" visible="2" group="1" type="T" class="textoprogramaGrid2" locked="true" title="Hora:" /> <salir> <action name="runscript"> <script language="VBScript"> this("LEIDO") = 1 this.Save if this("BAJA_RECIBIDO") = 1 then a=Appdata.userinterface.MsgBox ("El mensaje sera Eliminado,¿Esta seguros?","¡ATENCION!",4) if a=6 then AppData.FailWithMessage -11888,"##EXIT##" end if else AppData.FailWithMessage -11888,"##EXIT##" end if AppData.FailWithMessage -11888,"##EXIT##" </script> </action> </salir> <onchange> <field name="MAP_ELIMINAR"> <action name="runscript"> <script language="VBScript"> if this("MAP_ELIMINAR") = 1 then this("BAJA_RECIBIDO") = 1 this.Save else this("BAJA_RECIBIDO") = 0 this.Save end if </script> </action> </field> </onchange> </coll>