[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
6 784
+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:10
                  0
                  Поправил. А у тебя масштаб 100%?
                    Володя
                    15 декабря 2015, 15:11
                    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