El tutorial del servicio web Simply CRM

Simplemente proporciona una interfaz de programación de aplicaciones (API) simple, potente y segura para trabajar con las entidades almacenadas en su interior. Para utilizar este documento, debe estar familiarizado con el desarrollo de software, los servicios web y Simply CRM .

El servicio web proporciona una forma más sencilla de integrar Simply con sus otros sistemas de software.

Las características de la llamada a la API

REST – API se basa en REST, lo que significa que toda la comunicación entre el cliente y el servidor puede ocurrir 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 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 de AUTOCOMMIT en SQL.

La respuesta de la API

Objeto de respuesta

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

Si la solicitud se procesa con éxito:

 <code> Respuesta {
éxito: booleano = verdadero
result: Object // El objeto Operation Result
}
</code>

Si ocurre una falla al procesar la solicitud:

 <code> Responder {
éxito: booleano = falso
error: ErrorObject
}
</code>

Objeto de error

 <code> ErrorObject {
errorCode: String // Representación en cadena del tipo de error
errorMessage: String // Mensaje de error de la api.
}
</code>

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 exitoso 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 Zend JSON y Http_Client.

Los requisitos para ejecutar 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_Client que se puede instalar haciendo una pear install HTTP_Client ;
  4. Zend JSON, para lo cual deberá descargar el marco zend mínimo .

Iniciando sesión

La API no utiliza la contraseña para iniciar sesión. En cambio, 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 está utilizando para acceder a la API.

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.

GetChallenge

Obtén una ficha de desafío del servidor. Esta debe ser una solicitud GET.

Formato de URL

 <código> Tipo de solicitud: OBTENER

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

& username = [nombre de usuario]
</code>

Ejemplo de GetChallenge

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

 <code> // por ejemplo, // ruta URL a Simply / webservice.php como http: //Simply_url/webservice.php
$ endpointUrl = "http: //localhost/ws/webservice.php";
// nombre de usuario del usuario que va a iniciar sesión.
$ userName = "admin";

$ httpc = nuevo HTTP_CLIENT ();
// La solicitud getchallenge debe ser una solicitud GET.
$ httpc-> get ("$ endpointUrl? operation = getchallenge & username = $ userName"); $ respuesta = $ httpc-> currentResponse ();
// decodifica la respuesta de codificación json del servidor.
$ jsonResponse = Zend_JSON :: decode ($ respuesta ['cuerpo']);

// verifica si la operación solicitada fue exitosa o no.
if ($ jsonResponse ['éxito'] == falso)
// manejar el caso de falla.
die ('error al obtener el desafío:'. $ jsonResponse ['error'] ['errorMsg']);

// la operación fue exitosa obtener el token de la respuesta. $ ChallengeToken = $ jsonResponse ['resultado'] ['token'];
</code>

Resultado de GetChallenge

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

 <code> GetChallengeResult {
token: String // Token de desafío del servidor.
serverTime: TimeStamp // La hora actual del servidor.
expireTime: TimeStamp // La hora a la que expira el token.
}
</code>

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 comprobació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 de publicación.

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

& username = [nombre de usuario]
& accessKey = [accessKey]
</code>

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

Ejemplo de inicio de sesión

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

// extendSession es una solicitud de publicación, invoca la solicitud de publicación http de jquery.
$ .post (endPointUrl, params, function (result) {
// 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 ('error de inicio de sesión:' + jsonResponse ['error'] ['errorMsg']);

// iniciar sesión correctamente, extraer sessionId y userId de LoginResult para que pueda usarse para más llamadas.
var sessionId = jsonResponse ['resultado'] ['nombre de sesión'];
var userId = jsonResponse ['resultado'] ['userId'];
});
</code>

 <código> // p. ej.
// clave de acceso del usuario admin, que se encuentra en mi página de preferencias.
$ userAccessKey = 'dsf923rksdf3';

// crear una cadena md5 que concatene la clave de acceso del usuario desde mi página de preferencias
// y la ficha de desafío obtenida al obtener el resultado del desafío.
$ clavedegenerada = md5 ($ desafíoToken. $ userAccessKey);
// la solicitud de inicio de sesión debe ser una solicitud POST.
$ httpc-> publicación ("$ endpointUrl",
array ('operación' => 'inicio de sesión', 'nombre de usuario' => $ nombre de usuario,
'clave de acceso' => $ clave generada), verdadero);
$ respuesta = $ httpc-> currentResponse ();
// decodifica la respuesta de codificación json del servidor.
$ jsonResponse = Zend_JSON :: decode ($ respuesta ['cuerpo']);

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

