Учебное пособие по веб-службе Simply CRM

Просто предоставляет простой, мощный и безопасный интерфейс прикладного программирования (API) для работы с объектами, хранящимися внутри. Чтобы использовать этот документ, вы должны иметь базовые знания в области разработки программного обеспечения, веб-сервисов и Simply CRM .

Веб-служба обеспечивает более простой способ интеграции Simply с другими программными системами.

Характеристики вызова API

REST — API основан на REST, что означает, что вся связь между клиентом и сервером может происходить через HTTP в форме запросов GET или POST.

JSON — JSON используется для кодирования ответа и запроса.

Запросы и ответы. Ваше клиентское приложение подготавливает и отправляет запрос на обслуживание в API. API обрабатывает запрос и возвращает ответ, а затем клиентское приложение обрабатывает ответ.

Фиксируется автоматически — каждая операция записи в объект Simply фиксируется автоматически. Это аналогично настройке AUTOCOMMIT в SQL.

Ответ API

Объект ответа

Все ответы будут иметь один из следующих двух форматов.

Если запрос обработан успешно:

 <code>Ответ{
успех: логическое значение = истина
result:Object // Объект результата операции
}
</код>

Если при обработке запроса произошел сбой:

 <code>Ответ{
успех: логическое значение = ложь
ошибка: ErrorObject
}
</код>

Объект ошибки

 <код>ErrorObject{
errorCode:String //Строковое представление типа ошибки
errorMessage:String //Сообщение об ошибке от API.
}
</код>

errorCode — это строковое представление типа ошибки.

Обработка ошибок

Ответом на любой запрос веб-службы является объект JSON. У объекта есть поле Success, которое будет иметь значение true, если операция прошла успешно, и false в противном случае. Если успех равен false, объект ответа будет содержать ошибку поля, которая будет содержать объект JSON. Объект ошибки будет содержать два поля errorType, однословное описание ошибки, и errorMsg, строку, содержащую описание ошибки.

Код примера написан на Php и имеет две зависимости: библиотеку Laminas и Http_Request2.

Требования для запуска примеров, приведенных в руководстве

  1. Установка Simply с веб-службой;
  2. Php для запуска примера кода;
  3. HTTP_Request2, который можно установить, выполнив pear install HTTP_Request2 ;
  4. Laminas, для чего потребуется скачать фреймворк Laminas .

Вход в систему

API не использует пароль для входа в систему. Вместо этого Simply предоставляет уникальный ключ доступа для каждого пользователя. Чтобы получить ключ пользователя, перейдите на панель «Мои настройки» определенного пользователя. Там вы найдете поле «Ключ доступа».

Важно : необходимо ввести IP-адрес в поле « Белый список IP-адресов» в разделе « Мои настройки » в профиле пользователя в Simply CRM , который используется для доступа к API.

Каждый вход в систему запускает сеанс клиента с сервером, аутентифицирует пользователя и возвращает идентификатор сеанса, который будет использоваться для всей последующей связи с сервером.

Вход в систему состоит из двух шагов. На первом этапе клиент получает токен вызова с сервера, который используется вместе с ключом доступа пользователя для входа в систему.

Получитьвызов

Получите токен вызова с сервера. Это должен быть запрос GET.

формат URL

 <code>Тип запроса: GET

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

&имя пользователя=[имя пользователя]
</код>

Пример GetChallenge

Чтобы получить токен вызова, вам нужно выполнить следующий код.

 <?php
require_once 'HTTP/Request2.php';
$endpointUrl = 'https://tr.simply-crm.dk/webservice.php';
//имя пользователя, который должен войти в систему.
$userName="API";

пытаться {
$request = новый HTTP_Request2($endpointUrl . "?operation=getchallenge&username=" . $userName, HTTP_Request2::METHOD_GET);
$ответ = $запрос->отправить();
если (200 == $ответ->getStatus()) {
$jsonResponse = json_decode($response->getBody(),true);
$challengeToken = $jsonResponse['результат']['токен'];
эхо $challengeToken;
} еще {
echo 'Неожиданный статус HTTP: ' . $ответ->получитьстатус() . ' ' .
$ответ->getReasonPhrase();
}

}поймать (HTTP_Request2_Exception $e) {
эхо 'Ошибка:' . $е->получитьсообщение();
}

