Как поздравить девушку с помощью нейронных сетей, чат-бота и фрилансеров

TJournal 2
Как поздравить девушку с помощью нейронных сетей, чат-бота и фрилансеров

Telegram, китайский онлайн-магазин, расстояние в 6800 километров и срыв дедлайнов.

Привет, я работаю мобильным разработчиком в одном московском аутсорсе. До этого я работал инженером в НИИ, разработчиком и проджектом в рекламных диджитал-агентствах и делал свой стартап во ФРИИ. Но разговор не об этом.

У меня есть девушка, сейчас она живёт и учится в Китае. У неё недавно был день рождения, но, к сожалению, приехать лично поздравить я не мог, и поэтому мне надо было придумать, как можно было бы удалённо сделать ей подарок.

Раньше у меня уже был опыт поздравления друзей с помощью привычной для себя диджитал-среды. Например, одного друга я поздравил при помощи таргетированной рекламы во «ВКонтакте» — это было задолго до истории парня, который таким же образом пригласил девушку на свидание. В другой раз я создал паблик во «ВКонтакте», нагнал туда небольшое количество подписчиков и сделал там конкурс с розыгрышем фитнес-браслета, который и хотел подарить другу. Естественно, этот друг сделал репост и стал победителем конкурса: позже я с фейковой страницы назначил дату и время встречи, где и вручил ему подарок.

Для своей девушки я присмотрел в качестве подарка левитирующий цветок. Я нашел его в онлайн-магазине Taobao и уже был готов купить, но тут задумался над тем, как его красиво презентовать. Заказать курьера на её адрес в Шанхае было бы слишком тупо, плюс хотелось бы оформить его в красивую обёртку. И тут я подумал, что куда круче будет, если она сама заберёт этот подарок.

Мне пришла идея сделать некий квест, в результате которого она получит подарок. Чтобы система была полностью автономной от меня, я решил написать для этой цели Telegram-бота. Давно хотел разобраться с Telegram Bot API, так что квест стал отличным плацдармом для освоения новой технологии.

Изначальный алгоритм работы был прост: подарок можно забрать из условной точки А, координату которой бот отдаёт в виде ключа из шести цифр. Каждую цифру получаешь, если правильно выполняешь задание. Но в ходе работы алгоритм успел немного измениться.

Самое сложное — придумать задания для бота. Изначально я хотел сделать строгую привязку к геолокации: чтобы получить код, вы должны прийти в кафе, отослать локацию или ответить на вопрос, какого цвета фартук у официанта. Но это была серьёзная работа с контентом, плюс я не был уверен, что информация, которую я найду в интернете, будет идентична оригинальной. К тому же Шанхай — город немаленький, да и девушке есть чем заняться, кроме как ездить по каким-то непонятным местам, которые присылает ей бот.

В итоге я сократил количество заданий до трёх и сделал только одно с привязкой к геолокации. Как в итоге всё работало:

1. С помощью открытых библиотек компьютерного зрения создал алгоритм, который на основе базы данных фотографий девушки мог определить по селфи, она ли изображена на фото или нет. Алгоритм был несовершенен, и чтобы это нивелировать я задал порог до 75% совпадения объекта на фото с моделью.

Честно говоря, это был совсем не простой шаг, и он занял у меня немало времени. Зато после того, как девушка была поздравлена, я оставил эту фичу как единственную у бота. Этот шаг я придумал, чтобы никакие условные иранцы не могли случайно наткнуться на моего бота и активировать. В конце концов, это была просто прикольная фишка.

2. После идентификации бот спрашивал геолокацию. Тут была простая проверка на город. Чтобы получить первые цифры кода, бот спрашивал дату рождения — только число без месяца или года.

3. За пару дней до поздравления я нарисовал у девушки на стене во «ВКонтакте» граффити, где было скрыто число. Естественно, это выглядело очень странно и вызвало у девушки некоторые вопросы, на которые я никак не отвечал. Возможно, это даже подогревало интерес. На третьем шаге бог просил ввести это число.

4. Самое интересное. Я хотел, чтобы подарок вручил незнакомый человек. Я имел некоторый опыт работы с фриланс-биржами и подумал, что лучше всего для такой цели человека искать там.

