К содержанию

[DaData] - интеграция с сервисом DaData

[DaData] — интеграция с сервисом DaData.
DaData.ru исправляет проблемные адреса, ФИО и телефоны автоматически, по 5–10 копеек за запись.
А бесплатные Подсказки помогают клиентам за пару секунд вводить правильные адреса, ФИО, email, реквизиты компаний и банков.
в пакете реализованы методы:
— подсказок
— стандартизации
— геолокации
— актуальности справочников
— баланса
— поиск адреса по коду КЛАДР или ФИАС

пример работы посмотреть тут location.vgrish.ru/index.php?id=10

сниппет dadata.form
Подключение подсказок к любым полям формы. Для того чтобы подключить подсказки нужно указать селектор контейнера для поиска полей и перечислить необходимые поля.
subject и master — зависимые поля.

параметры сниппета
  • apiMode — Режим работы
  • apiToken — API ключ
  • apiSecret — Секретный ключ для стандартизации
  • suggestions — Строка параметров подсказок, закодированная в JSON
  • actionUrl — Коннектор для обработки ajax запросов
  • selector — Имя CSS класса, который будеи использован как jQuery селектор при выборе контейнера для поиска input
  • objectName — Имя объекта для инициализации в подключаемом javascript. По умолчанию «dadata»
  • frontendCss — Файл с css стилями для подключения на фронтенде
  • frontendJs — Файл с javascript для подключения на фронтенде
  • jqueryJs — Файл с jquery.js для подключения на фронтенде
пример подключения подсказок для ввода ФИО (Форма 1)

[[!dadata.form?
	&suggestions=`{
        'fullname': {
            'type': 'NAME',
            'params': {
                
            },
            'autoSelectFirst':1,
            'count':6,
            'subject': {
                'surname-name': 'SURNAME',
                'fullname-name': 'NAME',
                'fullname-patronymic': 'PATRONYMIC'
            }
        },
        'surname-name': {
            'type': 'NAME',
            'params': {
                'parts': ['SURNAME']
            },
            'master': {
                'fullname': 'SURNAME'
            }
        },
        'fullname-name': {
            'type': 'NAME',
            'params': {
                'parts': ['NAME']
            },
            'master': {
                'fullname': 'NAME'
            }
        },
        'fullname-patronymic': {
            'type': 'NAME',
            'params': {
                'parts': ['PATRONYMIC']
            },
            'master': {
                'fullname': 'PATRONYMIC'
            }
        }
	}`
]]

пример подключения подсказок (Форма 2)
[[!dadata.form?
    &selector=`#dadata-form2`
	&suggestions=`{
        'email': {
            'type': 'EMAIL'
        },
        'address': {
            'type': 'ADDRESS'
        },
        'party': {
            'type': 'PARTY',
            'restrict_value': 'true'
        },
        'inn': {
            'type': 'PARTY',
            'restrict_value': 'true',
            'params': {
                'return': {
                    'keys': ['data.inn']
                }
            }
        },
        'bank': {
            'type': 'BANK'
        }
	}`
]]

пример подключения подсказок (AjaxForm)
[[!dadata.form?
        &selector=`.ajax_form.af_example`
	&suggestions=`{
        'name': {
            'type': 'NAME'
        },
        'email': {
            'type': 'EMAIL'
        }
	}`
]]