?>

Получить результат вызова

Объект, представляющий результат ответа операции getchallenge.

 <code>Получить результат вызова{
token:String //Токен вызова с сервера.
serverTime:TimeStamp // Текущее время сервера.
expireTime:TimeStamp //Время истечения срока действия токена.
}
</код>

Теперь, когда у вас есть жетон вызова, вы можете приступить к входу в систему. Поле ключа доступа в операции входа представляет собой контрольную сумму md5 конкатенации маркера вызова и собственного ключа доступа пользователя. Операция входа в систему, в отличие от getchallenge, представляет собой почтовый запрос.

Авторизоваться

Войдите на сервер, используя токен вызова, полученный в операции getchallenge.

формат URL

 <code>Тип запроса:POST
http://Simply_url/webservice.php?operation=логин

&имя пользователя=[имя пользователя]
&accessKey=[accessKey]
</код>

Для accessKey создайте строку md5 после объединения ключа доступа пользователя со страницы «Мои предпочтения» и токена вызова, полученного из результата getchallenge.

Пример входа

Идентификатор сеанса используется для идентификации текущего сеанса и будет общим параметром во всех последующих запросах.

Результат входа

Объект, представляющий результат ответа операции входа в систему.

 <code>Результат входа{
sessionId:String //Уникальный идентификатор сеанса
userId:String // Простой идентификатор вошедшего в систему пользователя
version:String //Версия API веб-сервисов
SimplyVersion:String //Версия Simply CRM.
}
</код>

Получение информации

API предоставляет две операции для получения информации о доступных объектах Simply.

Первый — listtypes, который предоставляет список доступных модулей. Этот список содержит только те модули, к которым имеет доступ зарегистрированный пользователь.

Типы списков

Перечислите имена всех объектов Simply, доступных через API.

формат URL

 <code>Тип запроса: GET

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

&sessionName=[идентификатор сеанса]
</код>

Возвращает карту, содержащую ключевые типы со значением, представляющим собой список имен объектов Simply.

Пример типов списка

 <code>//запрос listtypes должен быть GET-запросом.
$httpc->get("$endpointUrl?sessionName=$sessionId&operation=listtypes");
$response = $httpc->currentResponse();
// декодируем ответ json encode от сервера.
$jsonResponse = Zend_JSON::decode($response['body']);

//операция прошла успешно получить токен из ответа.
если($jsonResponse['успех']==false)
//обрабатываем случай сбоя.
die('Ошибка списка типов:'.$jsonResponse['error']['errorMsg']);
//Получить список всех доступных модулей.
$modules = $jsonResponse['результат']['типы'];
</код>

Вторая операция описывает и предоставляет подробную информацию о типе объекта Simply.

Описывать

Получить информацию о типе данного объекта Simply.

формат URL

 <code>Тип запроса: GET

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

&sessionName=[идентификатор сеанса]
&элементтип=[элементтип]
</код>

Описать пример

 <код>//например
//Просто имя объекта, который необходимо описать или информация о котором запрашивается.
$moduleName = 'Контакты';

// использовать идентификатор сеанса, созданный во время входа в систему.
$params = "sessionName=$sessionId&operation=describe&elementType=$moduleName";
//запрос описания должен быть запросом GET.
$httpc->get("$endpointUrl?$params");
$response = $httpc->currentResponse();
// декодируем ответ json encode от сервера.
$jsonResponse = Zend_JSON::decode($response['body']);

//операция прошла успешно получить токен из ответа.
если($jsonResponse['успех']==false)
//обрабатываем случай сбоя.
die('Ошибка описания объекта:'.$jsonResponse['error']['errorMsg']);
// получить описание объекта результата. $description = $jsonResponse['результат'];

</код>

Описание состоит из следующих полей:

Каждый элемент в массиве fields описывает конкретное поле в объекте.