Описывать все задание сразу я не хотел, но мне надо было среди всех кандидатов найти человека с хорошим английским, адекватного и живущего в Шанхае. На популярном сайте для поиска фрилансеров я создал объявление о поиске человека для разовой работы с оплатой в 25 долларов.

Откликов было много, но мало кто из этих фрилансеров проживал в Шанхае. Однако спустя некоторое количество времени я нашел ту самую китаянку, готовую мне помочь. Я объяснил ей суть задания, она согласилась мне помочь, и мы перешли в WeChat, где продолжили общение.

План мой был следующий: я заказываю цветок ей домой, она его упаковывает, пишет на упаковке новый код, встречается в оговоренное время с девушкой и вручает ей посылку. Вроде все выглядело просто, но естественно я столкнулся с некоторыми проблемами.

Я думал, что мне не составит труда заказать подарок на Taobao: оказывается, этот сайт никак не локализован. К сожалению, проблему нельзя было решить при помощи Google Translate. После того, как я добавил товар в корзину и приступил к оплате, сайт завис, JS-скрипт никак не мог получить информацию от сервера. Не знаю, как такое возможно, но на одном из самых крупных проектов e-commerce в мире могли быть технические неполадки. Я даже попытался зайти через китайский VPN, но всё было тщетно.

Тогда я решил сделать заказ через мобильное приложение. Тут опять проблема — оно полностью на китайском. Однако в этот момент я понял, какую роль играет дизайн в e-commerce. Я смог без труда по фотографии найти товар, нажать на какую-то самую яркую кнопку, перейти по иконке с корзинкой и ввести данные карточки в нужном поле. Мой опыт мог бы стать отличным тестом на качество UX приложения или сайта: «Даже если ваш сайт перевести на китайский язык, пользователь всё равно должен понимать, как купить товар». Единственные трудности у меня возникли при вводе адреса.

В итоге пришлось отправить моей фрилансерше скрин, чтобы она мне помогла. Хотя адрес я всё равно указал с ошибкой, продавец неплохо говорил по-английски и понял, что товар нужно доставить в Шанхай, а не в Пекин, как я сперва указал.

После того, как подарок доехал до китаянки, надо было состыковать её с моей девушкой. Фрилансера, как оказалось, я нанял занятую, обременённую двумя детьми и работой, поэтому времени, чтобы смотаться на другой конец города, у нее было не так много. В итоге я понял, что автоматизировать такой случай будет слишком долго, и через бота я просто предложил девушке выбрать из доступных лотов удобное время. После того, как я получил от неё информацию по времени, согласовал с китаянкой, и отправил ей подтверждение.

Встреча должна была состояться в корейском ресторане неподалеку от общежития моей подруги.

Я почему-то был уверен, что проблем не возникнет, в указанное время китаянка и моя подруга встретят друг друга, и мой план завершится успехом. Но оказалось, что я не просчитал риски. Моя подруга немного опоздала, а китаянка пришла пораньше и решила поесть. В итоге они не увидели друг друга: девушке надо было идти в банк, а китаянка названивала мне, не понимая, что ей следует делать.

Я понял, что ситуация немного нештатная, но мой доблестный работник подсказал мне решение, до которого мне следовало додуматься с самого начала. Она оставила подарок на ресепшене в ресторане и оставила свой номер, который надо сказать менеджеру, чтобы тот отдал посылку. Этот код-телефон бот отправил девушке, сославшись на небольшие технические проблемы. Поскольку она вообще не имела представления, что ей надо будет с кем-то встречаться в ресторане, то передача подарка без участия каких-либо людей как раз соответствовала концепции поздравления.

На подарке был написан последний ключ, который, если отправить боту, то он отдавал PDF-документ с текстом поздравления. Туда же я вложил подарочный сертификат на билет на самолёт, который купил у одной российской компании.

Всё получилось в итоге не так, как я изначально задумывал, но главное, что цель была выполнена. Единственный минус — с этим поздравлением я опоздал почти на четыре недели.

Надеюсь, что такой мой небольшой рассказ может вас заставить в следующий раз не тратить 10 тысяч рублей на никому не нужный букет роз или огромного медведя, а немного включить мозги и придумать своей подруге или девушке что-то оригинальное и приятное.