March 10, 2023

Дорогая, дорогой :). Определение пола в чат-боте

Пост о том, как, не полагаясь на данные соцсетей, например, ВК, получить пол реципиента рассылки и сделать сообщение более уважительным, а главное, мужчинам отправить мужчиново, а женщинам - женщиново 😃. Данная механика поможет сделать рассылки в мессенджерах более осмысленными.

Также это помогает имена перевести из латиницы в кириллицу, и тогда обращение не будет выглядеть так глуповато:

Здравствуйте, Anastasia!

:))

Здравствуйте, Шиномонтаж! - это глупо или тупо ;)?

Назовём эту операцию условно обогащением данных клиента. Потому что они как минимум получают больше актуальности.

В этом нам поможет шикарный сервис DaData.

В котором для продолжения необходимо зарегистрироваться и подтвердить почту. Изучите его разделы - DaData может много чего. Но конкретно сейчас нам нужен раздел стандартизации ФИО

Меню сервисов

Да, услуга платная, 15 копеек за запись. Но при регистрации даются 100 бесплатных запросов, так что на тесты хватит "за глаза".

В личном кабинете нам уже выданы ключи, понадобятся оба.

Операцию проведём с помощью двух блоков. В первом настроим данные для запроса, во втором сохраним данные.

Итак, первый блок - формируем POST-запрос

Для удобства привожу параметры в виде текста, чтобы было удобнее копипастить

Тип запроса:

POST-json

URL запроса:

https://cleaner.dadata.ru/api/v1/clean/name

Заголовок запроса (не забудьте вставить свои ключи, тем более, что эти уже недействительны ;)):

{"Content-Type":"application/json",
"Accept":"application/json",
"Authorization" : "Token 1404c74d1eccb7eac0a9cb049c794b277626003e",
"X-Secret": "419fb19bb1d61aa409bc9922f26a938d626fa786"}

JSON-параметры:

[ "#{full_name}" ]

В стрелке на всякий случай ставим задержку в 2-3 секунды, чтобы запрос успел отработать.

1. Теперь самое интересное. В переменную #{custom_anser} мы получим следующий вывод при full_name = "Николай Васильев"

[{"source":"Николай Васильев","result":"Васильев Николай",
"result_genitive":"Васильева Николая","result_dative":"Васильеву Николаю",
"result_ablative":"Васильевым Николаем","surname":"Васильев",
"name":"Николай","patronymic":null,"gender":"М","qc":0}]

2. Переименую себя в "Nickolai Vasiliev":

[{"source":"Nickolai Vasiliev","result":"Васильев Николай",
"result_genitive":"Васильева Николая",
"result_dative":"Васильеву Николаю",
"result_ablative":"Васильевым Николаем","surname":"Васильев",
"name":"Николай","patronymic":null,"gender":"М","qc":1}]

Имя представлено в нескольких падежах. В п. 1 всё отлично и логично. П. 2 - шикарно, сервис перевёл имя в кириллицу. В обоих случаях отсутствует отчество - параметр patronymic. Параметр gender = М (мужской). Женский пол будет обозначен "Ж". Интересен параметр qc. Вот что про него говорит документация:

В случае, когда попадается значение "1" можно например, оповещать оператора для проверки.

Итак, осталось сохранить нужные нам значение

Вот, собственно, и всё :).

Благодарность в виде доната приветствуется 😉. Как говорят восточные зулусы, buy me a coffee 😃

👇