пример для адреса (Форма 4 (адрес))
[[!dadata.form?
    &selector=`#dadata-form4`
	&suggestions=`{
        'address-input': {
            'type': 'ADDRESS',
            'params': {
                
            },
            'subject': {
                'address-postalcode': 'postal_code',
                'address-region': 'region',
                'address-city': 'city',
                'address-street': 'street_with_type',
                'address-house': 'house',
                'address-flat': 'flat'
            }
        },
        'address-postalcode': {
            'type': 'ADDRESS',
            'bounds': 'postal-code',
            'params': {
                'return': {
                    'keys': ['data.postal_code']
                }
            },
            'master': {
                'address-input': 'postal_code'
            }
        },
        'address-region': {
            'type': 'ADDRESS',
            'bounds': 'region-area',
            'params': {
                'return': {
                    'keys': ['data.region_with_type']
                }
            },
            'master': {
                'address-input': 'region_with_type'
            }
        },
        'address-city': {
            'type': 'ADDRESS',
            'bounds': 'city-settlement',
            'params': {
                'return': {
                    'keys': ['data.city']
                }
            },
            'master': {
                'address-input': 'city'
            }
        },
        'address-street': {
            'type': 'ADDRESS',
            'bounds': 'street',
            'params': {
                'return': {
                    'keys': ['data.street']
                }
            },
            'master': {
                'address-input': 'street'
            }
        },
        'address-house': {
            'type': 'ADDRESS',
            'bounds': 'house',
            'params': {
                'return': {
                    'keys': ['data.house']
                }
            },
            'master': {
                'address-input': 'house'
            }
        },
        'address-flat': {
            'type': 'ADDRESS',
            'params': {
                'return': {
                    'keys': ['data.flat']
                }
            },
            'master': {
                'address-input': 'flat'
            }
        }
	}`
]]

подключение к форме заказа (miniShop2)
[[!dadata.form?
    &selector=`#msOrder`
	&suggestions=`{
        'address': {
            'type': 'ADDRESS',
            'params': {
                
            },
            'subject': {
                'index': 'postal_code',
                'region': 'region_with_type',
                'city': 'city',
                'street': 'street_with_type',
                'building': 'house'
            }
        },
        'index': {
            'type': 'ADDRESS',
            'bounds': 'postal-code',
            'params': {
                'return': {
                    'keys': ['data.postal_code']
                }
            },
            'master': {
                'address': 'postal_code'
            }
        },
        'region': {
            'type': 'ADDRESS',
            'bounds': 'region-area',
            'params': {
                'return': {
                    'keys': ['data.region_with_type']
                }
            },
            'master': {
                'address': 'region_with_type'
            }
        },
        'city': {
            'type': 'ADDRESS',
            'bounds': 'city-settlement',
            'params': {
                'return': {
                    'keys': ['data.city']
                }
            },
            'master': {
                'address': 'city'
            }
        },
        'street': {
            'type': 'ADDRESS',
            'bounds': 'street',
            'params': {
                'return': {
                    'keys': ['data.street']
                }
            },
            'master': {
                'address': 'street'
            }
        },
        'building': {
            'type': 'ADDRESS',
            'bounds': 'house',
            'params': {
                'return': {
                    'keys': ['data.house']
                }
            },
            'master': {
                'address': 'house'
            }
        },
        
        'email': {
            'type': 'EMAIL'
        },
        'receiver': {
            'type': 'NAME'
        }
	}`
]]

Код на github, создавайте isuue
Компонент условно-бесплатный, буду рад donation
Володя
Володя
15 декабря 2015, 11:01
modx.pro
8 214
Поблагодарить автора Отправить деньги
Реклама

Комментарии: 46

Виталий
Виталий Проверенный
15 декабря 2015, 14:15
Володя, привет.

Я так понимаю, что это новая версия этого дополнения: modstore.pro/packages/integration/msdadata?
Или здесь принципиальное отличие, что он не заточен под MS2?

