El tutorial del servicio web de Simply CRM

Simply proporciona una interfaz de programación de aplicaciones (API) simple, potente y segura para trabajar con las entidades almacenadas en su interior. Para usar este documento, debe tener una familiaridad básica con el desarrollo de software, los servicios web y Simply CRM .

El servicio web proporciona una manera más fácil de integrar Simply con sus otros sistemas de software.

Las características de la llamada a la API

REST: la API se basa en REST, lo que significa que toda la comunicación entre el cliente y el servidor puede realizarse a través de HTTP en forma de solicitudes GET o POST.

JSON: JSON se utiliza para codificar la respuesta y la solicitud.

Solicitudes y respuestas: su aplicación de cliente prepara y envía una solicitud de servicio a la API. La API procesa la solicitud y devuelve una respuesta, y luego la aplicación cliente maneja la respuesta.

Confirmado automáticamente: cada operación que escribe en un objeto Simply se confirma automáticamente. Esto es análogo a la configuración AUTOCOMMIT en SQL.

La respuesta de la API

Objeto de respuesta

Todas las respuestas tendrán uno de los siguientes dos formatos.

Si la solicitud se procesa con éxito:

 <código>Respuesta{
exito:Booleano=verdadero
result:Object //El objeto de resultado de la operación
}
</código>

Si se produce un error al procesar la solicitud:

 <código>Respuesta{
exito:Booleano=falso
error: Objeto de error
}
</código>

Objeto de error

 <código>ObjetoError{
errorCode:String //Representación de cadena del tipo de error
errorMessage:String //Mensaje de error de la API.
}
</código>

errorCode es una representación de cadena del tipo de error.

Manejo de errores

La respuesta para cualquier solicitud de servicio web es un objeto JSON. El objeto tiene un campo éxito que tendrá el valor verdadero si la operación fue exitosa y falso en caso contrario. Si el éxito es falso, el objeto de respuesta contendrá un error de campo que contendrá el objeto JSON. El objeto de error contendrá dos campos errorType, una descripción de una sola palabra del error y errorMsg, una cadena que contiene una descripción del error.

El código de ejemplo está escrito en PHP y tiene dos dependencias, la biblioteca Laminas y Http_Request2.

Los requisitos para ejecutar los ejemplos dados en el tutorial.

  1. Una instalación de Simply con el servicio web;
  2. Php para ejecutar el código de ejemplo;
  3. HTTP_Request2 que se puede instalar haciendo una pear install HTTP_Request2 ;
  4. Laminas, para lo cual necesitarás descargar el framework Laminas .

Iniciando sesión

La API no utiliza la contraseña para los inicios de sesión. En su lugar, Simply proporciona una clave de acceso única para cada usuario. Para obtener la clave de usuario, vaya al panel Mis preferencias de un usuario específico. Allí encontrará el campo Clave de acceso.

Importante : es necesario ingresar la IP en el campo IP de la lista blanca en Mis preferencias en el perfil del usuario en Simply CRM que se utiliza para acceder a la API.

Cada inicio de sesión inicia una sesión de cliente con el servidor, autentica al usuario y devuelve un ID de sesión que se utilizará para todas las comunicaciones posteriores con el servidor.

Iniciar sesión es un proceso de dos pasos. En el primer paso, el cliente obtiene el token de desafío del servidor, que se utiliza junto con la clave de acceso del usuario para iniciar sesión.

Obtener desafío

Obtenga un token de desafío del servidor. Debe ser una solicitud GET.

formato de URL

 <código>Tipo de solicitud: GET

http://Simply_url/webservice.php?operation=getchallenge

&nombre de usuario=[nombre de usuario]
</código>

Ejemplo de GetChallenge

Para obtener el token de desafío, debe ejecutar el siguiente código.

 <?php
require_once 'HTTP/Solicitud2.php';
$endpointUrl = 'https://tr.simply-crm.dk/webservice.php';
//nombre de usuario del usuario que va a iniciar sesión.
$nombreDeUsuario="API";