// iniciar sesión correctamente, extraer sessionId y userId de LoginResult para que se puedan usar para más llamadas.
$ sessionId = $ jsonResponse ['resultado'] ['sessionName'];
$ userId = $ jsonResponse ['resultado'] ['userId'];

</code>

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

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

 <code> LoginResult {
sessionId: String // Identificador único para la sesión
userId: String // El ID 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.
}
</code>

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 los 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: OBTENER

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

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

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

Ejemplo de tipos de lista

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

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

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

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

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

Describe un ejemplo

 <código> // p. ej.
// Simplemente Nombre del objeto que necesita ser descrito o cuya información se solicita.
$ moduleName = 'Contactos';

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

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

</code>

La descripción consta de los siguientes campos:

Cada elemento de 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. Se deben proporcionar campos obligatorios al crear un nuevo objeto.
Tipo Un mapa que describe la información de tipo para el campo.
Defecto El valor predeterminado para el campo.
Nillable Un valor booleano que especifica si el campo se puede establecer en nulo.
Editable Un 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, y se basa en el formato de fecha de la configuración del usuario.
Fecha y hora Una cadena que representa la fecha y la hora, que se basa en la configuración del formato de fecha del usuario.
Auto generado Los campos para los que los valores son generados automáticamente por Simply. Suele ser el campo de identificación de un objeto.
Referencia Un campo que muestra una relación con otro objeto. El mapa de tipos contendrá otro elemento llamado referTo, 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 URL.
Skype Un campo que se usa para almacenar ID de Skype o números de teléfono.
Contraseña Un campo utilizado para almacenar contraseñas.
Dueño Un campo que define al propietario del campo, que puede ser un grupo o un usuario individual.

Describe el resultado

 <code> DescribeResult {
label: String // etiqueta del módulo.
name: String // nombre del módulo, como uno proporcionado en la solicitud.
createable: Boolean // verdadero si el usuario que ha iniciado sesión tiene permitido crear registros de tipo y falso en caso contrario.
updateable: Boolean // true si el usuario que ha iniciado sesión tiene permitido actualizar los registros de tipo y false en caso contrario.
deleteable: booleano // verdadero si el usuario que ha iniciado sesión puede eliminar registros de tipo y falso en caso contrario.
retrieveable: Boolean // true si el usuario que ha iniciado sesión tiene permisos recuperables de tipo y false en caso contrario.
fields: Array // matriz de tipo Field.
}
</code>

Campo

Tipo de campo

 <code> FieldType {
<pre class = "_ fck_mw_lspace"> nombre: Tipo // tipo de campo
ReferTo: Array // una matriz de nombres de objetos de Simply de tipos de registros a los que el campo puede hacer referencia, solo se define como FieldType de referencia.
picklistValues: Array // una matriz de tipo PicklistValue type. solo se define para el tipo de campo de la lista de selección.
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.
formato: Cadena // formato de fecha en el que se debe completar el campo de tipo de fecha, por ejemplo, mm-dd-aaaa. solo se define para el tipo de campo de fecha.
}
</code>

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

 <code> PicklistValue {
name: String // nombre de la opción de lista de selección.
value: String // valor de la opción de lista de selección.
}
</code>

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
[borrable] => 1
[recuperable] => 1
[campos] => Matriz
(
[0] => Matriz
(
[nombre] => account_id
[etiqueta] => Nombre de la cuenta
[obligatorio] =>
[tipo] => Matriz
(
[nombre] => referencia,
[refiere a] => Matriz
(
"Cuentas"
)
)
[predeterminado] =>
[nillable] => 1
[editable] => 1
)
)
)

</code>

Operaciones CRUD

La API proporciona operaciones para crear, recuperar, actualizar y eliminar objetos de entidad 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]
& element = [objeto]
& elementType = [tipo de objeto]

</code>

Crear ejemplo

Ejemplo 1

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

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

Ejemplo 2

Crea un contacto y asócialo con una cuenta existente.

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