Имя Описание
Имя Имя поля, используемое внутренне Simply.
Этикетка Метка, используемая для отображения имени поля.
Обязательный Логическое значение, указывающее, является ли поле обязательным. Обязательные поля должны быть предоставлены при создании нового объекта.
Тип Карта, описывающая информацию о типе поля.
По умолчанию Значение по умолчанию для поля.
Nillable Логическое значение, указывающее, можно ли задать для поля значение null.
Редактируемый Логическое значение, указывающее, можно ли изменить поле.

Поле типа особенно важно, так как оно описывает тип поля. Это карта, которая будет содержать по крайней мере один элемент с именем name, который определяет имя типа.

Имя Описание
Нить Однострочное текстовое поле.
Текст Многострочное текстовое поле.
Целое число Многострочное текстовое поле.
Двойной Поле для чисел с плавающей запятой.
логический Логическое поле, которое может принимать значения true или false.
Время Строка в формате чч:мм, основанная на настройках формата времени пользователя.
Дата Строка, представляющая дату, карта типов будет содержать другой элемент, называемый форматом, который представляет собой формат, в котором ожидается значение этого поля, основанный на формате даты пользовательских настроек.
Дата и время Строка, представляющая дату и время, основанная на настройках формата даты пользователя.
Автогенерируемая Поля, для которых Simply автоматически генерирует значения. Обычно это поле идентификатора объекта.
Ссылка Поле, которое показывает отношение к другому объекту. Карта типов будет содержать еще один элемент с именем referTo, представляющий собой массив, содержащий модули, на которые может указывать поле.
Список выбора Поле, которое может содержать одно из списка значений. Карта будет содержать два элемента: picklistValues, который представляет собой список возможных значений, и defaultValue, который является значением по умолчанию для раскрывающегося списка.
Список множественного выбора Поле списка выбора, в котором можно выбрать несколько значений.
Телефон Поле, используемое для хранения телефонных номеров.
Эл. адрес Поле, используемое для хранения идентификаторов электронной почты.
URL-адрес Поле, используемое для хранения URL-адресов.
Скайп Поле, используемое для хранения идентификаторов Skype или телефонных номеров.
Пароль Поле, используемое для хранения паролей.
Владелец Поле, определяющее владельца поля, которым может быть группа или отдельный пользователь.

Опишите результат

 <code>Описать результат{
label:String //метка модуля.
name:String //имя модуля, указанное в запросе.
createable:Boolean //true, если вошедшему в систему пользователю разрешено создавать записи типа, и false в противном случае.
updateable:Boolean //true, если вошедшему в систему пользователю разрешено обновлять записи типа, и false в противном случае.
deleteable:Boolean //true, если вошедшему в систему пользователю разрешено удалять записи типа, и false в противном случае.
retrieveable:Boolean //true, если вошедшему в систему пользователю разрешены извлекаемые записи типа, и false в противном случае.
fields:Array //массив типа Field.
}
</код>

Поле

Тип поля

 <code>Тип поля{
<pre class="_fck_mw_lspace"> name:Type //тип поля
referTo:Array //массив простых имен объектов типов записей, на которые может ссылаться поле, он определен только для ссылки FieldType.
picklistValues:Array //массив типа PicklistValue type. он определен только для типа поля списка выбора.
defaultValue:String // значение выбранного по умолчанию значения списка выбора, оно определено только для типа поля списка выбора.
format:String //формат даты, в котором необходимо заполнить поле типа даты, например, мм-дд-гггг. он определен только для типа поля даты.
}
</код>

Значение поля списка выбора должно быть указано явно.

 <code>PicklistValue{
name:String //имя опции списка выбора.
value:String //значение опции списка выбора.
}
</код>

Пример объекта descriptionResult

//$описание из примера выше. Например, print_r($description) может отображать:

 <code>Массив
(
[метка] => Контакты
[имя] => Контакты
[создается] => 1
[обновляемый] => 1
[удаляемый] => 1
[извлекаемый] => 1
[поля] => Массив
(
[0] => Массив
(
[имя] => account_id
[метка] => Имя учетной записи
[обязательно] =>
[тип] => Массив
(
[имя] => ссылка,
[относится к] => Массив
(
"Учетные записи"
)
)
[по умолчанию] =>
[обнуляемый] => 1
[редактируемый] => 1
)
)
)

