Служба поддержки DaData.ru

Иногда мы отвечаем на ваши вопросы даже ночью. Угадайте, почему? Мы просто любим наш сервис и хотим, чтобы он развивался в исключительно хорошую сторону. А ваши вопросы очень помогают нам в этом.


Именно здесь вы можете помочь нам сделать DaData.ru лучше! Отправьте сообщение, и мы ответим вам в течение 1-2 дней (а может, уже и через час, если мы еще не уснули или не в кино :)


P.S. Оставляйте свои идеи — чего не хватает сейчас сервису. И голосуйте за чужие идеи. Чем больше голосов набирает идея, тем скорее мы ее делаем.

0
Completed
Anonymous 2 years ago in Подсказки • updated by Антон 2 years ago 3
Добрый день. Использую jquery плагин подсказок. Несколько раз сталкивался с долгим ответом от сервера dadata. Рациональное решение - прописать timeout, после которого пользователь бы вводил вручную данные без подсказок. В REST API можно прописать timeout явно. Как это сделать в jquery плагине?
Заранее спасибо.
Answer
Антон 2 years ago
Добавили параметр timeout, по умолчанию 3 секунды. Задается в параметрах плагина:
$("#address").suggestions({
  ...,
  timeout: 2000 // в миллисекундах
});
0
Not a bug
Anonymous 3 years ago in Подсказки • updated by Антон 3 years ago 3
Никакой реакции на ввод текста в поля.
0
Fixed
Кирилл 2 years ago in Подсказки • updated by Антон 5 months ago 7
У Вас явная ошибка в jQuery плагине.
если передать плагину следующий параметр
{ bounds: "city-settlement" }, тогда при вводе "Железнодорожный" в подсказках будет показываться "Московская обл, г Железнодорожный", а при выборе этого варианта - в поле запишется "г Железнодорожный", а должно писаться именно как в подсказке.

Чтобы изменить это поведение, я изменил параметр на { bounds: "region-area-city-settlement" }, тогда при вводе "Железнодорожный" - все правильно и показывается в подсказках и при выборе "Московская обл, г Железнодорожный"
а вот для запроса "Москва" - в подсказках будет показываться "г Москва" а при выборе - "г Москва, г Москва", соответственно для этого варианта ситуация следующая - когда происходит выбор варианта подсказки - к вам на сервер уходит запрос с параметром { count: 1 }, он возвращает объект suggestion, внутри которого поле value заполнено как надо "г Москва", потом этот объект suggestion попадает вот в эту функцию:

checkValueBounds: function (suggestion) {
    var that = this,
        valueData;

    // If any bounds set up
    if (that.bounds.own.length && that.type.composeValue) {
        valueData = that.copyBoundedData(suggestion.data, that.bounds.own);
        suggestion.value = that.type.composeValue(valueData);
    }
}
И здесь поле value перезаписывается через функцию composeValue
composeValue: function (data) {
    return utils.compact([
        data.region_with_type || utils.compact([data.region, data.region_type]).join(' '),
        data.area_with_type || utils.compact([data.area_type, data.area]).join(' '),
        data.city_with_type || utils.compact([data.city_type, data.city]).join(' '),
        data.settlement_with_type || utils.compact([data.settlement_type, data.settlement]).join(' '),
        data.street_with_type || utils.compact([data.street_type, data.street]).join(' '),
        utils.compact([data.house_type, data.house, data.block_type, data.block]).join(' '),
        utils.compact([data.flat_type, data.flat]).join(' '),
        data.postal_box ? 'а/я ' + data.postal_box : null
    ]).join(', ');
}
Но она очевидно работает не правильно, т.к. вы в обновлении 15.7 - сделали следующий пункт:
Адрес одной строкой формируем с учетом требований Почты России: если город — центр региона, название региона не пишется (г Новосибирск, ул Абаканская, д 21). Если центр района — не пишется название района (Московская обл, г Одинцово, ул Ракетчиков).
А в функции composeValue - value просто формируется объединеннием всего подряд - вот и получается что от сервера приходит правильный value "г Москва", а функция composeValue возвращает неправильное значение "г Москва, г Москва".

