[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
5 997
+5
Поблагодарить автора Отправить деньги

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

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

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

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

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

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

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

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

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

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

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

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

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

                  RewriteCond %{HTTP:Authorization} !^$
                  RewriteRule ^(.*)$ $1?http_auth=%{HTTP:Authorization} [QSA]
                    Юрий
                    14 февраля 2017, 09:56
                    0
                    К сожалению не помогло! :(
                      Володя
                      14 февраля 2017, 09:58
                      0
                      Если компонент установлен через магазин — напишите в ТП с указанием доступов к админке, посмотрю в чем дело…
                  Максим
                  15 апреля 2018, 21:08
                  0
                  В параметре «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
                    0
                    В параметре «subject» не получается использовать данные 2го уровня в многомерных объектах. Например, не работает следующий код:
                    Используйте расширенный класс обработки данных, он идет в комплекте с пакетом, нужно только его прописать в настройках.
                    dadata_format_handler_class
                    Extended
                      Максим
                      16 апреля 2018, 08:46
                      0
                      нужно только его прописать в настройках.
                      dadata_format_handler_class
                      О каких настройках идет речь? если системные настройки MODx, то ключа с названием dadata_format_handler_class там нет. Его нужно самому создать?
                        Максим
                        16 апреля 2018, 08:50
                        0
                        Да, действительно, нужно самому вручную создать данный параметр. Все заработало, спасибо.
                        Только не понятно, почему нигде про это не написано.
                      Володя
                      16 апреля 2018, 08:24
                      0
                      П.С. в инструкции нет примера вызова для формы 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
                        0
                        П.С.2: Может быть последнее обновление не было выложено? отсюда и проблемы?
                        Свежая версия пакета всегда доступна в репозитории магазина
                          Андрей
                          19 мая 2019, 16:25
                          0
                          Установил компонент с гитхаба вроде бы все успешно, но сам сниппет пустой. Это нормально?
                          Ну и подозрений добавляет что в итоге ничего не работает. Руками добавил скрипты dadata на страницу, указываю id формы и поля как в примере, но ничего не происходит. Пытаюсь подключить подсказки.
                            Андрей
                            19 мая 2019, 22:15
                            0
                            с пустым сниппетом разобрался, это я неверно установил, но все равно не работает. колесико крутится, но подсказок не появляется.
                              Андрей
                              19 мая 2019, 22:46
                              0
                              разобрался. оказывается
                              <div class="suggestion">
                              это важно.
                            Сергей
                            02 июня 2020, 18:18
                            0
                            Добавил сниппет в корзину:
                            {$_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
                              0
                              Проблему решил:
                              Необходимо было не добавить файл в /assets/components/dadata/,
                              а добавить строчки в корневой файл — .htaccess:
                              RewriteCond %{HTTP:Authorization} !^$
                              RewriteRule ^(.*)$ $1?http_auth=%{HTTP:Authorization} [QSA]
                              Сергей
                              04 июня 2020, 12:44
                              0
                              Народ кто то сталкивался с такой проблемой:
                              Для реализаций использовал (Форма 4).
                              Но в корзине minishop2 при выборе подсказки в поле Адрес — поля (индекс, область, город ...) с начало заполняются, а потом рандомные исчезают мгновенно, data-oldvalue выводиться. Если перезагрузить страницу то все поля которые были пусты буду заполнены. В чем может быть проблема?
                                Дмитрий
                                28 декабря 2020, 14:08
                                0
                                У меня такая же проблема. При выборе организации поля сначала заполняются, а затем очищаются и значения остаются в data-oldvalue.
                                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                45