</код>

CRUD-операции

API предоставляет операции для создания, извлечения, обновления и удаления объектов CRM.

Создавать

Создайте новую запись на сервере.

формат URL

 <code>Тип запроса: POST

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

&sessionName=[идентификатор сеанса]
&элемент=[объект]
&elementType=[тип объекта]

</код>

Создать пример

Пример 1

Вы можете создать контакт с помощью операции создания. В этом случае обязательными полями являются фамилия и заданный_идентификатор_пользователя.

$savedObject — это карта, содержащая поля нового объекта, включая поле идентификатора, которое можно использовать для ссылки на объект.

Пример 2

Создайте контакт и свяжите его с существующей учетной записью.

 <код>//например, 2
//Создать контакт и связать его с существующей учетной записью.
$queryResult = doQuery ("выберите имя учетной записи, идентификатор из учетных записей, где имя учетной записи = 'Просто';");
$accountId = $queryResult[0]['id'];
//Для получения более подробной информации о том, как сделать запрос запроса, обратитесь к примеру операции запроса.

//заполняем данные contact.userId получается из loginResult.
$contactData = array('lastname'=>'Valiant', 'assigned_user_id'=>$userId,'account_id'=>$accountId);
//кодируем объект в формате JSON для связи с сервером.
$objectJson = Zend_JSON::encode($contactData);
//имя модуля, для которого необходимо создать запись.
$moduleName = 'Контакты';

//sessionId получается из loginResult.
$params = array("sessionName"=>$sessionId, "operation"=>'create',
"element"=>$objectJson, "elementType"=>$moduleName);
//Создание должно быть POST-запросом.
$httpc->post("$endpointUrl", $params, true);
$response = $httpc->currentResponse();
// декодируем ответ json encode от сервера.
$jsonResponse = Zend_JSON::decode($response['body']);

//операция прошла успешно получить токен из ответа.
если($jsonResponse['успех']==false)
//обрабатываем случай сбоя.
die('Ошибка создания:'.$jsonResponse['error']['errorMsg']);
$savedObject = $jsonResponse['результат'];
$id = $сохраненныйОбъект['id'];
</код>

Пример 3

Создайте контакт и свяжите его с новой учетной записью.

 <код>//например, 3
<p>//Создайте контакт и свяжите его с новой учетной записью.
</p><p>//заполняем данные Аккаунтов. userId получается из loginResult.
$accountData = array('accountname'=>'Просто', 'assigned_user_id'=>$userId);
//кодируем объект в формате JSON для связи с сервером.
$objectJson = Zend_JSON::encode($accountData);
//имя модуля, для которого необходимо создать запись.
$moduleName = 'Учетные записи';
</p><p>//sessionId получается из loginResult.
$params = array("sessionName"=>$sessionId, "operation"=>'create',
</p>
<pre class="_fck_mw_lspace"> "element"=>$objectJson, "elementType"=>$moduleName);

//Создание должно быть POST-запросом. $httpc->post("$endpointUrl", $params, true); $response = $httpc->currentResponse(); // декодируем ответ json encode от сервера. $jsonResponse = Zend_JSON::decode($response['body']);

//операция прошла успешно получить токен из ответа.
если($jsonResponse['успех']==false)

//обрабатываем случай сбоя.
die('Ошибка создания:'.$jsonResponse['error']['errorMsg']);

$аккаунт = $jsonResponse['результат']; $accountId = $аккаунт['id'];

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

//кодируем объект в формате JSON для связи с сервером. $objectJson = Zend_JSON::encode($contactData); //имя модуля, для которого необходимо создать запись. $moduleName = 'Контакты';

