Як привітати дівчину за допомогою нейронних мереж, чат-бота та фрілансерів
Telegram, китайський онлайн-магазин, відстань у 6800 кілометрів та зрив дедлайнів.
У мене є дівчина, зараз вона живе та навчається у Китаї. У неї нещодавно був день народження, але, на жаль, приїхати особисто привітати я не міг, і тому мені треба було вигадати, як можна було б віддалено зробити їй подарунок.
Мені прийшла ідея зробити квест, в результаті якого вона отримає подарунок. Щоб система була повністю автономна від мене, я вирішив написати для цієї мети Telegram-бота. Давно хотів розібратися з Telegram Bot API, тому квест став відмінним плацдармом для освоєння нової технології.
Початковий алгоритм роботи був простий: подарунок можна забрати з умовної точки А, координату якої бот віддає у вигляді ключа із шести цифр. Кожну цифру отримуєш, якщо правильно виконуєш завдання. Але під час роботи алгоритм встиг трохи змінитись.
Найскладніше – придумати завдання для бота. Спочатку я хотів зробити сувору прив'язку до геолокації: щоб отримати код, ви повинні прийти в кафе, надіслати локацію або відповісти на питання, якого кольору фартух у офіціанта. Але це була серйозна робота з контентом, плюс я не був певен, що інформація, яку я знайду в інтернеті, буде ідентичною оригінальною. До того ж Шанхай — місто немаленьке, та й дівчині є чим зайнятися, крім як їздити якимись незрозумілими місцями, які надсилає їй бот.
У результаті я скоротив кількість завдань до трьох і зробив лише одне із прив'язкою до геолокації. Як у результаті все працювало:
1. За допомогою відкритих бібліотек комп'ютерного зору створив алгоритм, який на основі бази даних фотографій дівчини міг визначити по селфі, зображена вона на фото чи ні. Алгоритм був недосконалий, і щоб це нівелювати я поставив поріг до 75% збігу об'єкта нафото з моделлю.
Правду кажучи, це був зовсім не простий крок, і він зайняв у мене чимало часу. Проте після того, як дівчина була привітана, я залишив цю фічу як єдину у бота. Цей крок я вигадав, щоб ніякі умовні іранці не могли випадково натрапити на мого бота та активувати. Зрештою це була просто прикольна фішка.
2. Після ідентифікації бот запитував геолокацію. Тут була проста перевірка на місто. Щоб отримати перші цифри коду, бот запитував дату народження – лише число без місяця чи року.
3. За кілька днів до привітання я намалював у дівчини на стіні у «ВКонтакті» графіті, де було приховано число. Звичайно, це виглядало дуже дивно і викликало в дівчини деякі питання, на які я не відповідав. Можливо, це навіть підігрівало інтерес. На третьому кроці бог просив запровадити це число.
4. Найцікавіше. Я хотів, щоб подарунок вручила незнайома людина. Я мав деякий досвід роботи з фріланс-біржами та подумав, що найкраще для такої мети людину шукати там.
Відгуків було багато, але мало хто з цих фрілансерів проживав у Шанхаї. Однак через деякий час я знайшов ту саму китаянку, готову мені допомогти. Я пояснив їй суть завдання, вона погодилася допомогти мені, і ми перейшли до WeChat, де продовжили спілкування.
План мій був наступний: я замовляю квітку їй додому, вона його пакує, пише на упаковці новий код, зустрічається в обумовлений час з дівчиною і вручає їй посилку. Начебто все виглядало просто, але природно я зіткнувся з деякими проблемами.
Я думав, що мені не важко замовити подарунок на Taobao: виявляється, цей сайт ніяк не локалізований. На жаль, проблему не можна було вирішити за допомогою Google Translate. Після того, як я додав товар уКошик і приступив до оплати, сайт завис, JS-скрипт ніяк не міг отримати інформацію від сервера. Не знаю, як це можливо, але на одному з найбільших проектів e-commerce у світі могли бути технічні неполадки. Я навіть спробував зайти через китайський VPN, але все було марно.
Після того, як подарунок доїхав до китаянки, треба було з'єднати її з моєю дівчиною. Фрілансера, як виявилося, я найняв зайняту, обтяжену двома дітьми та роботою, тому часу, щоб змотатися на інший кінець міста, вона мала не так багато. У результаті я зрозумів, що автоматизувати такий випадок буде надто довго, і через бота я просто запропонував дівчині вибрати з доступних лотів зручний час. Після того, як я отримав від неї інформацію за часом, погодив із китаянкою і відправив їй підтвердження.
Зустріч мала відбутися в корейському ресторані неподалік гуртожитку моєї подруги.
Я чомусь був упевнений, що проблем не виникне, у вказаний час китаянка та моя подруга зустрінуть один одного, і мій план завершиться успіхом. Але виявилося, що я не прорахував ризики. Моя подруга трохи запізнилася, а китаянка прийшла раніше і вирішила поїсти. У результаті вони не побачили один одного: дівчині треба було йти до банку, а китаянка дзвонила мені, не розуміючи, що їй слід робити.
На подарунку був написаний останній ключ, який, якщо надіслати боту, він віддавав PDF-документ з текстом привітання. Туди ж я вклав подарунковий сертифікат на квиток, який купив в однієї української компанії.
Все вийшло в результаті не так, як я спочатку замислювався, але головне, що мета була виконана. Єдиний мінус — із цим вітанням я запізнився майже на чотири тижні.
Сподіваюся, що таке моє невелике оповідання може вас змусити наступного разу невитрачати 10 тисяч рублів на нікому не потрібний букет троянд або величезного ведмедя, а трохи включити мозок і придумати своїй подрузі чи дівчині щось оригінальне та приємне.