// completa los detalles de los contactos. El ID de usuario se obtiene de loginResult.
$ contactData = array ('lastname' => 'Valiant', 'assign_user_id' => $ userId, 'account_id' => $ accountId);
// codifica el objeto en formato JSON para comunicarse con el servidor.
$ objectJson = 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',
"element" => $ objectJson, "elementType" => $ moduleName);
// Crear debe ser solicitud POST.
$ httpc-> post ("$ endpointUrl", $ params, true);
$ respuesta = $ httpc-> currentResponse ();
// decodifica la respuesta de codificación json del servidor.
$ jsonResponse = Zend_JSON :: decode ($ respuesta ['cuerpo']);

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

Ejemplo 3

Crea un contacto y asócialo con una nueva cuenta.

 <código> // por ejemplo, 3
<p> // Cree un contacto y asócielo con una nueva cuenta.
</p> <p> // Complete los detalles de las Cuentas. userId se obtiene de loginResult.
$ accountData = array ('nombre de cuenta' => 'Simplemente', 'ID_usuario_asignado' => $ ID_usuario);
// codifica el objeto en formato JSON para comunicarse con el servidor.
$ objectJson = Zend_JSON :: encode ($ accountData);
// 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, verdadero); $ respuesta = $ httpc-> currentResponse (); // decodifica la respuesta de codificación json del servidor. $ jsonResponse = Zend_JSON :: decode ($ respuesta ['cuerpo']);

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

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

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

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

// codifica el objeto en formato JSON para comunicarse con el servidor. $ objectJson = 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',

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

// Crear debe ser solicitud POST. $ httpc-> post ("$ endpointUrl", $ params, verdadero); $ respuesta = $ httpc-> currentResponse (); // decodifica la respuesta de codificación json del servidor. $ jsonResponse = Zend_JSON :: decode ($ respuesta ['cuerpo']);

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

// manejar el caso de falla.
die ('error de creación:'. $ jsonResponse ['error'] ['errorMsg']);
$ SavedObject = $ jsonResponse ['resultado']; $ id = $ SavedObject ['id'];

</code> </pre>

CreateResult

Recuperar

Recupere una entrada existente del servidor.

Formato de URL

 <código> Tipo de solicitud: OBTENER

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

</code>

Recuperar ejemplo

Para recuperar un objeto usando su ID, use 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 = recuperar & id = $ id";
// Recuperar debe ser Solicitud GET.
$ httpc-> get ("$ endpointUrl? $ params");
$ respuesta = $ httpc-> currentResponse ();
// decodifica la respuesta de codificación json del servidor.
$ jsonResponse = Zend_JSON :: decode ($ respuesta ['cuerpo']);
// 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']);

$ retrivedObject = $ jsonResponse ['resultado'];
</code>

RetrieveResult

Un mapa que representa el contenido de un objeto basado en entidad CRM. Todos los campos de referencia se representan mediante el tipo de Id. Una clave denominada 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]
& element = [objeto]

</code>

Ejemplo de actualización

Puede agregar un nombre al contacto.

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

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

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

// actualiza el objeto de resultado.
$ updatedObject = $ jsonResponse ['resultado'];
</code>

UpdateResult

Un mapa que representa el contenido de un objeto basado en crmentity. Todos los campos de referencia se representan mediante el tipo de Id. Una clave denominada 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 de objeto]
</code>

Eliminar ejemplo

La operación de eliminación no tiene ningún resultado. La bandera 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 seleccionadas en SQL. Existen limitaciones: las consultas funcionan en un solo módulo, las consultas incrustadas no son compatibles y no admite uniones. Pero esta sigue siendo una forma poderosa de obtener datos de Simply.

La consulta 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: OBTENER

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

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

Ejemplo de consulta

Ejemplo 1

 <code> // consulta para seleccionar datos del servidor.
$ query = "seleccionar * de Contactos donde 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 GET Request.
$ httpc-> get ("$ endpointUrl? $ params");
$ respuesta = $ httpc-> currentResponse ();
// decodifica la respuesta de codificación json del servidor.
$ jsonResponse = Zend_JSON :: decode ($ respuesta ['cuerpo']);

// 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']);

// Matriz de SimplyObjects
$ retrivedObjects = $ jsonResponse ['resultado'];
</code>

Ejemplo 2

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

 <code> // consulta para seleccionar datos del servidor.