Т.к. запрос к вашему серверу при выборе подсказки уходит с параметрами { count: 1, from_bound: {value: "region"}, to_bound: {value: "settlement"} }, т.е. с учетом bounds, то и ответ приходит правильно отформатированный уже, поэтому по-сути вызов composeValue - просто лишний, поэтому у себя я просто исправил функцию checkValueBounds вот так:
checkValueBounds: function (suggestion) {
    return;
    var that = this,
        valueData;

    // If any bounds set up
    if (that.bounds.own.length && that.type.composeValue) {
        valueData = that.copyBoundedData(suggestion.data, that.bounds.own);
        suggestion.value = that.type.composeValue(valueData);
    }
}


P.S. Еще у меня есть проблема - наша компания задумывается о приобретении standalone версии подсказок, чтобы обезопасить себя от вопросов доступности вашего сервиса, но мне никак не может ваш менеджер толком объяснить - что именно будет работать по-другому в standalone версии, но говорит что точно чего-то не будет, а чего до конца не ясно, в общем плавает ваш менеджер в этом вопросе... Я предложил чтобы не разбираться с этим вопросом на словах, а опробовать в деле - можете ли вы запустить у себя отдельную чистую standalone версию, и давать к ней доступ хотя бы по запросу через менеджера, а то как-то стремно покупать лицензию на что-то что работает так же, но только не совсем точно так же, а вот по-другому:) Хочется перед покупкой оттестировать именно на том функционале который и будет приобретен.