//sessionId получается из loginResult.
$params = array("sessionName"=>$sessionId, "operation"=>'create',

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

//Создание должно быть POST-запросом. $httpc->post("$endpointUrl", $params, true); $response = $httpc->currentResponse(); // декодируем ответ json encode от сервера. $jsonResponse = Zend_JSON::decode($response['body']);

//операция прошла успешно получить токен из ответа.
если($jsonResponse['успех']==false)

//обрабатываем случай сбоя.
die('Ошибка создания:'.$jsonResponse['error']['errorMsg']);
$savedObject = $jsonResponse['результат']; $id = $сохраненныйОбъект['id'];

</код></пре>

СоздатьРезультат

Забрать

Получить существующую запись с сервера.

формат URL

 <code>Тип запроса: GET

http://Simply_url/webservice.php?operation=получить
&session_name=[идентификатор сеанса]
&id=[идентификатор объекта

</код>

Получить пример

Чтобы получить объект по его идентификатору, используйте операцию извлечения. Вы можете получить контакт, созданный в примере создания.

 <code>//sessionId получается из loginResult.
$params = "sessionName=$sessionId&operation=retrive&id=$id";
//Получение должно быть запросом GET.
$httpc->get("$endpointUrl?$params");
$response = $httpc->currentResponse();
// декодируем ответ json encode от сервера.
$jsonResponse = Zend_JSON::decode($response['body']);
//операция прошла успешно получить токен из ответа.

если($jsonResponse['успех']==false)
//обрабатываем случай сбоя.
die('Ошибка получения:'.$jsonResponse['error']['errorMsg']);

$retrievedObject = $jsonResponse['результат'];
</код>

ПолучитьРезультат

Карта, представляющая содержимое объекта на основе объекта CRM. Все ссылочные поля представлены с использованием типа Id . Ключ с именем ID типа Id представляет собой уникальный идентификатор объекта. Это поле присутствует для любого объекта, полученного из базы данных.

Обновлять

Чтобы обновить извлеченный или вновь созданный объект, вы можете использовать операцию обновления.

формат URL

 <code>Тип запроса: POST

http://Simply_url/webservice.php?operation=update
&sessionName=[идентификатор сеанса]
&элемент=[объект]

</код>

Пример обновления

Вы можете добавить к контакту имя.

 <code>//извлеченный объект из предыдущего примера (пример 1).
$retrievedObject['firstname'] = 'Принц';
//кодируем объект в формате JSON для связи с сервером.
$objectJson = Zend_JSON::encode($retrievedObject);

//sessionId получается из результата операции входа в систему.
$params = array("sessionName"=>$sessionId, "operation"=>'update',
"элемент"=>$objectJson);
//обновление должно быть POST-запросом.
$httpc->post("$endpointUrl", $params, true);
$response = $httpc->currentResponse();
// декодируем ответ json encode от сервера.
$jsonResponse = Zend_JSON::decode($response['body']);

//операция прошла успешно получить токен из ответа. если($jsonResponse['успех']==false)
//обрабатываем случай сбоя.
die('Ошибка обновления:'.$jsonResponse['error']['errorMsg']);

//обновить объект результата.
$updatedObject = $jsonResponse['результат'];
</код>

Обновить результат

Карта, представляющая содержимое объекта на основе crmentity. Все ссылочные поля представлены с использованием типа Id . Ключ с именем ID типа Id представляет собой уникальный идентификатор объекта. Это поле присутствует для любого объекта, полученного из базы данных.

Удалить

Чтобы удалить объект, используйте операцию удаления.

формат URL

 <code>Тип запроса: POST

http://Simply_url/webservice.php?operation=удалить
&sessionName=[идентификатор сеанса]
&id=[идентификатор объекта]
</код>

Удалить пример

Операция удаления не имеет результата. Флага успеха достаточно, чтобы узнать, была ли операция успешной.

Запросы

Просто предоставляет простой язык запросов для получения данных. Этот язык очень похож на выборочные запросы в SQL. Есть ограничения: запросы работают с одним модулем, не поддерживаются встроенные запросы и не поддерживаются соединения. Но это по-прежнему мощный способ получения данных из Simply.

Query всегда ограничивает свой вывод 100 записями. Клиентское приложение может использовать оператор limit для получения различных записей.

формат URL

 <code>Тип запроса: GET

http://Simply_url/webservice.php?operation=запрос

&sessionName=[идентификатор сеанса]
&query=[строка запроса]
</код>

Пример запроса

Пример 1

 <code>//запрос на выбор данных с сервера.
$query = "выберите * из контактов, где фамилия = 'Valiant';";
//urlencode для отправки по http.
$queryParam = urlencode($запрос);
//sessionId получается из результата входа в систему.
$params = "sessionName=$sessionId&operation=query&query=$queryParam";
//запрос должен быть GET Request.
$httpc->get("$endpointUrl?$params");
$response = $httpc->currentResponse();
// декодируем ответ json encode от сервера.
$jsonResponse = Zend_JSON::decode($response['body']);

//операция прошла успешно получить токен из ответа. если($jsonResponse['успех']==false)
//обрабатываем случай сбоя.
die('Ошибка запроса:'.$jsonResponse['errorMsg']);

// Массив простых объектов
$retrievedObjects = $jsonResponse['результат'];
</код>

Пример 2

Укажите столбцы, которые будут выбраны для каждой записи.

 <code>//запрос на выбор данных с сервера.
$query = "выберите фамилию,имя,account_id,assigned_user_id из контактов, где lastname='Valiant';";
//urlencode для отправки по http.
$queryParam = urlencode($запрос);
//sessionId получается из результата входа в систему.
$params = "sessionName=$sessionId&operation=query&query=$queryParam";
//запрос должен быть GET Request.
$httpc->get("$endpointUrl?$params");
$response = $httpc->currentResponse();
// декодируем ответ json encode от сервера.
$jsonResponse = Zend_JSON::decode($response['body']);

//операция прошла успешно получить токен из ответа.
если($jsonResponse['успех']==false)
//обрабатываем случай сбоя.
die('Ошибка запроса:'.$jsonResponse['errorMsg']);

// Массив простых объектов
$retrievedObjects = $jsonResponse['результат'];
</код>

Это вернет массив, содержащий массивы, которые представляют поля каждого объекта, соответствующего запросу.

Результат запроса

QueryResult — это массив объектов SimplyObject.

ПростоОбъект

Карта, представляющая содержимое объекта на основе crmentity. Все ссылочные поля представлены с использованием типа Id . Ключ с именем ID типа Id представляет собой уникальный идентификатор объекта. Это поле присутствует для любого объекта, полученного из базы данных.

Формат запроса

 <код>выбрать * | <список_столбцов> | <число(*)>
from <object> [где <условия>]
[упорядочить по <column_list>] [ограничение [<m>, ]<n>];

</код>

Список столбцов в предложении order by может иметь не более двух имен столбцов.

Синхронизировать

Синхронизация вернет объект SyncResult, содержащий сведения об изменениях после модифицированного времени.

формат URL

 <code>Тип запроса: GET

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

&sessionName=[идентификатор сеанса]
&modifiedTime=[отметка времени]
&элементтип=[элементтип]
</код>

elementType — это необязательный параметр. Если указано, возвращаются только изменения для этого модуля после заданного времени. В противном случае возвращаются изменения всех доступных пользователю модулей после заданного времени.

TimeStamp — длинное представление количества секунд, прошедших с эпохи Unix.

Пример 1

Создайте учетную запись и зафиксируйте ее в API синхронизации.

 <code>//время, через которое необходимы все изменения на сервере.
$время = время();
// Создайте некоторые данные сейчас, чтобы они были захвачены ответом API синхронизации.
//Зарегистрироваться.
//заполняем данные Accounts.userId получается из loginResult.
$accountData = array('accountname'=>'Просто', 'assigned_user_id'=>$userId);
//кодируем объект в формате JSON для связи с сервером. $objectJson = Zend_JSON::encode($accountData);
//имя модуля, для которого необходимо создать запись.
$moduleName = 'Учетные записи';

//sessionId получается из loginResult.
$params = array("sessionName"=>$sessionId, "operation"=>'create',
"element"=>$objectJson, "elementType"=>$moduleName);
//Создание должно быть POST-запросом.
$httpc->post("$endpointUrl", $params, true);
$response = $httpc->currentResponse();
// декодируем ответ json encode от сервера.
$jsonResponse = Zend_JSON::decode($response['body']);

//операция прошла успешно получить токен из ответа.
если($jsonResponse['успех']==false)
//обрабатываем случай сбоя.
die('Ошибка создания:'.$jsonResponse['error']['errorMsg']);
$createResult = $jsonResponse['результат'];

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

// синхронизация должна быть запросом GET.
$httpc->get("$endpointUrl?$params");
$response = $httpc->currentResponse();
// декодируем ответ json encode от сервера.
$jsonResponse = Zend_JSON::decode($response['body']);

//операция прошла успешно получить токен из ответа.
если($jsonResponse['успех']==false)
//обрабатываем случай сбоя.
die('Ошибка запроса:'.$jsonResponse['errorMsg']);

// Массив простых объектов
$retrievedObjects = $jsonResponse['результат'];

</код>

Ответ содержит созданную учетную запись.

Пример 2

Создайте учетную запись и контакт, используйте API синхронизации только для модуля «Учетные записи», возвращаются только изменения модуля «Учетные записи».

SyncResult

Объект, представляющий ответ операции синхронизации.

 <code>Результат синхронизации{
updated:[Object] //Список созданных или измененных объектов.
delete:[Id] //Список *Id* удаленных объектов.
lastModifiedTime:Timstamp // время последнего изменения. который можно использовать при следующем вызове API-интерфейса синхронизации для получения всех последних изменений, которые не получил клиент.
}
</код>

Выход

Выйти

Выйдите из сеанса веб-службы, в результате чего сеанс веб-службы станет недействительным для дальнейшего использования.

формат URL

 <code>Тип запроса: GET

http://Simply_url/webservice.php?operation=выход

&sessionName=[идентификатор сеанса]
</код>

Пример

 <code>//SessionId — сеанс, который необходимо завершить.
$params = "operation=logout&sessionName=$sessionId";

//выход из системы должен быть GET-запросом.
$httpc->get("$endpointUrl?$params");
$response = $httpc->currentResponse();
// декодируем ответ json encode от сервера.
$jsonResponse = Zend_JSON::decode($response['body']);

//операция прошла успешно получить токен из ответа.
если($jsonResponse['успех']==false)
//обрабатываем случай сбоя.
die('Ошибка запроса:'.$jsonResponse['errorMsg']);
// успешный сеанс выхода из системы завершен.
</код>

Расширение веб-клиента Simply с помощью веб-службы

Продлить сеанс

Расширяет текущий сеанс веб-клиента Simply на веб-службу и возвращает идентификатор сеанса веб-службы. При работе из веб-клиента Simply пользователь может повторно использовать текущий аутентифицированный сеанс вместо повторного входа в систему для доступа к веб-службе.

Примечание. Если пользователь продлевает сеанс, сеанс будет связан вместе, поэтому выход из одного (веб-сервиса или веб-клиента) также приведет к выходу пользователя из другого. Чтобы операция продления сеанса работала, файлы cookie должны быть включены в клиентском браузере.

формат URL

 <code>Тип запроса: POST

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

</код>

Пример

 <код>
</код>

Этот пример написан на языке Javascript, так как сеанс расширения действителен только в веб-клиенте Simply.

Требования для запуска примера

  • Библиотека JQUERY — для выполнения HTTP-запроса ajax.
  • Библиотека JSON — файл json2.js доступен с Simply на json.org.

Пример 1

 <код>
//параметры операции.
var params = "операция=extendsession";
//конечная точка служб.
var endPointUrl = "http://Simply_url/webservice.php";

//extendSession — это почтовый запрос, вызывающий почтовый запрос jquery http.
$.post(endPointUrl, параметры, функция(результат){
// декодируем ответ json encode от сервера.
вар jsonResponse = json.parse (результат);

//операция прошла успешно получить токен из ответа.
если (jsonResponse ['успех'] == ложь)
//обрабатываем случай сбоя.
die('Ошибка входа:'+jsonResponse['error']['errorMsg']);

// успешный вход в систему извлекает sessionId и userId из LoginResult, чтобы их можно было использовать для дальнейших вызовов.
var sessionId = jsonResponse['result']['sessionName'];
var userId = jsonResponse['result']['userId'];
});
</код>

Обновлено 06/03/2022

Была ли эта статья полезной?

Статьи по теме