API SMS2.0
De Open movilforum wiki
Tabla de contenidos |
[editar] Login
Es la primera petición que tenemos que realizar. Consiste en un Login por HTTP similar al de otros servicios de movistar utilizando nuestro nombre de usuario y nuestra clave (que podemos obtener enviando un mensaje corto al 770).
POST /tmelogin/tmelogin.jsp HTTP/1.1 Host: impw.movistar.es Accept-Encoding: identity Content-Length: 164 Content-type: application/x-www-form-urlencoded TM_ACTION=AUTHENTICATE&TM_PASSWORD=xxxxxx&SessionCookie=ColibriaIMPS_367918656&TM_LOGIN=6xxxxxxxx&ClientID=WV%3AInstantMessenger-1.0.2309.16485%40COLIBRIA.PC-CLIENT
Como respuesta a esta petición recibimos un fragmento de código XML en que tendremos que buscar un identificador de sesión (SessionID) que deberemos utilizar en todas las operaciones posteriores.
<?xml version="1.0" encoding="UTF-8"?> <WV-CSP-Message xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Outband</SessionType> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Response</TransactionMode> <TransactionID>1</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <Login-Response> <ClientID> <URL>WV:InstantMessenger-1.0.2309.16485@COLIBRIA.PC-CLIENT</URL> </ClientID> <Result> <Code>200</Code> <Description>Successfully completed</Description> </Result> <SessionID>2zrev0w230</SessionID> <KeepAliveTime>1620</KeepAliveTime> <CapabilityRequest>T</CapabilityRequest> </Login-Response> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Servicio SMS2.0
Todas las peticiones HTTP que se utilizan una vez realizado el login envían un fragmento de código XML. Cada petición será un POST a:
http://sms20.movistar.es/
El formato deberá ser el siguiente:
POST / HTTP/1.1 Host: sms20.movistar.es Accept-Encoding: identity Content-Length: 1471 Content-type: application/vnd.wv.csp.xml Expect: 100-continue
[editar] Conexión
Se realizan varias peticiones HTTP que sirven para:
[editar] Negociar capacidades
Indicar las capacidades del cliente que estamos utilizando. Para ello deberemos enviar el siguiente fragmento de código XML en el que insertaremos el identificador de sesión (SessionID) obtenido en el login. La aplicación deberá incrementar el identificador de transacción (TransactionID) con cada una que se envíe.
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>1</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <ClientCapability-Request> <ClientID> <URL>WV:InstantMessenger-1.0.2309.16485@COLIBRIA.PC-CLIENT</URL> </ClientID> <CapabilityList> <ClientType>COMPUTER</ClientType> <InitialDeliveryMethod>P</InitialDeliveryMethod> <AcceptedContentType>text/plain</AcceptedContentType> <AcceptedContentType>text/html</AcceptedContentType> <AcceptedContentType>image/png</AcceptedContentType> <AcceptedContentType>image/jpeg</AcceptedContentType> <AcceptedContentType>image/gif</AcceptedContentType> <AcceptedContentType>audio/x-wav</AcceptedContentType> <AcceptedContentType>image/jpg</AcceptedContentType> <AcceptedTransferEncoding>BASE64</AcceptedTransferEncoding> <AcceptedContentLength>256000</AcceptedContentLength> <MultiTrans>1</MultiTrans> <ParserSize>300000</ParserSize> <SupportedCIRMethod>STCP</SupportedCIRMethod> <ColibriaExtensions>T</ColibriaExtensions> </CapabilityList> </ClientCapability-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Solicitar acceso al servicio
Enviamos el siguiente fragmento XML:
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>2</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <Service-Request> <ClientID> <URL>WV:InstantMessenger-1.0.2309.16485@COLIBRIA.PC-CLIENT</URL> </ClientID> <Functions> <WVCSPFeat> <FundamentalFeat/> <PresenceFeat/> <IMFeat/> <GroupFeat/> </WVCSPFeat> </Functions> <AllFunctionsRequest>T</AllFunctionsRequest> </Service-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Actualizar nuestro estado
Indicamos que estamos conectados.
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>3</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <UpdatePresence-Request> <PresenceSubList xmlns="http://www.openmobilealliance.org/DTD/WV-PA1.2"> <OnlineStatus> <Qualifier>T</Qualifier> </OnlineStatus> <ClientInfo> <Qualifier>T</Qualifier> <ClientType>COMPUTER</ClientType> <ClientTypeDetail xmlns="http://imps.colibria.com/PA-ext-1.2">PC</ClientTypeDetail> <ClientProducer>Colibria As</ClientProducer> <Model>TELEFONICA Messenger</Model> <ClientVersion>1.0.2309.16485</ClientVersion> </ClientInfo> <CommCap> <Qualifier>T</Qualifier> <CommC> <Cap>IM</Cap> <Status>OPEN</Status> </CommC> </CommCap> <UserAvailability> <Qualifier>T</Qualifier> <PresenceValue>AVAILABLE</PresenceValue> </UserAvailability> </PresenceSubList> </UpdatePresence-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Obtener nuestra lista de contactos
Sólo será necesario enviar el identificador de sesión (SessionID)
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>4</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <GetList-Request/> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
Si la petición es correcta el servidor debe responder indicando las distintas listas de contactos que tenemos disponibles:
<WV-CSP-Message xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Response</TransactionMode> <TransactionID>4</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <GetList-Response> <ContactList>wv:6xxxxxxxx/~pep1.0_blocklist@movistar.es</ContactList> <ContactList>wv:6xxxxxxxx/~pep1.0_subscriptions@movistar.es</ContactList> <DefaultContactList>wv:6xxxxxxxx/~pep1.0_privatelist@movistar.es</DefaultContactList> </GetList-Response> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Obtener nuestro alias
Debemos solicitar nuestro propio estado de presencia. Además del identificador de sesión deberemos indicar el identificador de usuario (UserID).
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>5</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <GetPresence-Request> <User> <UserID>wv:6xxxxxxxx@movistar.es</UserID> </User> </GetPresence-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
Si la conexión se ha realizado con éxito el servidor devolverá el siguiente fragmento XML donde encontraremos nuestro alias:
<WV-CSP-Message xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2">
<Session>
<SessionDescriptor>
<SessionType>Inband</SessionType>
<SessionID>2zrev0w230</SessionID>
</SessionDescriptor>
<Transaction>
<TransactionDescriptor>
<TransactionMode>Response</TransactionMode>
<TransactionID>5</TransactionID>
</TransactionDescriptor>
<TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2">
<GetPresence-Response>
<Result>
200
<Description>Successfully completed</Description>
</Result>
<Presence>
<UserID>wv:6xxxxxxxx@movistar.es</UserID>
<PresenceSubList xmlns="http://www.openmobilealliance.org/DTD/WV-PA1.2">
<OnlineStatus>
<Qualifier>T</Qualifier>
<PresenceValue>T</PresenceValue>
</OnlineStatus>
<Registration>
<Qualifier>F</Qualifier>
</Registration>
<ClientInfo>
<Qualifier>T</Qualifier>
<ClientType>COMPUTER</ClientType>
<ClientTypeDetail xmlns="http://imps.colibria.com/PA-ext-1.2">PC</ClientTypeDetail>
<ClientProducer>Colibria As</ClientProducer>
<Model>TELEFONICA Messenger</Model>
<ClientVersion>1.0.2309.16485</ClientVersion>
</ClientInfo>
<TimeZone>
<Qualifier>F</Qualifier>
</TimeZone>
<GeoLocation>
<Qualifier>F</Qualifier>
</GeoLocation>
<Address>
<Qualifier>F</Qualifier>
</Address>
<FreeTextLocation>
<Qualifier>F</Qualifier>
</FreeTextLocation>
<PLMN>
<Qualifier>F</Qualifier>
</PLMN>
<CommCap>
<Qualifier>T</Qualifier>
<CommC>
<Cap>IM</Cap>
<Status>Open</Status>
</CommC>
</CommCap>
<UserAvailability>
<Qualifier>T</Qualifier>
<PresenceValue>AVAILABLE</PresenceValue>
</UserAvailability>
<PreferredContacts>
<Qualifier>F</Qualifier>
</PreferredContacts>
<PreferredLanguage>
<Qualifier>F</Qualifier>
</PreferredLanguage>
<StatusText>
<Qualifier>F</Qualifier>
</StatusText>
<StatusMood>
<Qualifier>F</Qualifier>
</StatusMood>
<Alias>
<Qualifier>T</Qualifier>
<PresenceValue>Sony</PresenceValue>
</Alias>
<StatusContent>
<Qualifier>F</Qualifier>
</StatusContent>
<ContactInfo>
<Qualifier>F</Qualifier>
</ContactInfo>
</PresenceSubList>
</Presence>
</GetPresence-Response>
</TransactionContent>
</Transaction>
</Session>
</WV-CSP-Message>
[editar] Recuperar lista privada de contactos
Debemos indicar la lista que deseamos recuperar (wv:6xxxxxxxx/~pep1.0_privatelist@movistar.es)
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>6</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <ListManage-Request> <ContactList>wv:6xxxxxxxx/~pep1.0_privatelist@movistar.es</ContactList> <ReceiveList>T</ReceiveList> </ListManage-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
El servidor nos responderá con el siguiente fragmento XML que deberemos parsear para buscar nuestros contactos
<WV-CSP-Message xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2">
<Session>
<SessionDescriptor>
<SessionType>Inband</SessionType>
<SessionID>2zrev0w230</SessionID>
</SessionDescriptor>
<Transaction>
<TransactionDescriptor>
<TransactionMode>Response</TransactionMode>
<TransactionID>6</TransactionID>
</TransactionDescriptor>
<TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2">
<ListManage-Response>
<Result>
200
<Description>Successfully completed</Description>
</Result>
<NickList>
<NickName>
<Name>Luis</Name>
<UserID>wv:6yyyyyyyy@movistar.es</UserID>
</NickName>
<NickName>
<Name>Carlos</Name>
<UserID>wv:6zzzzzzzz@movistar.es</UserID>
</NickName>
</NickList>
<ContactListProperties>
<Property>
<Name>DisplayName</Name>
<Value>MyFriends</Value>
</Property>
<Property>
<Name>Default</Name>
<Value>T</Value>
</Property>
</ContactListProperties>
</ListManage-Response>
</TransactionContent>
</Transaction>
</Session>
</WV-CSP-Message>
[editar] Crear lista de suscripciones
Para crear la lista de suscripciones (por si acaso no existe) debemos enviar el siguiente fragmento de código XML
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>7</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <CreateList-Request> <ContactList>wv:6xxxxxxxx/~PEP1.0_subscriptions@movistar.es</ContactList> <NickList> <NickName> <Name>Luis</Name> <UserID>wv:6yyyyyyyy@movistar.es</UserID> </NickName> <NickName> <Name>Carlos</Name> <UserID>wv:6zzzzzzzz@movistar.es</UserID> </NickName> </NickList> </CreateList-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Obtener presencia de contactos
Debemos enviar el siguiente código XML indicando la lista asociada a nuestro identificador de usuario (UserID)
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>8</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <SubscribePresence-Request> <ContactList>wv:6xxxxxxxx/~PEP1.0_subscriptions@movistar.es</ContactList> <PresenceSubList xmlns="http://www.openmobilealliance.org/DTD/WV-PA1.2"> <OnlineStatus/> <ClientInfo/> <FreeTextLocation/> <CommCap/> <UserAvailability/> <StatusText/> <StatusMood/> <Alias/> <StatusContent/> <ContactInfo/> </PresenceSubList> <AutoSubscribe>T</AutoSubscribe> </SubscribePresence-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
Si la operación se ha realizado con éxito el servidor responderá con una primitiva Status y, posteriormente, nos informará de forma asíncrona del estado de presencia de nuestros contactos.
[editar] Enviar alias
Esta transacción sólo se debe realizar cuando se accede al servicio por primera vez o si deseamos cambiar el nick que se muestra a nuestros contactos.
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>8</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <UpdatePresence-Request> <PresenceSubList xmlns="http://www.openmobilealliance.org/DTD/WV-PA1.2"> <Alias> <Qualifier>T</Qualifier> <PresenceValue>miAlias</PresenceValue> </Alias> </PresenceSubList> </UpdatePresence-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Añadir contacto
Se realiza una serie de peticiones HTTP que sirven para:
[editar] Buscar identificador de usuario
Deberemos indicar el número de teléfono del contacto que deseamos agregar.
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>15</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <Search-Request> <SearchPairList> <SearchElement>USER_MOBILE_NUMBER</SearchElement> <SearchString>6yyyyyyyy</SearchString> </SearchPairList> <SearchLimit>50</SearchLimit> </Search-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
Si la búsqueda ha tenido éxito el servicio devolverá el identificador del nuevo contacto.
<WV-CSP-Message xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Response</TransactionMode> <TransactionID>15</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <Search-Response> <SearchID>1194943259</SearchID> <SearchFindings>1</SearchFindings> <CompletionFlag>T</CompletionFlag> <SearchIndex>1</SearchIndex> <SearchResult> <UserList> <User> <UserID>wv:6yyyyyyyy@movistar.es</UserID> </User> </UserList> </SearchResult> </Search-Response> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
En caso de que la búsqueda haya fracasado el valor de <Completionflag> será F
[editar] Solicitar el estado de presencia del nuevo contacto
Debe realizarse esta petición porque, si no se hace, habría que esperar a que su estado cambie y el servicio nos avise. El formato de la petición debe ser el que se muestra a continuación, indicando el identificador de usuario del contacto
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>16</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <GetPresence-Request> <User> <UserID>wv:6yyyyyyyy@movistar.es</UserID> </User> <PresenceSubList xmlns="http://www.openmobilealliance.org/DTD/WV-PA1.2"> <OnlineStatus/> <ClientInfo/> <GeoLocation/> <FreeTextLocation/> <CommCap/> <UserAvailability/> <StatusText/> <StatusMood/> <Alias/> <StatusContent/> <ContactInfo/> </PresenceSubList> </GetPresence-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
El servidor nos responderá con el siguiente código XML
<WV-CSP-Message xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Response</TransactionMode> <TransactionID>16</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <GetPresence-Response> <Result> <Code>200</Code> <Description>Successfully completed</Description> </Result> <Presence> <UserID>wv:6yyyyyyyy@movistar.es</UserID> <PresenceSubList xmlns="http://www.openmobilealliance.org/DTD/WV-PA1.2"> <OnlineStatus> <Qualifier>T</Qualifier> <PresenceValue>T</PresenceValue> </OnlineStatus> <ClientInfo> <Qualifier>T</Qualifier> <ClientType>COMPUTER</ClientType> <ClientTypeDetail xmlns="http://imps.colibria.com/PA-ext-1.2">PC</ClientTypeDetail> <ClientProducer>Colibria As</ClientProducer> <Model>TELEFONICA Messenger</Model> <ClientVersion>1.0.2309.16485</ClientVersion> </ClientInfo> <CommCap> <Qualifier>T</Qualifier> <CommC> <Cap>IM</Cap> <Status>Open</Status> </CommC> </CommCap> <UserAvailability> <Qualifier>T</Qualifier> <PresenceValue>AVAILABLE</PresenceValue> </UserAvailability> <StatusText> <Qualifier>F</Qualifier> </StatusText> <StatusMood> <Qualifier>F</Qualifier> </StatusMood> <Alias> <Qualifier>T</Qualifier> <PresenceValue>suAlias</PresenceValue> </Alias> <StatusContent> <Qualifier>F</Qualifier> </StatusContent> <ContactInfo> <Qualifier>F</Qualifier> </ContactInfo> </PresenceSubList> </Presence> </GetPresence-Response> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Añadir contacto a lista de suscripciones
Deberemos enviar la siguiente petición, indicando el identificador de usuario del nuevo contacto
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>17</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <ListManage-Request> <ContactList>wv:6xxxxxxxx/~PEP1.0_subscriptions@movistar.es</ContactList> <AddNickList> <NickName> <Name>Luis</Name> <UserID>wv:6yyyyyyyy@movistar.es</UserID> </NickName> </AddNickList> <ReceiveList>T</ReceiveList> </ListManage-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Añadir contacto a lista privada
Deberemos enviar la siguiente petición, indicando el identificador de usuario del nuevo contacto
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>17</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <ListManage-Request> <ContactList>wv:6xxxxxxxx/~PEP1.0_privatelist@movistar.es</ContactList> <AddNickList> <NickName> <Name>Luis</Name> <UserID>wv:6yyyyyyyy@movistar.es</UserID> </NickName> </AddNickList> <ReceiveList>T</ReceiveList> </ListManage-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Borrar contacto
Se realizan varias peticiones HTTP que realizan las siguientes acciones:
[editar] Eliminar contacto de lista de suscripciones
Debemos enviar el siguiente código, indicando en este caso, no el identificador de usuario sino sólo el número de teléfono del contacto.
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>20</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <ListManage-Request> <ContactList>wv:6xxxxxxxx/~PEP1.0_subscriptions@movistar.es</ContactList> <RemoveNickList> <UserID>6yyyyyyyy</UserID> </RemoveNickList> <ReceiveList>T</ReceiveList> </ListManage-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Eliminar contacto de lista privada
Debemos enviar el siguiente código, indicando en este caso, no el identificador de usuario sino sólo el número de teléfono del contacto.
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>20</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <ListManage-Request> <ContactList>wv:6xxxxxxxx/~PEP1.0_privatelist@movistar.es</ContactList> <RemoveNickList> <UserID>6yyyyyyyy</UserID> </RemoveNickList> <ReceiveList>T</ReceiveList> </ListManage-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Eliminar contacto de solicitud de estado
Para excluir el contacto de la lista para la que solicitamos el estado de presencia deberemos enviar la siguiente petición, indicando el número de teléfono del contacto
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>22</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <UnsubscribePresence-Request> <User> <UserID>6yyyyyyyy</UserID> </User> </UnsubscribePresence-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Eliminar lista de atributos
Para eliminar la lista de atributos del contacto deberemos enviar la petición que se muestra a continuación
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>23</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <DeleteAttributeList-Request> <UserID>6yyyyyyyy</UserID> <DefaultList>F</DefaultList> </DeleteAttributeList-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Cancelar autorización
Para cancelar la autorización del contacto para conocer nuestro estado deberemos enviar la siguiente petición
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>24</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <CancelAuth-Request> <UserID>6yyyyyyyy</UserID> </CancelAuth-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Enviar mensaje
Se realiza en una sola petición HTTP en la que se debe indicar el identificador de usuario del destinatario, el remitente y el texto del mensaje que queramos enviar.
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>19</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <SendMessage-Request> <DeliveryReport>F</DeliveryReport> <MessageInfo> <ContentType>text/html</ContentType> <ContentSize>148</ContentSize> <Recipient> <User> <UserID>wv:6yyyyyyyy@movistar.es</UserID> </User> </Recipient> <Sender> <User> <UserID>6xxxxxxxx@movistar.es</UserID> </User> </Sender> </MessageInfo> <ContentData><span style="color:#000000;font-family:"Microsoft Sans Serif";font-style:normal;font-weight:normal;font-size:12px;"> texto del mensaje</span></ContentData> </SendMessage-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
Si el mensaje se envía correctamente el servidor responderá con el siguiente código
<WV-CSP-Message xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Response</TransactionMode> <TransactionID>19</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <SendMessage-Response> <Result> <Code>200</Code> <Description>Successfully completed</Description> </Result> <MessageID>8a7da0ba15f075790000000000018466</MessageID> </SendMessage-Response> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Desconectar
Se realiza en una sola petición HTTP
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>25</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <Logout-Request/> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
La respuesta a esta petición es una primitiva Status
[editar] Polling (sondeo)
Se realiza una sola petición HTTP
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID/> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <Polling-Request/> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
Esta petición debe realizarse continuamente mediante sondeo. Es en la respuesta a esta petición donde el servicio nos notificará de forma asíncrona de los siguientes eventos:
[editar] Mensaje recibido
Si recibimos un nuevo mensaje de uno de nuestros contactos la respuesta a un sondeo será la siguiente
<WV-CSP-Message xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>COLIBRIAWV#133765</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <NewMessage> <MessageInfo> <MessageID>8a7da0ba15f075790000000000018465</MessageID> <ContentType>text/html</ContentType> <ContentSize>129</ContentSize> <Recipient> <User> <UserID>wv:6xxxxxxxx@movistar.es</UserID> </User> </Recipient> <Sender> <User> <UserID>wv:6yyyyyyyy@movistar.es</UserID> <ClientID> <URL>WV:InstantMessenger-1.0.2309.16485@COLIBRIA.PC-CLIENT</URL> </ClientID> </User> </Sender> <DateTime>20071113T094116</DateTime> </MessageInfo> <ContentData><span style="color:#000000;font-family:'Microsoft Sans Serif';font-style:normal;font-weight:normal;font-size:12px;"> texto del mensaje</span></ContentData> </NewMessage> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
En esta respuesta vendrá indicado el remitente del mensaje además del texto del mismo.
[editar] Presencia de contactos
Se recibirá la lista completa de nuestros contactos con el estado de cada uno.
<WV-CSP-Message xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>COLIBRIAWV#133761</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <PresenceNotification-Request> <Presence> <UserID>wv:6yyyyyyyy@movistar.es</UserID> <PresenceSubList xmlns="http://www.openmobilealliance.org/DTD/WV-PA1.2"> <OnlineStatus> <Qualifier>T</Qualifier> <PresenceValue>T</PresenceValue> </OnlineStatus> <ClientInfo> <Qualifier>T</Qualifier> <ClientType>COMPUTER</ClientType> <ClientTypeDetail xmlns="http://imps.colibria.com/PA-ext-1.2">PC</ClientTypeDetail> <ClientProducer>Colibria As</ClientProducer> <Model>TELEFONICA Messenger</Model> <ClientVersion>1.0.2309.16485</ClientVersion> </ClientInfo> <CommCap> <Qualifier>T</Qualifier> <CommC> <Cap>IM</Cap> <Status>Open</Status> </CommC> </CommCap> <UserAvailability> <Qualifier>T</Qualifier> <PresenceValue>AVAILABLE</PresenceValue> </UserAvailability> <StatusText> <Qualifier>F</Qualifier> </StatusText> <StatusMood> <Qualifier>F</Qualifier> </StatusMood> <Alias> <Qualifier>T</Qualifier> <PresenceValue>Carlos</PresenceValue> </Alias> <StatusContent> <Qualifier>F</Qualifier> </StatusContent> <ContactInfo> <Qualifier>F</Qualifier> </ContactInfo> </PresenceSubList> </Presence> </PresenceNotification-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Solicitud de nuevo contacto
Solicitud de un nuevo contacto para conocer nuestro estado. Esta transacción se inicia desde el lado del servicio, por lo que tiene su propio identificador (TransactionID), que debemos utilizar en nuestra respuesta.
<WV-CSP-Message xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>COLIBRIAWV#134111</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <PresenceAuth-Request> <UserID>wv:6yyyyyyyy@movistar.es</UserID> <PresenceSubList xmlns="http://www.openmobilealliance.org/DTD/WV-PA1.2"> <OnlineStatus/> <ClientInfo/> <FreeTextLocation/> <CommCap/> <UserAvailability/> <StatusText/> <StatusMood/> <StatusContent/> </PresenceSubList> </PresenceAuth-Request> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
La respuesta a esta solicitud debe ser una primitiva <Status>. Posteriormente podremos autorizar al contacto a conocer nuestro estado.
[editar] Autorización a un contacto nuevo
Es la respuesta a una solicitud de un usuario de conocer nuestro estado. Deben realizarse las siguientes acciones:
<WV-CSP-Message xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Request</TransactionMode> <TransactionID>36</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <PresenceAuth-User> <UserID>wv:6yyyyyyyy@movistar.es</UserID> <Acceptance>T</Acceptance> </PresenceAuth-User> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
[editar] Primitiva <Status>
Siempre que no se indique lo contrario, la respuesta a cualquier petición será una primitiva <Status> con el siguiente formato
<WV-CSP-Message xmlns="http://www.openmobilealliance.org/DTD/WV-CSP1.2"> <Session> <SessionDescriptor> <SessionType>Inband</SessionType> <SessionID>2zrev0w230</SessionID> </SessionDescriptor> <Transaction> <TransactionDescriptor> <TransactionMode>Response</TransactionMode> <TransactionID>36</TransactionID> </TransactionDescriptor> <TransactionContent xmlns="http://www.openmobilealliance.org/DTD/WV-TRC1.2"> <Status> <Result> <Code>200</Code> <Description>Successfully completed</Description> </Result> </Status> </TransactionContent> </Transaction> </Session> </WV-CSP-Message>
Si la transacción ha tenido éxito el valor de será 200. El resto de los casos pueden resumirse en:
- 4xx -> Errores producidos en el cliente.
- 5xx -> Errores producidos en el servidor.
