Распознавание сущностей с помощью DaData.ru
Сервис DaData позволяет извлекать и приводить к стандартному виду различные сущности из сообщений Собеседника: города, страны, ФИО и др.; находит компанию по реквизитам, проверяет наличие телефона в справочнике Россвязи. Другой актуальный функционал можно посмотреть на https://dadata.ru/api/.
В данной инструкции мы рассмотрим случай с именами. Предположим, Бот должен узнать имя Собеседника, и мы хотим проверить, что в своем сообщении Собеседник указал именно имя. Также мы хотим использовать имя Собеседника в дальнейшем диалоге с Ботом в полной форме (Собеседник назвался Мишей, будет обращаться к нему Михаил). Для этого используем внешний запрос к DaData и проверить, есть ли имя Собеседника и его полная форма в базе имен сервиса.
Регистрация в DaData.ru
Зарегистрируйтесь в сервисе DaData.ru или войдите в сервис, используя email и пароль: https://dadata.ru/clean/.
На верхней панели перейдите на вкладку API.
Распознавание имен
Рассмотрим, как работать с сервисом DaData.ru, на примере распознавания имен.
Получение данных из DaData
После перехода на вкладку API пролистайте страницу вниз, до раздела ФИО.
Выберите Разбор ФИО из строки («стандартизация»).
Важно!
Если вы зарегистрировались впервые, в разделе Как вызвать, перейдите на получите API-ключ и подтвердите адрес электронной почты. После этого обновите страницу.
В разделе Как вызвать найдите пример запроса cURL. Здесь H – это headers запроса, d – data, тело запроса.
Скопируйте URL из нижней строки этого примера.
Создание внешнего запроса к DaData на Платформе
Перейдите в Ботбилдер для нужного Бота и откройте вкладку External Requests.
Пролистайте вниз страницы и создайте новый запрос, нажав на Add.
Заполните вкладку Main:
В поле Name пропишите название запроса.
В поле Endpoint выберите тип запроса POST и вставьте скопированный URL.
Вкладку Headers заполните заголовками из примера запроса DaData.
На вкладке Data выберите Data type JSON. В поле Data укажите название контекстной переменной, которую нужно проверить на наличие имени.
В ответ из сервиса DaData будем получать JSON следующего вида. Проверять будем только имя (name).
На вкладке Response в поле New key нужно указать переменную, которая используется из ответа сервиса (name в нашем случае). В поле name укажите элемент массива и, через /, переменную массива. В данном случае каждая переменная является элементом нулевого массива: [0[/name.
Нажмите Save и перейдите обратно в Ботбилдер на вкладку Agent Designer.
Использование внешнего запроса в Сценарии Бота
Создайте текстовый слот Text, в котором попросите Собеседника сообщить его имя.
Добавьте слот Wait For Reaction, чтобы Бот ожидал получение ответа от Собеседника.
Добавьте слот Memory, с помощью которого мы запишем введенное Собеседником сообщение в контекстную переменную name_name.
Добавьте слот External Request и из выпадающего списка выберите созданный ранее внешний запрос. Если запрос в выпадающем списке не отображается, обновите страницу.
Добавьте слот Transition Rule для разветвления Сценария в зависимости от того, есть ли в базе DaData введенное Собеседником имя.
Если имя не будет найдено сервисом, будет возвращено значение None. Соответственно, в под-слоте Condition со значением name вместо name нужно прописать выражение: {{ @name }} == None.
Если имя будет найдено в сервисе DaData, Сценарий пойдет по ветке от под-слота Condition со значением True.
После под-слота Condition со значением {{ @name }} == None добавим текстовый слот Text для случая, когда имя не найдено. Например, со следующим текстом: Интересное у тебя имя, {{ @name_name }}. Добавьте Wait For Reaction.
После под-слота Condition со значением true также добавьте текстовый слот Text. В поле текста для проверки добавьте получаемую из сервиса переменную {{ @name }}. Добавьте Wait For Reaction.
Last updated