tratar {
$solicitud = new HTTP_Request2($endpointUrl . "?operation=getchallenge&username=" . $userName, HTTP_Request2::METHOD_GET);
$respuesta = $solicitud->enviar();
if (200 == $respuesta->getStatus()) {
$jsonResponse = json_decode($respuesta->getBody(),true);
$challengeToken = $jsonResponse['resultado']['token'];
echo $token de desafío;
} demás {
echo 'Estado HTTP inesperado: ' . $respuesta->getStatus() . ' ' .
$respuesta->getReasonPhrase();
}

}capturar (HTTP_Request2_Exception $e) {
echo 'Error: '. $e->getMessage();
}

?>

Obtener resultado del desafío

Un objeto que representa el resultado de la respuesta de una operación getchallenge.

 <código>Obtenerresultado del desafío{
token:String //Token de desafío del servidor.
serverTime:TimeStamp //La hora actual del servidor.
expireTime:TimeStamp //La hora en que caduca el token.
}
</código>

Ahora que tiene el token de desafío, puede continuar con el inicio de sesión. El campo de clave de acceso en la operación de inicio de sesión es la suma de verificación md5 de la concatenación del token de desafío y la clave de acceso del usuario. La operación de inicio de sesión, a diferencia de getchallenge, es una solicitud posterior.

Acceso

Inicie sesión en el servidor utilizando el token de desafío obtenido en la operación getchallenge.

formato de URL

 <código>Tipo de solicitud: POST
http://Simply_url/webservice.php?operation=login

&nombre de usuario=[nombre de usuario]
&accessKey=[clave de acceso]
</código>

Para accessKey, cree una cadena md5 después de concatenar la clave de acceso del usuario de la página Mi preferencia y el token de desafío obtenido del resultado de getchallenge.

Ejemplo de inicio de sesión

El ID de sesión se utiliza para identificar la sesión actual y será un parámetro común en todas las solicitudes posteriores.

Resultado de inicio de sesión

Un objeto que representa el resultado de la respuesta de una operación de inicio de sesión.

 <code>Resultado de inicio de sesión{
sessionId:String //Identificador único para la sesión
userId:String //La identificación de Simply para el usuario que inició sesión
version:String //La versión de la API de servicios web
SimplyVersion:String //La versión de Simply crm.
}
</código>

Consiguiendo información

La API proporciona dos operaciones para obtener información sobre los objetos Simply disponibles.

El primero es listtypes, que proporciona una lista de módulos disponibles. Esta lista solo contiene módulos a los que tiene acceso el usuario que ha iniciado sesión.

Tipos de lista

Enumere los nombres de todos los objetos Simply disponibles a través de la API.

formato de URL

 <código>Tipo de solicitud: GET

http://Simply_url/webservice.php?operation=listtypes

&sessionName=[id de sesión]
</código>

Devuelve un mapa que contiene los 'tipos' clave con el valor de una lista de los nombres de objetos de Simply.

Ejemplo de tipos de lista

 <code>//la solicitud de tipo de lista debe ser una solicitud GET.
$httpc->get("$endpointUrl?sessionName=$sessionId&operation=listtypes");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);

//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('listar tipos fallidos:'.$jsonResponse['error']['errorMsg']);
//Obtener la Lista de todos los módulos accesibles.
$módulos = $jsonResponse['resultado']['tipos'];
</código>

La segunda operación es describe y proporciona información de tipo detallada sobre un objeto Simply.

Describir

Obtenga la información de tipo sobre un objeto Simply dado.

formato de URL

 <código>Tipo de solicitud: GET

http://Simply_url/webservice.php?operation=describe

&sessionName=[id de sesión]
&elementType=[elementType]
</código>

Describir ejemplo

 <código>//por ejemplo
//Simplemente Nombre del objeto que se necesita describir o cuya información se solicita.
$moduleName = 'Contactos';

//usar sessionId creado en el momento del inicio de sesión.
$params = "sessionName=$sessionId&operation=describe&elementType=$moduleName";
//describir la solicitud debe ser una solicitud GET.
$httpc->get("$endpointUrl?$params");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);

//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('error en la descripción del objeto:'.$jsonResponse['error']['errorMsg']);
// obtener descripción del objeto de resultado. $descripción = $jsonResponse['resultado'];

</código>

La descripción consta de los siguientes campos:

Cada elemento en la matriz de campos describe un campo particular en el objeto.

Nombre Descripción
Nombre El nombre del campo, como lo usa internamente Simply.
Etiqueta La etiqueta utilizada para mostrar el nombre del campo.
Obligatorio Un booleano que especifica si el campo es obligatorio. Los campos obligatorios deben proporcionarse al crear un nuevo objeto.
Escribe Un mapa que describe la información de tipo para el campo.
Por defecto El valor predeterminado para el campo.
nullable Un valor booleano que especifica si el campo se puede establecer en nulo.
Editable Un valor booleano que especifica si el campo se puede modificar.

El campo de tipo es particularmente importante ya que describe qué tipo de campo es. Este es un mapa que contendrá al menos un elemento llamado nombre, que especifica el nombre del tipo.

Nombre Descripción
Cuerda Un campo de texto de una línea.
Texto Un campo de texto de varias líneas.
Entero Un campo de texto de varias líneas.
Doble Un campo para números de coma flotante.
booleano Un campo booleano, que puede tener los valores verdadero o falso.
Hora Una cadena con el formato hh:mm, que se basa en la configuración del formato de hora del usuario.
Fecha Una cadena que representa una fecha, el tipo de mapa contendrá otro elemento llamado formato, que es el formato en el que se espera el valor de este campo, se basa en el formato de fecha de configuración del usuario.
Fecha y hora Una cadena que representa la fecha y la hora, que se basa en la configuración de formato de fecha del usuario.
Auto generado Los campos para los que Simply genera automáticamente los valores. Suele ser el campo ID de un objeto.
Referencia Un campo que muestra una relación con otro objeto. El mapa de tipo contendrá otro elemento llamado se refiere a, que es una matriz que contiene los módulos a los que puede apuntar el campo.
lista de selección Un campo que puede contener uno de una lista de valores. El mapa contendrá dos elementos, picklistValues, que es una lista de valores posibles, y defaultValue, que es el valor predeterminado para la lista de selección.
Lista de selección múltiple Un campo de lista de selección donde se pueden seleccionar varios valores.
Teléfono Un campo utilizado para almacenar números de teléfono.
Correo electrónico Un campo utilizado para almacenar ID de correo electrónico.
URL Un campo utilizado para almacenar direcciones URL.
skype Un campo utilizado para almacenar ID de Skype o números de teléfono.
Clave Un campo utilizado para almacenar contraseñas.
Dueño Un campo que define el propietario del campo, que puede ser un grupo o un usuario individual.

Describir resultado

 <code>DescribirResultado{
label:String //etiqueta del módulo.
name:String //nombre del módulo, como se proporciona en la solicitud.
createable:Boolean //true si el usuario registrado puede crear registros de tipo y false en caso contrario.
updateable:Boolean //true si el usuario que ha iniciado sesión puede actualizar registros de tipo y false en caso contrario.
deleteable:Boolean //true si el usuario que ha iniciado sesión puede eliminar registros de tipo y false en caso contrario.
recuperable:Booleano //verdadero si el usuario que ha iniciado sesión puede recuperar registros de tipo y falso en caso contrario.
campos:Array //array de tipo Field.
}
</código>

Campo

Tipo de campo

 <código>Tipo de campo{
<pre class="_fck_mw_lspace"> nombre:Tipo //tipo de campo
se refiere a: matriz // una matriz de nombres de objetos simples de tipos de registro a los que el campo puede referirse, solo se define para referencia FieldType.
picklistValues:Array //una matriz de tipo tipo PicklistValue. solo se define para la lista de selección Tipo de campo.
defaultValue:String //un valor del valor predeterminado de la lista de selección seleccionada, solo se define para el tipo de campo de la lista de selección.
format:String //formato de fecha en el que el campo de tipo de fecha debe completarse, por ejemplo, mm-dd-yyyy. solo se define para el tipo de campo de fecha.
}
</código>

El valor del campo de la lista de selección debe proporcionarse explícitamente.

 <código>Valor de lista de selección{
name:String //nombre de la opción de lista de selección.
value:String //valor de la opción de lista de selección.
}
</código>

Un ejemplo de objeto describeResult