$ query = "seleccionar apellido, nombre, id_cuenta, id_usuario_asignado de Contactos donde apellido = 'Valiente';";
// 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 GET Request.
$ httpc-> get ("$ endpointUrl? $ params");
$ respuesta = $ httpc-> currentResponse ();
// decodifica la respuesta de codificación json del servidor.
$ jsonResponse = Zend_JSON :: decode ($ respuesta ['cuerpo']);

// 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']);

// Matriz de SimplyObjects
$ retrivedObjects = $ jsonResponse ['resultado'];
</code>

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

QueryResult

QueryResult es una matriz de SimplyObjects.

SimplyObject

Un mapa que representa el contenido de un objeto basado en crmentity. Todos los campos de referencia se representan mediante el tipo de Id. Una clave denominada 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 * | <column_list> | <recuento (*)>
de <objeto> [donde <condicionales>]
[ordenar por <column_list>] [límite [<m>,] <n>];

</code>

La lista de columnas en el orden por cláusula 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: OBTENER

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

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

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

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

Ejemplo 1

Crea una cuenta y captúrala en la API de sincronización.

 <code> // tiempo después del cual se necesitan todos los cambios en el servidor.
$ stime = tiempo ();
// Cree algunos datos ahora para que sean capturados por la respuesta de la API de sincronización.
//Crear una cuenta.
// completa los detalles de Accounts.userId se obtiene de loginResult.
$ accountData = array ('nombre de cuenta' => 'Simplemente', 'ID_usuario_asignado' => $ ID_usuario);
// codifica el objeto en formato JSON para comunicarse con el servidor. $ objectJson = Zend_JSON :: encode ($ accountData);
// 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',
"element" => $ objectJson, "elementType" => $ moduleName);
// Crear debe ser solicitud POST.
$ httpc-> post ("$ endpointUrl", $ params, true);
$ respuesta = $ httpc-> currentResponse ();
// decodifica la respuesta de codificación json del servidor.
$ jsonResponse = Zend_JSON :: decode ($ respuesta ['cuerpo']);

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

$ params = "operation = sync & modifiedTime = $ stime & sessionName = $ sessionId";

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

// 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']);

// Matriz de SimplyObjects
$ retrivedObjects = $ jsonResponse ['resultado'];

</code>

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.

SyncResult

Objeto que representa la respuesta de una operación de sincronización.

 <code> SyncResult {
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 utilizar 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.
}
</code>

Saliendo de tu cuenta

Cerrar sesión

Salga de la sesión del servicio web, lo que deja la sesión del servicio web no válida para su uso posterior.

Formato de URL

 <código> Tipo de solicitud: OBTENER

http: //Simply_url/webservice.php? operation = cerrar sesión

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

Ejemplo

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

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

// 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']);
// cerrar sesión con éxito finalizó la sesión.
</code>

Ampliación del cliente web 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. Al trabajar desde el cliente web de Simply, el usuario puede volver a utilizar la sesión autenticada actual en lugar de iniciar sesión en Simply de nuevo para acceder al servicio web.

Nota: Si el usuario extiende una sesión, la sesión se vinculará, por lo que cerrar la sesión de uno (el servicio web o el cliente web) también cerrará la sesión del otro. Para que funcione la operación de extensión de sesión, 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 = extensionsession

</code>

Ejemplo

 <código>
</code>

Este ejemplo está escrito en Javascript, ya que Extend Session solo es válida desde el cliente web Simply.

Requisitos para ejecutar el ejemplo

  • Biblioteca JQUERY: para realizar la solicitud http 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 = extensión de sesión";
// punto final de los servicios.
var endPointUrl = "http: //Simply_url/webservice.php";

// extendSession es una solicitud de publicación, invoca la solicitud de publicación http de jquery.
$ .post (endPointUrl, params, function (result) {
// 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 ('error de inicio de sesión:' + jsonResponse ['error'] ['errorMsg']);

// iniciar sesión correctamente, extraer sessionId y userId de LoginResult para que pueda usarse para más llamadas.
var sessionId = jsonResponse ['resultado'] ['nombre de sesión'];
var userId = jsonResponse ['resultado'] ['userId'];
});
</code>

Actualizado en 06/06/2021

¿Te resultó útil este artículo

Artículos relacionados