chatme.ai
Search…
Создание Агента на платформе
ДЛЯ РАЗРАБОТЧИКОВ
Распознавание сущностей с помощью 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).
[
{
"source": "Срегей владимерович иванов",
"result": "Иванов Сергей Владимирович",
"result_genitive": "Иванова Сергея Владимировича",
"result_dative": "Иванову Сергею Владимировичу",
"result_ablative": "Ивановым Сергеем Владимировичем",
"surname": "Иванов",
"name": "Сергей",
"patronymic": "Владимирович",
"gender": "М",
"qc": 1
}
]
  • На вкладке 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.
Copy link
On this page
Регистрация в DaData.ru
Распознавание имен
Получение данных из DaData
Создание внешнего запроса к DaData на Платформе
Использование внешнего запроса в Сценарии Бота