//$descripción del ejemplo anterior. Por ejemplo, print_r($description) podría mostrar:

 <código>matriz
(
[etiqueta] => Contactos
[nombre] => Contactos
[creable] => 1
[actualizable] => 1
[eliminable] => 1
[recuperable] => 1
[campos] => Matriz
(
[0] => Matriz
(
[nombre] => cuenta_id
[etiqueta] => Nombre de cuenta
[obligatorio] =>
[tipo] => Matriz
(
[nombre] => referencia,
[se refiere a] => Matriz
(
"Cuentas"
)
)
[predeterminado] =>
[anulable] => 1
[editable] => 1
)
)
)

</código>

Operaciones CRUD

La API proporciona operaciones para crear, recuperar, actualizar y eliminar objetos de entidad de CRM.

Crear

Cree una nueva entrada en el servidor.

formato de URL

 <código>Tipo de solicitud: POST

http://Simply_url/webservice.php?operation=create

&sessionName=[id de sesión]
&elemento=[objeto]
&elementType=[tipo de objeto]

</código>

Crear ejemplo

Ejemplo 1

Puede crear un contacto mediante la operación de creación. En este caso, los campos obligatorios son apellido e id_usuario_asignado.

$savedObject es un mapa que contiene los campos del nuevo objeto, incluido un campo de ID que se puede usar para hacer referencia al objeto.

Ejemplo 2

Cree un contacto y asócielo con una cuenta existente.

 <código>//p. ej. 2
//Cree un contacto y asócielo con una cuenta existente.
$resultadodelaconsulta = hacerConsulta("seleccione nombre de cuenta, id de cuentas donde nombre de cuenta='Simplemente';");
$cuentaId = $resultadodelaconsulta[0]['id'];
//Para obtener más detalles sobre cómo realizar una solicitud de consulta, consulte el ejemplo de operación de consulta.

//completar los detalles de los contactos.userId se obtiene de loginResult.
$contactData = array('lastname'=>'Valiant', 'assigned_user_id'=>$userId,'account_id'=>$accountId);
//codifica el objeto en formato JSON para comunicarse con el servidor.
$objetoJson = Zend_JSON::encode($contactData);
//nombre del módulo para el que se debe crear la entrada.
$moduleName = 'Contactos';

//sessionId se obtiene de loginResult.
$params = array("sessionName"=>$sessionId, "operación"=>'crear',
"elemento"=>$objectJson, "elementType"=>$moduleName);
//Crear debe ser Solicitud POST.
$httpc->post("$endpointUrl", $params, true);
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);

//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('crear falló:'.$jsonResponse['error']['errorMsg']);
$objetoGuardado = $jsonResponse['resultado'];
$id = $objetoGuardado['id'];
</código>

Ejemplo 3

Cree un contacto y asócielo con una nueva cuenta.

 <código>//p. ej. 3
<p>//Cree un contacto y asócielo con una nueva cuenta.
</p><p>//rellenar los datos de las Cuentas. userId se obtiene de loginResult.
$accountData = array('accountname'=>'Simplemente', 'assigned_user_id'=>$userId);
//codifica el objeto en formato JSON para comunicarse con el servidor.
$objetoJson = Zend_JSON::encode($cuentaDatos);
//nombre del módulo para el que se debe crear la entrada.
$moduleName = 'Cuentas';
</p><p>//sessionId se obtiene de loginResult.
$params = array("sessionName"=>$sessionId, "operación"=>'crear',
</p>
<pre class="_fck_mw_lspace"> "element"=>$objectJson, "elementType"=>$moduleName);

//Crear debe ser Solicitud POST. $httpc->post(“$endpointUrl”, $params, true); $respuesta = $httpc->respuestaactual(); // decodifica la respuesta de codificación json del servidor. $jsonResponse = Zend_JSON::decode($response['body']);

//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)

//manejar el caso de falla.
die('crear falló:'.$jsonResponse['error']['errorMsg']);

$cuenta = $jsonResponse['resultado']; $cuentaId = $cuenta['id'];

$contactData = array('lastname'=>'Valiant', 'assigned_user_id'=>$userId,'account_id'=>$accountId);

