Пример с фильтром на Java, фильтрация по пользовательскому полю - при этом Битрикс вернет контакт в "неполном" виде, поэтому нужные вам поля, указывайте в запросе:
Пример на Java:
1. Метод сервиса, отвечающего за подачу запроса:
Код |
---|
public String getContactByUF_CRM_1575385113(String myField) {//UF_CRM_1575385113 - пользовательское поле в Битрикс24
MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();
paramsMap.add("FILTER[UF_CRM_1575385113]", myField);
paramsMap.add("SELECT[]", "ID");
paramsMap.add("SELECT[]", "NAME");
paramsMap.add("SELECT[]", "LAST_NAME");
paramsMap.add("SELECT[]", "TYPE_ID");
paramsMap.add("SELECT[]", "COMMENTS");
paramsMap.add("SELECT[]", "EMAIL");
paramsMap.add("SELECT[]", "UF_CRM_1575385113");
String response = null;
try {
response = callApiGet("crm.contact.list", paramsMap);
logger.debug("UF_CRM_1575385113 {}", response);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
return response; // возвращаем ответ Битрикс
} |
2. Десериализация ответа Битрикс:
Код |
---|
public List<BitrixContactDto> deserializeContacts(String contactJsonString) {
List<BitrixContactDto> contacts = new ArrayList<>();
if (contactJsonString != null) {
ArrayNode arrayNode = null;
try {
arrayNode = (ArrayNode) objectMapper.readTree(contactJsonString).get("result");
} catch (IOException e) {
e.printStackTrace();
}
if (arrayNode != null) {
arrayNode.forEach(jsonNode -> contacts.add(deserializeBitrixContactDto(jsonNode)));
}
}
return contacts;
} |
3. Метод заполнения сущности BitrixContactDto:
Код |
---|
private BitrixContactDto deserializeBitrixContactDto(JsonNode data) {
BitrixContactDto bitrixContactDto = new BitrixContactDto();
bitrixContactDto.setId(data.get("ID").asLong());
bitrixContactDto.setName(data.get("NAME").asText());
bitrixContactDto.setLastName(data.get("LAST_NAME").asText());
bitrixContactDto.setTypeId(data.get("TYPE_ID").asText());
bitrixContactDto.setComments(data.get("COMMENTS").asText());
if (data.get("EMAIL") != null) {
Set<String> emails = data.get("EMAIL").findValuesAsText("VALUE")
.stream().map(currentEmail -> currentEmail.toLowerCase()).collect(Collectors.toSet());
bitrixContactDto.setEmail(emails);
}
return bitrixContactDto;
} |
4. Объект BitrixContactDto:
Код |
---|
public class BitrixContactDto { private Long id;
private String name;
private String lastName;
private String typeId;
private String comments;
private Set<String> email;
public BitrixContactDto() {}
public BitrixContactDto(Long id, String name, String lastName, String typeId, String comments) {
this.id = id;
this.name = name;
this.lastName = lastName;
this.typeId = typeId;
this.comments = comments;
}
} |