Обновишь в Магазине? Сделать его бесплатным?
    Володя
    Володя Эксперт
    15 декабря 2015, 14:21
    Привет. Да тот я убрать совсем хотел.
    Назвал условно-бесплатным оттого что выложил на гитхаб, кому надо бесплатно тот скачает, кто хочет поддержки — в поддержку. Так что думаю символическая цена в 490 руб. будет адекватна.
      Виталий
      Виталий Проверенный
      15 декабря 2015, 14:23
      Понятно.

      Да, вполне разумно.

      Тогда ждем заявку на модерацию.
        Володя
        Володя Эксперт
        15 декабря 2015, 14:25
        да у меня небольшая заминка.

        Видимо назвал неверно или не нравится что есть modx в имени
          Виталий
          Виталий Проверенный
          15 декабря 2015, 14:27
          Может быть без «modx-» попробовать?
          Вроде у нас пока всё только для него.
            Володя
            Володя Эксперт
            15 декабря 2015, 14:28
            сейчас попробую
          Володя
          Володя Эксперт
          15 декабря 2015, 14:44
          отправил
            Виталий
            Виталий Проверенный
            15 декабря 2015, 15:01
            Опубликовал новое дополнение и отключил старое.
              Володя
              Володя Эксперт
              15 декабря 2015, 15:03
              Спасибо! Очень оперативно )
                Володя
                Володя Эксперт
                15 декабря 2015, 15:04

                наверно из за описания?
                  Виталий
                  Виталий Проверенный
                  15 декабря 2015, 15:10
                  Поправил. А у тебя масштаб 100%?
                    Володя
                    Володя Эксперт
                    15 декабря 2015, 15:11
                    да сотка. Сейчас все ок
        Пётр Молчанов
        Пётр Молчанов Старожил
        15 декабря 2015, 15:34
        Наверное, стоит apiToken и apiSecret убрать в конфиг. Думаю, в рамках одного проекта эти значения везде одинаковы
          Володя
          Володя Эксперт
          15 декабря 2015, 16:15
          да, наверно стоит добавить в настройки. Ато как я щас сделал — запалил токены тут и полез менять.
          Хорошо когда все в одном месте, это недолго. А так бы на рабочем проекте замучался.
            Володя
            Володя Эксперт
            17 декабря 2015, 12:29
            Добавил настройки для apiToken и apiSecret
            Stan Ezersky
            Stan Ezersky Проверенный
            16 декабря 2015, 20:23
            Только купил, даже попробовать не успел, как аддон убрали из магазина.
            Печаль
              Stan Ezersky
              Stan Ezersky Проверенный
              16 декабря 2015, 20:52
              Документация осталась по старому расширению?
              Виталий
              Виталий Проверенный
              16 декабря 2015, 20:55
              Я считаю, что если сняли с продажи предыдущий компонент — нужно дать доступ к новому. Напиши в тех. поддержку по этому поводу Володе, пожалуйста.

              Володя, что думаешь?
                Володя
                Володя Эксперт
                16 декабря 2015, 21:48
                да я согласен, как в случае с modstore.pro/packages/ecommerce/quickview когда все старые подписки перенесли на новый пакет.
                Но тогда мне дали понять что этот механизм переноса неудобен. И я не дергаюсь. Пакет в свободном доступе есть на github.com/vgrish/dadata и так же можно загрузить уже собранный пакет тут modx.pro/components/7294-gl-geo-location/#comment-51220

                Если возможно дать доступ к новому пакету просто по запросу в ТП, думаю так будет разумно.
                  Виталий
                  Виталий Проверенный
                  16 декабря 2015, 21:52
                  Ну и отлично, договорились.

                  Все желающие по запросу через тех. поддержку или по заявке на info@modstore.pro смогут получить обновление msDaData → DaData.

                  Stan Ezersky, что-то у тебя 6 аккаунтов в Магазине. Дай актуальный логин, пожалуйста.
                    Stan Ezersky
                    Stan Ezersky Проверенный
                    16 декабря 2015, 22:17
                    Свяжемся!
              Володя
              Володя Эксперт
              17 декабря 2015, 14:47
              дополнил примером подсказок адреса (Форма 4)
                Дмитрий Аюпов
                Дмитрий Аюпов Старожил
                19 декабря 2015, 07:27
                Не совсем понял, этот компонент поддерживает стандартизацию или нет?
                Нет ни одного примера стандартизации, зато есть поле для ключа стандартизации.
                Если можно, то просьба рассмотреть телефон.
                  Володя
                  Володя Эксперт
                  19 декабря 2015, 09:22
                  Методы стандартизации есть, обертки на js чтобы все это работало не написано еще.
                  В планах есть написать как будет необходимость.
                    Володя
                    Володя Эксперт
                    20 декабря 2015, 09:21
                    минимальное пополнение баланса для стандартизации от 1 000 руб. и просто так закидывать туда деньги мне неинтересно.
                    если есть необходимость стандартизации можешь ускорить — оплатить стандартизацию и предоставив ключ для теста мне на время написания этого функционала.

                  Володя
                  Володя Эксперт
                  19 декабря 2015, 10:35
                  дополнил примером подключения к форме заказа (miniShop2)
                    Юрий
                    Юрий Старожил
                    13 февраля 2017, 14:34
                    Нужный компонент думаю для любого проекта! Подскажите пожалуйста три дня уже бъюсь, не хочет подсказывать, колесо крутиться и больше ничего! чего может не хватать, key и api прописываю!
                      Володя
                      Володя Эксперт
                      13 февраля 2017, 17:19
                      попробуйте добавить файл .htaccess в папку
                      /assets/components/dadata/

                      RewriteCond %{HTTP:Authorization} !^$
                      RewriteRule ^(.*)$ $1?http_auth=%{HTTP:Authorization} [QSA]
                        Юрий
                        Юрий Старожил
                        14 февраля 2017, 09:56
                        К сожалению не помогло! :(
                          Володя
                          Володя Эксперт
                          14 февраля 2017, 09:58
                          Если компонент установлен через магазин — напишите в ТП с указанием доступов к админке, посмотрю в чем дело…
                      Максим
                      Максим Старожил
                      15 апреля 2018, 21:08
                      В параметре «subject» не получается использовать данные 2го уровня в многомерных объектах. Например, не работает следующий код:
                      ,"company" : {
                              	"type" : "PARTY"
                                  ,"subject": {
                                      "contragent[INN]"     : "INN"
                                      ,"contragent[KPP]"    : "KPP"
                                      ,"contragent[OGRN]"   : "OGRN"
                                      ,"contragent[OGRNIP]" : "OGRNIP"
                                      ,"contragent[legalAddress]" : "address.value"
                                  }
                              }
                      Если написать ,«contragent[legalAddress]»: «address», то в инпуте пишется [object Object].

                      Можно, предположить, что я делаю что-то не так, но вот тут такая же проблема: github.com/vgrish/dadata/issues/3

                      Скопировал оттуда код, ничего не менял в нем, он тоже не работает с многомерными объектами:
                      [[!dadata.form?
                          &selector=`#dadata-form5`
                      	&suggestions=`{
                              'inn': {
                                  'type': 'PARTY',
                                  'restrict_value': 'true',
                                  'params': {
                                      'return': {
                                          'keys': ['data.inn']
                                      }
                                  },
                                  'subject': {
                                      'kpp': 'kpp',
                                      'ogrn': 'ogrn',
                                      'name-full':'name.full',
                                      'name-short_with_opf':'name.short_with_opf'
                                  }
                              }
                      	}`
                      ]]
                      П.С. в инструкции нет примера вызова для формы 5.
                      П.С.2: Может быть последнее обновление не было выложено? отсюда и проблемы?
                        Володя
                        Володя Эксперт
                        16 апреля 2018, 08:22
                        В параметре «subject» не получается использовать данные 2го уровня в многомерных объектах. Например, не работает следующий код:
                        Используйте расширенный класс обработки данных, он идет в комплекте с пакетом, нужно только его прописать в настройках.
                        dadata_format_handler_class —
                        Extended
                          Максим
                          Максим Старожил
                          16 апреля 2018, 08:46
                          нужно только его прописать в настройках.
                          dadata_format_handler_class
                          О каких настройках идет речь? если системные настройки MODx, то ключа с названием dadata_format_handler_class там нет. Его нужно самому создать?
                            Максим
                            Максим Старожил
                            16 апреля 2018, 08:50
                            Да, действительно, нужно самому вручную создать данный параметр. Все заработало, спасибо.
                            Только не понятно, почему нигде про это не написано.
                          Володя
                          Володя Эксперт
                          16 апреля 2018, 08:24
                          П.С. в инструкции нет примера вызова для формы 5.
                          [[!dadata.form?
                              &selector=`#dadata-form5`
                          	&suggestions=`{
                                  'inn': {
                                      'type': 'PARTY',
                                      'restrict_value': 'true',
                                      'params': {
                                          'return': {
                                              'keys': ['data.inn']
                                          }
                                      },
                                      'subject': {
                                          'kpp': 'kpp',
                                          'ogrn': 'ogrn',
                                          'name-full':'name.full',
                                          'name-short_with_opf':'name.short_with_opf'
                                      }
                                  }
                          	}`
                          ]]
                            Володя
                            Володя Эксперт
                            16 апреля 2018, 08:24
                            П.С.2: Может быть последнее обновление не было выложено? отсюда и проблемы?
                            Свежая версия пакета всегда доступна в репозитории магазина
                              Андрей
                              Андрей Старожил
                              19 мая 2019, 16:25
                              Установил компонент с гитхаба вроде бы все успешно, но сам сниппет пустой. Это нормально?
                              Ну и подозрений добавляет что в итоге ничего не работает. Руками добавил скрипты dadata на страницу, указываю id формы и поля как в примере, но ничего не происходит. Пытаюсь подключить подсказки.
                                Андрей
                                Андрей Старожил
                                19 мая 2019, 22:15
                                с пустым сниппетом разобрался, это я неверно установил, но все равно не работает. колесико крутится, но подсказок не появляется.
                                  Андрей
                                  Андрей Старожил
                                  19 мая 2019, 22:46
                                  разобрался. оказывается
                                  <div class="suggestion">
                                  это важно.
                                Сергей
                                Сергей Проверенный
                                02 июня 2020, 18:18
                                Добавил сниппет в корзину:
                                {$_modx->runSnippet('!dadata.form', [
                                    'apiToken'    =>'#',
                                    'apiSecret'   =>'#',
                                    'selector'    =>'#msOrder',
                                    'suggestions' =>'{"receiver":{"type":"NAME","params":{"parts":["SURNAME","NAME","PATRONYMIC"]}}}'
                                ])}

                                <form role="form" id="msOrder" method="post">
                                <input type="text" id="receiver" placeholder="ФИО получателя *" name="receiver" class="form-control  required">
                                </form>
                                но не выводить подсказки.

                                Ошибки отсутствуют.
                                Js скрипты работают.
                                Пробовал в другом месте тоже самое.
                                В чем может быть проблема?
                                  Сергей
                                  Сергей Проверенный
                                  04 июня 2020, 12:23
                                  Проблему решил:
                                  Необходимо было не добавить файл в /assets/components/dadata/,
                                  а добавить строчки в корневой файл — .htaccess:
                                  RewriteCond %{HTTP:Authorization} !^$
                                  RewriteRule ^(.*)$ $1?http_auth=%{HTTP:Authorization} [QSA]
                                  Сергей
                                  Сергей Проверенный
                                  04 июня 2020, 12:44
                                  Народ кто то сталкивался с такой проблемой:
                                  Для реализаций использовал (Форма 4).
                                  Но в корзине minishop2 при выборе подсказки в поле Адрес — поля (индекс, область, город ...) с начало заполняются, а потом рандомные исчезают мгновенно, data-oldvalue выводиться. Если перезагрузить страницу то все поля которые были пусты буду заполнены. В чем может быть проблема?
                                    Дмитрий
                                    Дмитрий Старожил
                                    28 декабря 2020, 14:08
                                    У меня такая же проблема. При выборе организации поля сначала заполняются, а затем очищаются и значения остаются в data-oldvalue.
                                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                  46