//codifica el objeto en formato JSON para comunicarse con el servidor. $objetoJson = Zend_JSON::encode($contactData); //nombre del módulo para el que se debe crear la entrada. $moduleName = 'Contactos';

//sessionId se obtiene de loginResult.
$parámetros = array(“nombreSesión”=>$IdSesión, “operación”=>'crear',

"elemento"=>$objectJson, "elementType"=>$moduleName);

//Crear debe ser Solicitud POST. $httpc->post(“$endpointUrl”, $params, true); $respuesta = $httpc->respuestaactual(); // decodifica la respuesta de codificación json del servidor. $jsonResponse = Zend_JSON::decode($response['body']);

//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)

//manejar el caso de falla.
die('crear falló:'.$jsonResponse['error']['errorMsg']);
$objetoGuardado = $jsonResponse['resultado']; $id = $objetoGuardado['id'];

</código></pre>

CrearResultado

Recuperar

Recuperar una entrada existente del servidor.

formato de URL

 <código>Tipo de solicitud: GET

http://Simply_url/webservice.php?operation=retrieve
&session_name=[id de sesión]
&id=[id del objeto

</código>

Recuperar ejemplo

Para recuperar un objeto utilizando su ID, utilice la operación de recuperación. Puede recuperar el contacto creado en el ejemplo de creación.

 <code>//sessionId se obtiene de loginResult.
$params = "sessionName=$sessionId&operation=retrieve&id=$id";
//La recuperación debe ser una solicitud GET.
$httpc->get("$endpointUrl?$params");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);
//la operación fue exitosa obtener el token de la respuesta.

if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('recuperación fallida:'.$jsonResponse['error']['errorMsg']);

$objetorecuperado = $jsonResponse['resultado'];
</código>

RecuperarResultado

Un mapa que representa el contenido de un objeto basado en una entidad de CRM. Todos los campos de referencia se representan mediante el tipo de Id . Una clave llamada ID de tipo Id representa la ID única del objeto. Este campo está presente para cualquier objeto obtenido de la base de datos.

Actualizar

Para actualizar un objeto recuperado o recién creado, puede utilizar la operación de actualización.

formato de URL

 <código>Tipo de solicitud: POST

http://Simply_url/webservice.php?operation=update
&sessionName=[id de sesión]
&elemento=[objeto]

</código>

Actualizar ejemplo

Puede agregar un nombre al contacto.

 <código>//Objeto recuperado del ejemplo anterior (Ejemplo 1).
$objetorecuperado['nombre'] = 'Príncipe';
//codifica el objeto en formato JSON para comunicarse con el servidor.
$objetoJson = Zend_JSON::encode($objetorecuperado);

//sessionId se obtiene del resultado de la operación de inicio de sesión.
$params = array("sessionName"=>$sessionId, "operación"=>'actualizar',
"elemento"=>$objetoJson);
//la actualización debe ser una solicitud POST.
$httpc->post("$endpointUrl", $params, true);
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);

//la operación fue exitosa obtener el token de la respuesta. if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('actualización fallida:'.$jsonResponse['error']['errorMsg']);

//actualizar objeto de resultado.
$objetoactualizado = $jsonResponse['resultado'];
</código>

ActualizarResultado

Un mapa que representa el contenido de un objeto basado en la realidad. Todos los campos de referencia se representan mediante el tipo de Id . Una clave llamada ID de tipo Id representa la ID única del objeto. Este campo está presente para cualquier objeto obtenido de la base de datos.

Borrar

Para eliminar un objeto, utilice la operación de eliminación.

formato de URL

 <código>Tipo de solicitud: POST

http://Simply_url/webservice.php?operation=delete
&sessionName=[id de sesión]
&id=[id del objeto]
</código>

Borrar ejemplo

La operación de eliminación no tiene ningún resultado. El indicador de éxito es suficiente para saber si la operación fue exitosa.

Consultas

Simplemente proporciona un lenguaje de consulta simple para obtener datos. Este lenguaje es bastante similar a las consultas de selección en SQL. Existen limitaciones: las consultas funcionan en un solo módulo, las consultas incrustadas no son compatibles y no admite combinaciones. Pero esta sigue siendo una forma poderosa de obtener datos de Simply.