P.P.S. Спасибо за ваш сервис - все очень круто!)
0
Not a bug
Stas 2 years ago in Подсказки • updated 2 years ago 12
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "Authorization: Token ****key***" -d "{ \"count\": 1, \"query\": \"Москва, Ленинский пр-кт, 99\" }" https://dadata.ru/api/v2/suggest/address
возвращает:
{"suggestions":[]}
При том всё где ">1" по 2 и более объекта масиве:
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "Authorization: Token ****" -d "{ \"count\": 2, \"query\": \"Москва, Ленинский пр-кт, 99\" }" https://dadata.ru/api/v2/suggest/address
{"suggestions":[{"value":"Ханты-Мансийский Автономный округ - Югра, г Сургут, ул Курортная, д 99б","unrestricted_value":"Ханты-Мансийский Автономный округ - Югра, г Сургут, ул Курортная, д 99б","data":{"qc_complete":null,"qc_house":null,"qc_geo":null,"postal_code":"628403","postal_box":null,"country":"Россия","region_with_type":"Ханты-Мансийский Авт
╨╛╨╜╨╛╨╝╨╜╤ï╨╣ ╨╛╨║╤Ç╤â╨│ - ╨«╨│╤Ç╨░","region_type":"╨░╨╛","region_type_full":"╨░╨▓╤é╨╛╨╜╨╛╨╝╨╜╤ï╨╣ ╨╛╨║╤Ç╤â╨│","region":"╨Ñ╨░╨╜╤é╤ï-╨£╨░╨╜╤ü╨╕╨╣╤ü╨║╨╕╨╣ ╨É╨▓╤é╨
╛╨╜╨╛╨╝╨╜╤ï╨╣ ╨╛╨║╤Ç╤â╨│ - ╨«╨│╤Ç╨░","area_with_type":null,"area_type":null,"area_type_full":null,"area":null,"city_with_type":"╨│ ╨í╤â╤Ç╨│╤â╤é","city_type":"╨│","city_type_full":"╨│╨╛╤Ç╨╛╨┤","city":"╨í╤â╤Ç╨│╤â╤é","settlement_with_type":null,"settlement_type":null,"settlement_type_full":null,"settlement":null,"street_with_type":"╤â╨╗ ╨Ü╤â╤Ç╨╛╤Ç╤é╨╜╨░╤Å","street_type":"╤â╨╗","street_type_full":"╤â╨╗╨╕╤å╨░","street":"╨Ü╤â╤Ç╨╛╤Ç╤é╨╜╨░╤Å","house_type":"╨┤","house_type_full":"╨┤╨╛╨╝","house":"99╨▒","block_type":null,"block":null,"flat_area":null,"flat_type":null,"flat":null,"fias_id":null,"kladr_id":"8600001000000480006","tax_office":"8602","tax_office_legal":null,"okato":"71136000000","oktmo":null,"geo_lat":null,"geo_lon":null,"unparsed_parts":null,"qc":null}},{"value":"╤Ç╨╡╤ü╨┐ ╨í╨╡╨▓╨╡╤Ç╨╜╨░╤Å ╨₧
сетия - Алания, г Владикавказ, ул Ардонская, д 99","unrestricted_value":"респ Северная Осетия - Алания, г Владикавказ, ул Ардонская, д 99","data":{"qc_complete":null,"qc_house":null,"qc_geo":null,"postal_code":"362008","postal_box":null,"country":"Россия","region_with_type":"респ Северная Осетия - Алания","region_type":"респ","region_type_full":"республик
╨░","region":"╨í╨╡╨▓╨╡╤Ç╨╜╨░╤Å ╨₧╤ü╨╡╤é╨╕╤Å - ╨É╨╗╨░╨╜╨╕╤Å","area_with_type":null,"area_type":null,"area_type_full":null,"area":null,"city_with_type":"╨│ ╨Æ╨╗╨░╨
┤╨╕╨║╨░╨▓╨║╨░╨╖","city_type":"╨│","city_type_full":"╨│╨╛╤Ç╨╛╨┤","city":"╨Æ╨╗╨░╨┤╨╕╨║╨░╨▓╨║╨░╨╖","settlement_with_type":null,"settlement_type":null,"settlement_type_full":null,"settlement":null,"street_with_type":"╤â╨╗ ╨É╤Ç╨┤╨╛╨╜╤ü╨║╨░╤Å","street_type":"╤â╨╗","street_type_full":"╤â╨╗╨╕╤å╨░","street":"╨É╤Ç╨┤╨╛╨╜╤ü╨║╨░╤Å","house_type":"╨┤","house_type_full":"╨┤╨╛╨╝","house":"99","block_type":null,"block":null,"flat_area":null,"flat_type":null,"flat":null,"fias_id":null,"kladr_id":"1500000100000080017","tax_office":"1513","tax_office_legal":null,"okato":"90401000000","oktmo":null,"geo_lat":null,"geo_lon":null,"unparsed_parts":null,"qc":null}}]}

Мне всё равно нужен первый элемент, но без count=1 нету геолокации, если я верно понял.
Answer
Антон 2 years ago
Полный тип записываем именно для поселка, потому что он сокращается как «п», и точно также сокращается поселение. Поэтому пишем полный тип, чтобы избежать неоднозначности.
0
Answered
Anonymous 3 years ago in Подсказки • updated by Анастасия 8 months ago 3
Планируется модуль для Престашоп 1.4х ?
Answer
Антон 3 years ago
Нет, но есть модуль для 1.5+
0
Answered
Дмитрий «campusboy» Кобяков 2 years ago in Подсказки • updated by Антон 2 years ago 1

Здравствуйте. Использую модуль "Организации", получаю юридический адрес без индекса. Как получить индекс?

0
Answered
Ярослав Дунаев 2 years ago in Подсказки • updated by Антон 2 years ago 7

Добрый день.

Суть вопроса такова. На onSelect даю инпуту событие blur(). В ADDRESS работает великолепно. В EMAIL и PARTY упорно держит курсор на поле и не переставляет его на другое место. Иных перекрывающих blur/on ('blur') событий/масок и тп на эти инпуты нет. Даже не могу зафокусить другое поле на onSelect (в ADDRESS могу - заполняемые зависимые поля или независимые поля с раскладываемыми значениями - не важно).

Answer
Антон 2 years ago

Добрый день!

Вижу проблему. Как понимаю, речь идет только о фокусе мышью, с клавиатуры работает. Быстрое решение – в onSelect все операции с фокусом сделать через setTimeout(..., 0)

0
Answered
Anonymous 3 years ago in Подсказки • updated by Антон 3 years ago 4
Как получить общее количество организаций по введенным данным? Мы выводим последние 20, хотелось бы подсчитать полное количество для статистики. Спасибо.
0
Answered
Anonymous 3 years ago in Подсказки • updated by Антон 3 years ago 1
Здравствуйте, меня интересует следующий вопрос: можно ли как-то получить данные из автоматического определения геолокации при использовании jQuery плагина с помощью javascript?
Answer
Антон 3 years ago
Добрый день! Прямо сейчас можно получить только полный адрес, включая часть, определенную через геолокацию. Но в сентябре добавим возможность получить именно данные геолокации.