Query siempre limita su salida a 100 registros. La aplicación cliente puede usar el operador de límite para obtener diferentes registros.

formato de URL

 <código>Tipo de solicitud: GET

http://Simply_url/webservice.php?operation=query

&sessionName=[id de sesión]
&query=[cadena de consulta]
</código>

Ejemplo de consulta

Ejemplo 1

 <código>//consulta para seleccionar datos del servidor.
$consulta = "select * from Contacts where lastname='Valiant';";
//urlencode a como se envía a través de http.
$queryParam = urlencode($consulta);
//sessionId se obtiene del resultado de inicio de sesión.
$params = "sessionName=$sessionId&operation=query&query=$queryParam";
//la consulta debe ser Solicitud GET.
$httpc->get("$endpointUrl?$params");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);

//la operación fue exitosa obtener el token de la respuesta. if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('consulta fallida:'.$jsonResponse['errorMsg']);

//Array de objetos simples
$objetosrecuperados = $jsonResponse['resultado'];
</código>

Ejemplo 2

Especifique las columnas que se recuperarán para cada registro.

 <código>//consulta para seleccionar datos del servidor.
$consulta = "seleccione apellido,nombre,id_cuenta,id_usuario_asignado de Contactos donde apellido='Valiant';";
//urlencode a como se envía a través de http.
$queryParam = urlencode($consulta);
//sessionId se obtiene del resultado de inicio de sesión.
$params = "sessionName=$sessionId&operation=query&query=$queryParam";
//la consulta debe ser Solicitud GET.
$httpc->get("$endpointUrl?$params");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);

//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('consulta fallida:'.$jsonResponse['errorMsg']);

//Array de objetos simples
$objetosrecuperados = $jsonResponse['resultado'];
</código>

Esto devolverá una matriz que contiene matrices que representan los campos de cada objeto que coincidió con la consulta.

Resultado de la consulta

QueryResult es una matriz de SimplyObjects.

SimplementeObjeto

Un mapa que representa el contenido de un objeto basado en la realidad. Todos los campos de referencia se representan mediante el tipo de Id . Una clave llamada ID de tipo Id representa la ID única del objeto. Este campo está presente para cualquier objeto obtenido de la base de datos.

formato de consulta

 <código>seleccionar * | <lista_columnas> | <cuenta(*)>
from <objeto> [donde <condicionales>]
[ordenar por <column_list>] [límite [<m>, ]<n>];

</código>

La lista de columnas en la cláusula order by puede tener como máximo dos nombres de columna.

sincronizar

Sync devolverá un objeto SyncResult que contiene los detalles de los cambios después de modifiedTime.

formato de URL

 <código>Tipo de solicitud: GET

http://Simply_url/webservice.php?operation=sync

&sessionName=[id de sesión]
&modifiedTime=[marca de tiempo]
&elementType=[elementType]
</código>

elementType: este es un parámetro opcional. Si se especifica, solo se devuelven los cambios para ese módulo después del tiempo dado. De lo contrario, se devuelven los cambios en todos los módulos accesibles por el usuario después del tiempo dado.

TimeStamp: una representación larga del número de segundos desde la época de Unix.

Ejemplo 1

Cree una cuenta y captúrela en la API de sincronización.

 <código>//tiempo después del cual se necesitan todos los cambios en el servidor.
$stiempo = tiempo();
//Cree algunos datos ahora para que sean capturados por la respuesta de API de sincronización.
//Crear una cuenta.
//completar los detalles de Accounts.userId se obtiene de loginResult.
$accountData = array('accountname'=>'Simplemente', 'assigned_user_id'=>$userId);
//codifica el objeto en formato JSON para comunicarse con el servidor. $objetoJson = Zend_JSON::encode($cuentaDatos);
//nombre del módulo para el que se debe crear la entrada.
$moduleName = 'Cuentas';

//sessionId se obtiene de loginResult.
$params = array("sessionName"=>$sessionId, "operación"=>'crear',
"elemento"=>$objectJson, "elementType"=>$moduleName);
//Crear debe ser Solicitud POST.
$httpc->post("$endpointUrl", $params, true);
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);

//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('crear falló:'.$jsonResponse['error']['errorMsg']);
$createResult = $jsonResponse['resultado'];

$params = "operación=sync&modifiedTime=$stime&sessionName=$sessionId";

// la sincronización debe ser una solicitud GET.
$httpc->get("$endpointUrl?$params");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);

//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('consulta fallida:'.$jsonResponse['errorMsg']);

//Array de objetos simples
$objetosrecuperados = $jsonResponse['resultado'];

</código>

La respuesta contiene la cuenta que se creó.

Ejemplo 2

Cree una cuenta y un contacto, use la API de sincronización solo para el módulo Cuentas, solo se devuelven los cambios en el módulo Cuentas.

Resultado de sincronización

Un objeto que representa la respuesta de una operación de sincronización.

 <código>Resultado de sincronización{
actualizado:[Objeto] //Lista de Objetos creados o modificados.
eliminado:[Id] //Lista de *Id* de objetos eliminados.
lastModifiedTime:Timstamp //hora del último cambio. que se puede usar en la próxima llamada a la API de sincronización para obtener todos los cambios más recientes que el cliente no ha obtenido.
}
</código>

Saliendo de tu cuenta

Cerrar sesión

Cierre la sesión del servicio web, lo que deja la sesión del servicio web inválida para su uso posterior.

formato de URL

 <código>Tipo de solicitud: GET

http://Simply_url/webservice.php?operation=logout

&sessionName=[id de sesión]
</código>

Ejemplo

 <code>//SessionId es la sesión que se va a terminar.
$params = "operación=cerrar sesión&sessionName=$sessionId";

//el cierre de sesión debe ser una solicitud GET.
$httpc->get("$endpointUrl?$params");
$respuesta = $httpc->respuestaactual();
// decodifica la respuesta de codificación json del servidor.
$jsonResponse = Zend_JSON::decode($response['body']);

//la operación fue exitosa obtener el token de la respuesta.
if($jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('consulta fallida:'.$jsonResponse['errorMsg']);
//cierre de sesión exitoso sesión terminada.
</código>

Ampliación del cliente web de Simply mediante el servicio web

Extender sesión

Extiende la sesión actual del cliente web de Simply al servicio web y devuelve un ID de sesión de servicio web. Cuando trabaja desde el cliente web de Simply, el usuario puede reutilizar la sesión autenticada actual en lugar de iniciar sesión en Simply nuevamente para acceder al servicio web.

Nota: si el usuario extiende una sesión, la sesión se vinculará, por lo que al cerrar sesión en uno (el servicio web o el cliente web) también se cerrará la sesión del otro. Para que la operación de extensión de sesión funcione, las cookies deben estar habilitadas en el navegador del cliente.

formato de URL

 <código>Tipo de solicitud: POST

http://Simply_url/webservice.php?operation=extendsession

</código>

Ejemplo

 <código>
</código>

Este ejemplo está escrito en Javascript, ya que la sesión extendida solo es válida desde el cliente web de Simply.

Requisitos para ejecutar el ejemplo

  • Biblioteca JQUERY: para realizar la solicitud http de ajax.
  • Biblioteca JSON: archivo json2.js disponible con Simply en json.org.

Ejemplo 1

 <código>
//parámetros de operación.
var params = "operación=sesión extendida";
//punto final de los servicios.
var endPointUrl = "http://Simply_url/webservice.php";

//extendSession es una solicitud de publicación, invoque la solicitud de publicación jquery http.
$.post(endPointUrl, params, function(resultado){
// decodifica la respuesta de codificación json del servidor.
var jsonResponse = json.parse(resultado);

//la operación fue exitosa obtener el token de la respuesta.
if(jsonResponse['éxito']==falso)
//manejar el caso de falla.
die('inicio de sesión fallido:'+jsonResponse['error']['errorMsg']);

//Inicio de sesión exitoso, extraiga el ID de sesión y el ID de usuario de LoginResult para que pueda usarse para futuras llamadas.
var sessionId = jsonResponse['resultado']['nombre de sesión'];
var userId = jsonResponse['resultado']['userId'];
});
</código>

Actualizado en 06/03/2022

¿Te resultó útil este artículo

Artículos relacionados