00:00:00Привет,
00:00:02добро пожаловать на еженедельный прямой эфир сообщества Purcell.
00:00:22Я Эми Иган.
00:00:23Я из команды по работе с сообществом Purcell.
00:00:27Напоминаю,
00:00:27трансляция идет на X и YouTube,
00:00:29но если вы хотите присоединиться к чату,
00:00:32войдите в сообщество и нажмите «Я пойду» на мероприятии.
00:00:35Вы увидите чат сбоку,
00:00:37и я позабочусь о том,
00:00:38чтобы мы увидели ваши комментарии,
00:00:40если у вас возникнут вопросы.
00:00:42Не стесняйтесь задавать вопросы на протяжении всей сессии,
00:00:45а мы ответим на них в конце.
00:00:47И напоминаю,
00:00:48если вы общаетесь в чате,
00:00:50пожалуйста,
00:00:50будьте вежливы и следуйте нашему кодексу поведения.
00:00:54А теперь,
00:00:54когда это сказано,
00:00:55я хотела бы пригласить наших гостей на сцену.
00:00:58В прошлом месяце мой коллега Джейкоб присоединился к команде HubSpot,
00:01:01чтобы рассказать о подключении собственного бэкенда к программе для разработчиков HubSpot.
00:01:05А в этом месяце к нам присоединилась команда HubSpot,
00:01:07чтобы рассказать,
00:01:08как они используют Purcell.
00:01:09Итак, поприветствуйте Брук.
00:01:12Большое спасибо, Эми.
00:01:13Всем привет.
00:01:14Меня зовут Брук Бонд,
00:01:16и я рада быть здесь,
00:01:18в сообществе Purcell.
00:01:20У меня есть пара вопросов,
00:01:22на которые вы можете ответить в чате заранее,
00:01:24но нам бы очень хотелось узнать,
00:01:26использовали ли вы когда-нибудь HubSpot?
00:01:28Знаете ли вы, кто мы?
00:01:30Строили ли вы что-то с нами?
00:01:31И если да, то что вы построили?
00:01:34Я бы с удовольствием прочитала все эти комментарии в чате.
00:01:38Это было бы здорово, но у нас всего 30 минут.
00:01:42Поэтому я хочу убедиться,
00:01:43что мы успеем рассмотреть весь наш замечательный контент.
00:01:45Итак, сегодня мы быстро рассмотрим, что такое HubSpot?
00:01:49Кто мы как команда HubSpot DevRel?
00:01:51Как мы можем использовать HubSpot и Purcell вместе?
00:01:54А затем у нас есть пара примеров того,
00:01:56как наша команда HubSpot DevRel использовала Purcell в различных проектах,
00:02:00которые мы реализуем в HubSpot.
00:02:02И,
00:02:02наконец,
00:02:03мы оставим немного времени для вопросов и ответов.
00:02:04Так что,
00:02:05как сказала Эми,
00:02:06если у вас есть какие-либо вопросы,
00:02:08пожалуйста,
00:02:08задавайте их в чате,
00:02:09и мы с радостью ответим на них в конце.
00:02:12Итак,
00:02:12сегодня ко мне присоединятся двое моих коллег,
00:02:16Деннис Эдсон и Крис Райли.
00:02:18И мы очень рады быть здесь.
00:02:19Итак,
00:02:20сначала давайте установим основные правила,
00:02:23точнее,
00:02:23давайте определим,
00:02:24что такое HubSpot.
00:02:25HubSpot — это умная CRM для бизнеса.
00:02:29У нас есть набор программного обеспечения для маркетинга,
00:02:33продаж и обслуживания,
00:02:35а также единая платформа для разработчиков для создания интеграций.
00:02:39И именно на этом команда DevRel сосредоточивает свои усилия — на помощи нашим разработчикам в понимании того,
00:02:45как использовать платформу для разработчиков.
00:02:47Изображение на экране,
00:02:49которое вы видите,
00:02:50— это страница записи контакта в CRM.
00:02:53Итак,
00:02:54с платформой для разработчиков HubSpot вся ваша работа хранится в проекте HubSpot.
00:03:00А на платформе для разработчиков HubSpot вы можете создавать как внутренние статические приложения,
00:03:07так и внешние приложения OAuth.
00:03:09И если вы создадите внешнее приложение,
00:03:11вы сможете разместить его на нашем маркетплейсе HubSpot,
00:03:14и тогда любой пользователь с учетной записью HubSpot сможет зайти на маркетплейс и загрузить ваше приложение.
00:03:21Итак,
00:03:21допустим,
00:03:22вы Vercel и хотите создать интеграцию,
00:03:24где люди смогут видеть свои метрики Vercel внутри своей учетной записи HubSpot.
00:03:29Вы могли бы создать это,
00:03:30настроить поток OAuth,
00:03:32позволить людям загрузить это в свою учетную запись,
00:03:35и тогда они смогут видеть свои данные Vercel прямо в HubSpot и наоборот.
00:03:40Сейчас на скриншоте,
00:03:41который у меня здесь,
00:03:43показана страница обзора разработки.
00:03:46Итак,
00:03:46у нас есть специальная страница обзора разработки для разработчиков,
00:03:49когда они находятся в своей учетной записи,
00:03:51чтобы они могли видеть все проекты,
00:03:53над которыми они работают.
00:03:54У нас также есть инструменты мониторинга,
00:03:57чтобы люди могли видеть использование API и все такое прочее.
00:04:01Так что все ваши вещи в одном месте,
00:04:03вам очень легко просто зайти.
00:04:05Вам не нужно беспокоиться о шуме всех остальных вещей,
00:04:08которые не являются частью ваших проектов HubSpot.
00:04:11Итак, теперь я хочу быстро представить нашу команду.
00:04:15Мы — междисциплинарная группа разработчиков и менеджеров,
00:04:19которые помогают нашим разработчикам преуспевать в экосистеме HubSpot,
00:04:23и мы помогаем сообществу разработчиков,
00:04:25создавая решения,
00:04:26помогая им осваивать лучшие практики и создавая интеграции,
00:04:30которые они могут использовать.
00:04:32Мы проводим прямые трансляции,
00:04:34подобные этой,
00:04:35и на наших собственных каналах,
00:04:36посещаем конференции и выступаем на них,
00:04:38а также гарантируем,
00:04:39что обратная связь от внешних разработчиков учитывается при создании и запуске новых функций.
00:04:45Таким образом,
00:04:45мы очень тесно сотрудничаем с нашими коллегами-инженерами-разработчиками и передаем им обратную связь от нашего сообщества,
00:04:51чтобы помочь нам улучшить наши продукты.
00:04:53Итак,
00:04:54это небольшой график,
00:04:55который я создала,
00:04:56чтобы показать вам немного больше.
00:04:57У нас есть обучающие материалы и ресурсы,
00:04:59которые включают нашу документацию для разработчиков,
00:05:02наш блог,
00:05:03наш YouTube и различные учебные пособия,
00:05:05которые у нас есть как на YouTube,
00:05:07GitHub,
00:05:07так и в других местах.
00:05:08Наше сообщество и связь: у нас есть Slack для разработчиков,
00:05:11к которому может присоединиться любой желающий.
00:05:13У нас также есть форум,
00:05:15где люди могут задавать вопросы в сообществе.
00:05:18И мы проводим очные мероприятия в течение всего года.
00:05:22У нас также есть инструменты для сборки и разработки.
00:05:25Итак,
00:05:25у нас есть оценка качества приложений,
00:05:27это наша команда по качеству экосистемы.
00:05:29Они рассматривают все приложения,
00:05:31которые попадают на наш маркетплейс,
00:05:33и гарантируют,
00:05:34что они соответствуют нашим стандартам.
00:05:37А также у нас есть примеры приложений.
00:05:39И, наконец, это новинка, но у нас есть наш Dev MCP.
00:05:42И мы очень тесно сотрудничали с инженерами,
00:05:45которые его создавали,
00:05:46чтобы они могли понять,
00:05:47как мы можем сделать действительно отличный продукт MCP для наших разработчиков.
00:05:51И, наконец, демонстрация и рост.
00:05:53У нас есть раздел тематических исследований,
00:05:56где мы берем отличные программы для разработчиков и показываем,
00:06:00как они используют HubSpot.
00:06:02У нас также есть сертификаты маркетплейса.
00:06:04Таким образом,
00:06:05когда вы публикуете свое приложение на нашем маркетплейсе,
00:06:08вы можете получить сертификат маркетплейса,
00:06:10что означает,
00:06:11что вы получите небольшую синюю галочку или просто символ,
00:06:13чтобы люди знали,
00:06:14что ваше качество гарантировано.
00:06:16И, наконец, мы помогаем с координацией GTM.
00:06:19Поэтому,
00:06:19когда у нас проходят крупные запуски в течение года,
00:06:22мы помогаем с маркетинговыми материалами для них,
00:06:25убеждаясь,
00:06:25что мы обращаемся к нашей аудитории разработчиков таким образом,
00:06:28который будет для них наилучшим.
00:06:30Итак,
00:06:31теперь,
00:06:31когда мы поговорили о том,
00:06:32кто мы и что мы делаем,
00:06:34давайте поговорим о том,
00:06:35как мы используем HubSpot и Vercel вместе.
00:06:37Как сказала Эми,
00:06:38в прошлом месяце мы провели вебинар,
00:06:40посвященный подключению собственного бэкенда.
00:06:43Итак,
00:06:43это один из основных сценариев использования,
00:06:46о котором я собираюсь здесь рассказать,
00:06:47— использование Vercel в качестве бэкенд-сервиса.
00:06:50В этом случае у вас есть приложение HubSpot,
00:06:52которое является нашим фронтендом,
00:06:53и оно содержит компоненты пользовательского интерфейса,
00:06:56построенные с помощью React,
00:06:57которые вы размещаете на своей странице,
00:06:59чтобы вы могли отображать их для фронтенда внутри учетной записи HubSpot.
00:07:03А затем у вас есть ваш бэкенд Vercel,
00:07:05который будет хранить ваш код.
00:07:06И что вы будете делать,
00:07:07так это внутри своего кода вы будете использовать hubspot.fetch для вызова вашего бэкенда через API,
00:07:13который вы создаете.
00:07:14А затем он будет возвращать и манипулировать данными,
00:07:17а затем отображать ответ на фронтенде.
00:07:20Чтобы показать,
00:07:21как это выглядит,
00:07:23я быстро рассмотрю пример,
00:07:25который я создала,
00:07:27— это генератор файлов LLMS.txt.
00:07:30Попробуйте произнести это три раза быстро.
00:07:32Итак,
00:07:33что делает этот генератор файлов LLMS.txt,
00:07:35так это приложение HubSpot,
00:07:37которое принимает URL-адрес веб-страницы или карты сайта,
00:07:41анализирует данные на странице для создания этого файла.
00:07:45А файл LLMS.txt — это файл для поисковых роботов ИИ,
00:07:50чтобы им не приходилось обрабатывать весь этот лишний HTML.
00:07:55Он отображает вашу информацию в формате файла Markdown,
00:07:59чтобы они могли очень быстро ее прочитать.
00:08:02И это использует HubSpot fetch для вызова конечной точки API Vercel и API файлов HubSpot для загрузки этого файла в вашу учетную запись HubSpot.
00:08:11Итак,
00:08:11скриншот,
00:08:12который я здесь показываю,
00:08:14— это мой код,
00:08:15и именно здесь я фактически вызываю API Vercel.
00:08:18И здесь я просто обернула это в try-catch,
00:08:22а затем отправила конечную точку.
00:08:25Итак,
00:08:26теперь,
00:08:26когда я об этом рассказала,
00:08:27давайте посмотрим,
00:08:28как это работает.
00:08:28Итак, я перейду на фронтенд, чтобы вы могли увидеть.
00:08:31Итак,
00:08:32это внутри нашей учетной записи HubSpot,
00:08:35и здесь у нас есть генератор DevRel Labs.
00:08:38Это то,
00:08:38что известно как страница настроек приложения,
00:08:41и причина,
00:08:41по которой я специально выбрала отображение этого на странице настроек приложения,
00:08:46заключается в том,
00:08:47что это очень административная работа,
00:08:49которую люди выполняют для своего веб-сайта.
00:08:51Поэтому я не хотела делать его доступным для любого человека в вашей учетной записи HubSpot.
00:08:55Я хотела убедиться,
00:08:56что только нужные люди имели к этому доступ,
00:08:59чтобы люди не генерировали их и не вызывали проблем с поисковыми роботами ИИ.
00:09:04Итак,
00:09:04здесь вы можете выбрать свой тип: вы можете ввести полную карту сайта или одну URL-ссылку.
00:09:10Очевидно,
00:09:11что карта сайта,
00:09:12если ваш веб-сайт очень большой,
00:09:13займет некоторое время.
00:09:15Так что одна URL-ссылка будет намного быстрее.
00:09:17Итак, затем вы можете просто ввести свой URL-адрес.
00:09:20Итак,
00:09:21я просто введу developers.hubspot.com,
00:09:24и затем он сгенерирует...
00:09:26О, у меня ошибка..
00:09:28Хорошо.
00:09:29Ну, это весело.
00:09:30Это прямой эфир.
00:09:31Итак, посмотрим.
00:09:32Давайте зайдем в мои настройки Vercel и посмотрим,
00:09:35получим ли мы сообщение об ошибке в...
00:09:37Ну, не в логах сборки..
00:09:39Итак, здесь, в моем бэкенде, мы можем видеть все.
00:09:43Итак,
00:09:44давайте посмотрим логи выполнения и увидим,
00:09:46сможем ли мы найти ошибку.
00:09:46Что ж,
00:09:47ничего не работает,
00:09:49но в идеальной ситуации файл llms.txt был бы сгенерирован и загружен в вашу учетную запись HubSpot с помощью той бессерверной функции Vercel,
00:10:02которую я создала.
00:10:04Итак,
00:10:05теперь я передам слово остальным членам моей команды,
00:10:08чтобы они рассказали,
00:10:09как мы используем HubSpot и другими способами,
00:10:12не только подключая Vercel в качестве бэкенда к HubSpot,
00:10:16но и для других наших задач.
00:10:18Итак, я передаю слово Крису.
00:10:20Спасибо.
00:10:22Что мне нравится в демонстрациях,
00:10:24которые не всегда работают на 100% идеально,
00:10:28так это то,
00:10:28что они,
00:10:29безусловно,
00:10:30позволяют нам сопереживать всем разработчикам,
00:10:33которые смотрят,
00:10:34и нашему сообществу и так далее.
00:10:37Если бы мы могли быстро вернуться к слайдам на компьютере Брук.
00:10:43Отлично.
00:10:44Спасибо.
00:10:45Итак,
00:10:46конечно,
00:10:46мы бы хотели,
00:10:47чтобы все вы взяли свою креативность и идеи и донесли их до клиентов HubSpot через интеграцию с использованием наших API.
00:10:57Но как мы также используем Vercel внутри DevRel для экспериментов,
00:11:02проведения очень быстрых тестов и создания очень быстрых прототипов,
00:11:07чтобы мы могли проверять идеи,
00:11:09которые у нас есть как у команды,
00:11:11и доносить их до остальной части организации.
00:11:15Итак,
00:11:16у нас есть нечто под названием DevRel Labs,
00:11:19и DevRel Labs — это набор правил,
00:11:21набор процессов,
00:11:22который распространяется на все отношения с разработчиками,
00:11:27и он дает нам возможность иметь стандартный способ экспериментировать,
00:11:32проводить эти эксперименты,
00:11:33подтверждать или опровергать их,
00:11:36как это иногда бывает,
00:11:37а затем развивать их.
00:11:39Возможно,
00:11:40это превратится в продукт или в более отточенное решение после этого.
00:11:46Итак,
00:11:47теперь мы поговорим о двух экспериментах,
00:11:50которые я возглавлял,
00:11:52а затем перейдем к Деннису,
00:11:54чтобы он рассказал о том,
00:11:56над чем он работал.
00:11:58Но все эти эксперименты имеют четкий процесс и четкую цель.
00:12:03И один из них заключается в том,
00:12:05что у нас,
00:12:05как и у многих организаций,
00:12:07есть сообщество Slack для внешних разработчиков.
00:12:10Это место,
00:12:11куда могут прийти люди,
00:12:13создающие решения на базе HubSpot,
00:12:16они могут общаться,
00:12:18учиться и помогать друг другу.
00:12:21Потому что на самом деле лучшее сообщество — это сообщество,
00:12:25в котором есть взаимодействие между равными.
00:12:27И поэтому мы подумали,
00:12:29что мы можем сделать,
00:12:31чтобы быстрее донести решения и ресурсы до этих членов сообщества?
00:12:38И одно из очевидных решений,
00:12:40с которым вы,
00:12:41я уверен,
00:12:42сталкивались,
00:12:43было создание Slack-бота.
00:12:45Но когда мы думали о Slack-боте,
00:12:47мы не хотели,
00:12:48чтобы он просто доминировал в разговоре.
00:12:51Мы хотели, чтобы он был там для взаимодействия.
00:12:53Так что он не должен быть слишком навязчивым.
00:12:57И мы хотели,
00:12:58чтобы он был там для быстрого предоставления ресурсов в реальном времени нашему внешнему сообществу.
00:13:05И поэтому мы создали его на Vercel.
00:13:08Потому что это позволяет нам очень быстро создать прототип,
00:13:14а затем оценить его качество,
00:13:16а затем решить,
00:13:17что мы будем делать с этим дальше.
00:13:21И прямо сейчас мы находимся на стадии экспериментов и проверки.
00:13:25Поэтому,
00:13:25работая совместно с остальной частью нашей команды сообщества в DevRel,
00:13:29мы решим,
00:13:30что будет дальше.
00:13:31Итак,
00:13:31я хотел быстро показать на своем экране ботов,
00:13:34и то,
00:13:35что вы видите здесь,
00:13:36мне на самом деле очень нравится этот домашний экран,
00:13:40потому что это весело,
00:13:41вы знаете,
00:13:42графики,
00:13:42диаграммы и числа всегда очень забавны.
00:13:45Но у нас есть простой экран,
00:13:47который дает нам некоторые данные о внедрении бота.
00:13:51Но есть два способа взаимодействия с ботом.
00:13:53Я могу сделать это через прямое сообщение,
00:13:55или у нас есть несколько каналов,
00:13:57где бот будет автоматически отвечать на вопросы,
00:14:00связанные с поддержкой.
00:14:01Итак,
00:14:01я собираюсь просто задать вопрос: как мне начать работу с HubSpot Dev MCP.
00:14:08И что я хотел показать,
00:14:09потому что я немного ограничен в том,
00:14:12что я могу фактически показать из нашего бэкенда,
00:14:15это логирование в реальном времени,
00:14:17которое мы получаем от этого в Vercel.
00:14:19Итак,
00:14:20это позволяет мне,
00:14:22я скажу,
00:14:23что вот это,
00:14:24вероятно,
00:14:25тот чат в реальном времени,
00:14:28который я только что отправил.
00:14:33И это произошло быстро, что хорошая новость.
00:14:35Он быстро меняется на сообщение о размышлении.
00:14:39Он обращается к Open AI, чтобы получить ответ.
00:14:43Он возвращается через инструмент,
00:14:44чтобы посмотреть,
00:14:45есть ли дополнительные ресурсы,
00:14:47отобранные командой DevRel,
00:14:48которые я мог бы предоставить этому пользователю,
00:14:51чтобы помочь ему продвинуться дальше.
00:14:53Это может быть YouTube,
00:14:55это может быть документация,
00:14:56это могут быть всевозможные ресурсы.
00:14:58И затем он даст ответ.
00:15:00И я предполагаю, что это ответ, так и есть.
00:15:06Итак,
00:15:06теперь,
00:15:07если я вернусь к этому,
00:15:08мы увидим,
00:15:09что все 200.
00:15:10Так что это лучший сценарий, верно?
00:15:13И это сработало.
00:15:14Итак,
00:15:15он не только дал мне ответ,
00:15:17но и предоставил статьи для ознакомления.
00:15:21Он сказал мне присоединиться к Dev Slack, я уже здесь.
00:15:24Но он также дал мне учебные пособия и другую информацию,
00:15:28которая,
00:15:29как он рекомендует,
00:15:30будет связана с вопросом,
00:15:32который я здесь представил.
00:15:35И он дал мне правильный ответ: настройте свою среду разработки,
00:15:39установите CLI,
00:15:40установите сервер MCP,
00:15:42и вы готовы к работе.
00:15:43И он даже дал несколько идей, как начать.
00:15:47И,
00:15:48как вы видите,
00:15:49это был очень простой способ для нас создавать тесты,
00:15:53и логи здесь очень важны.
00:15:56Протестировать решение с использованием специально созданного Slack-бота,
00:16:00где мы в DevRel,
00:16:01наша основная обязанность — не создавать решения,
00:16:04хотя мы все разработчики,
00:16:06но мы не занимаемся ежедневным созданием.
00:16:09Поэтому все,
00:16:10что мы создаем,
00:16:11должно быть максимально простым и бесшовным.
00:16:15Теперь это подготовило нас к чему-то,
00:16:17что меня немного удивило.
00:16:18Если мы вернемся к слайдам,
00:16:21я расскажу вам,
00:16:23как это привело к еще одному эксперименту.
00:16:27Извините, до этого, Брук, вы можете вернуться к слайду с...
00:16:35Итак,
00:16:35сначала я хотел сказать,
00:16:37что меня действительно взволновало в Vercel?
00:16:39Во-первых,
00:16:40легко читаемые логи,
00:16:40как я показал,
00:16:41и у меня было настроено на живую трансляцию.
00:16:43Так что вы видели потоковую передачу логов в реальном времени.
00:16:46Запуски, мы имеем дело с бессерверной средой.
00:16:49Запуски были удивительно быстрыми.
00:16:52Это важно для Slack.
00:16:53Если вы когда-либо создавали интеграцию со Slack или любой другой сторонний инструмент,
00:16:57с которым вы интегрируетесь,
00:16:59который также является бессерверным,
00:17:01вам нужны быстрые запуски.
00:17:02И на каждом уровне внутри Vercel есть быстрые запуски.
00:17:06Мне нравится CLI за возможность развертывания до того,
00:17:09как я сделаю коммит или запрос на слияние,
00:17:12чтобы убедиться,
00:17:13что если я помещу туда какой-либо некачественный код,
00:17:16я смогу быстрее выявить проблемы до развертывания,
00:17:19и,
00:17:19конечно,
00:17:20развертывание в различные среды.
00:17:22А также,
00:17:22как и у нас есть маркетплейс,
00:17:24у них есть подключения к таким сервисам,
00:17:27как Neon и Upstash для Redis и Postgres,
00:17:30что позволяет очень,
00:17:31очень быстро запустить бэкенд-базу данных.
00:17:35И это было важно.
00:17:37Кстати о бэкенд-базе данных,
00:17:38это то,
00:17:39что привело к тому,
00:17:40что было дальше.
00:17:41Итак,
00:17:42теперь у нас есть все эти взаимодействия в нашем Dev Slack.
00:17:48И это оказывается действительно богатым источником информации.
00:17:52Очевидно, мы могли это интуитивно понять.
00:17:54Но одна из вещей,
00:17:55которая меня удивила,
00:17:56это осознание того,
00:17:57что я,
00:17:58вероятно,
00:17:58мог бы создать еще один фронтенд-интерфейс для этих данных,
00:18:02чтобы мы могли использовать его для возвращения к тому,
00:18:06что Брук говорила ранее,
00:18:07чтобы обучать и информировать наш процесс обратной связи,
00:18:11как мы получаем информацию,
00:18:13как мы возвращаем эту информацию в продукт для улучшения опыта разработчиков.
00:18:18И поэтому мы перешли от создания Slack-бота к внезапному переключению на V0 в новом проекте,
00:18:27взяв эти данные,
00:18:28создав очень простой защищенный паролем фронтенд,
00:18:33чтобы показать,
00:18:34о чем люди задают вопросы?
00:18:37Какие типы ресурсов мы предоставляем?
00:18:40Итак,
00:18:41у нас много разговоров о вебхуках,
00:18:43у нас много разговоров об аутентификации.
00:18:46Это позволило нам показать влияние экспериментов,
00:18:50которые мы проводили,
00:18:51что очень,
00:18:52очень круто,
00:18:53потому что нам нужно куда-то развивать этого Slack-бота.
00:18:57Мы не хотели просто построить его и отпустить.
00:18:59Мы должны перейти к следующему шагу.
00:19:01И лучший способ сделать это,
00:19:03если вы были на встречах с кем-либо из руководства,
00:19:06— это показать график или представить какую-либо презентацию.
00:19:10И это поможет нам принимать решения с командой сообщества внутри DevRel,
00:19:15чтобы сказать,
00:19:16что мы собираемся делать?
00:19:18Мы собираемся его сохранить?
00:19:19Мы собираемся его развивать?
00:19:21Если мы его продвинем,
00:19:24то инфраструктура в бэкенде бота изменится.
00:19:28Но не было лучшего способа начать,
00:19:31чем построить его на очень простой в использовании платформе,
00:19:36такой как Vercel,
00:19:37иметь некоторые визуализации,
00:19:39и теперь мы можем решить,
00:19:41что делать дальше.
00:19:43Итак,
00:19:43теперь мы посмотрим,
00:19:45что построил Деннис,
00:19:46что еще более продвинуто,
00:19:48чем то,
00:19:48что построил я,
00:19:50и,
00:19:50осмелюсь сказать,
00:19:51лучше,
00:19:52но также еще один эксперимент в DevRel Labs.
00:19:55Итак, Деннис, тебе слово.
00:19:57Спасибо, Крис.
00:19:59И спасибо, что сказал, что это лучше.
00:20:01Боже мой, надеюсь, все это слушают.
00:20:04Итак, до работы в HubSpot я работал в агентстве.
00:20:08И когда Крис рассказал мне об этих DevRel Labs,
00:20:11которые мы делаем,
00:20:12у меня была очень специфическая проблема,
00:20:15с которой я столкнулся в агентстве,
00:20:17и это было то,
00:20:18что я строил что-то,
00:20:19одну из этих трех вещей.
00:20:21Я либо что-то строил,
00:20:22заканчивал с этим,
00:20:22и оно находилось в режиме обслуживания.
00:20:24Я просто иногда за этим наблюдаю.
00:20:25Позже оно ломалось,
00:20:27потому что я упускал что-то,
00:20:29происходящее в экосистеме HubSpot.
00:20:31Или я унаследовал кучу проектов,
00:20:34и понятия не имел,
00:20:36что они делают.
00:20:37И поэтому в конце концов один из них натыкался на какое-то критическое изменение и ломался сам,
00:20:42и мне приходилось выяснять,
00:20:43где,
00:20:43почему и как.
00:20:44И последнее,
00:20:44и это,
00:20:45вероятно,
00:20:45самое важное для меня,
00:20:46это то,
00:20:47что есть так много чертовых вещей,
00:20:49на которые нужно обращать внимание,
00:20:50что я часто просто терял нить того,
00:20:52что делаю.
00:20:52Я не обращаю внимания ни на какие журналы изменений,
00:20:55и что-то ломается.
00:20:56И угадайте что?
00:20:57В этот момент на вас кричат клиенты.
00:20:59Итак,
00:20:59я решил,
00:21:00что я собираюсь создать следующий слайд: инструмент мониторинга журнала изменений для разработчиков HubSpot,
00:21:07он же кодовое название Sprocky change dust.
00:21:10Этот инструмент активно отслеживает журнал изменений HubSpot,
00:21:14используя ИИ для анализа записей журнала изменений и определения типа изменения.
00:21:19Это критическое изменение?
00:21:21Это улучшение?
00:21:22Это влияет на CMS?
00:21:23Это влияет на CRM?
00:21:24Это влияет на оба?
00:21:26А затем позволяет вам использовать репозитории,
00:21:29размещенные на GitHub,
00:21:30для проверки этих журналов изменений по отношению к вашему репозиторию,
00:21:34что,
00:21:34по сути,
00:21:35позволяет вам иметь помощника,
00:21:36который будет просматривать журнал изменений за вас.
00:21:39Итак, как мы это сделали?
00:21:40Набор инструментов,
00:21:41который мы здесь использовали,
00:21:43— это фреймворк React,
00:21:44созданный с помощью Vercel,
00:21:45очевидно,
00:21:46next.js,
00:21:46потому что,
00:21:47вы знаете,
00:21:48арахисовое масло и желе,
00:21:49Superbase для нашей базы данных,
00:21:51а затем нам пришлось создать приложение GitHub,
00:21:53которое позволяет нам подключаться к этим репозиториям там.
00:21:56А затем,
00:21:57с помощью некоторых бессерверных функций на Vercel и Open AI,
00:22:00я смог получить действительно качественные данные для пользователя,
00:22:04чтобы он мог действовать.
00:22:06Почему я выбрал Vercel?
00:22:07Честно говоря, это просто чертовски легко настроить.
00:22:11Мне не пришлось особо беспокоиться о фронтенде.
00:22:13У меня было приложение,
00:22:15работающее менее чем за полчаса,
00:22:17легко.
00:22:18С бессерверными функциями я смог значительно сократить стоимость работы этого сервера.
00:22:23Он включается только тогда, когда мне это нужно.
00:22:25Я отправляю эти пакетные очереди в Open AI,
00:22:29и он быстро возвращает их.
00:22:31Сэкономил кучу денег, делая это.
00:22:32А также тот факт,
00:22:33что я могу тестировать сам,
00:22:35а затем просто вырасти до тысяч людей,
00:22:37использующих это приложение,
00:22:39Vercel просто есть,
00:22:40масштабируется со мной.
00:22:42Весь процесс был отличным.
00:22:44Итак,
00:22:45переходя к следующему слайду,
00:22:46вы можете видеть,
00:22:47что это,
00:22:47по сути,
00:22:48фронтенд,
00:22:48который я построил с помощью Next.js.
00:22:50Вы увидите,
00:22:50что мы импортируем все записи нашего журнала изменений.
00:22:53Прямо здесь вы можете увидеть описание того,
00:22:55что это за журнал изменений.
00:22:57Если вы знаете прямо сейчас,
00:22:58вы уже можете создать задачу для конкретного репозитория GitHub,
00:23:02который вы привязали,
00:23:03что приводит нас к следующему слайду,
00:23:05мы должны подключить его к GitHub.
00:23:07Это позволяет вам подключать столько репозиториев,
00:23:10сколько вы хотите.
00:23:11При первом сканировании он будет выполнять программное сканирование,
00:23:15чтобы определить,
00:23:15считает ли он это релевантным для HubSpot.
00:23:18Помните,
00:23:18вы могли унаследовать репозитории,
00:23:20например,
00:23:2150 репозиториев.
00:23:22Вы понятия не имеете, что они делают.
00:23:23Вы бросаете их сюда.
00:23:24Он проведет первоначальное сканирование.
00:23:26Он найдет все,
00:23:27шаблоны файлов,
00:23:28которые он сможет найти,
00:23:29чтобы сказать: «О да,
00:23:30это может быть связано с HubSpot»,
00:23:32после чего вы можете перейти к следующему слайду,
00:23:35и вы увидите,
00:23:36что вы можете нажать кнопку HubSpot там,
00:23:38что означает,
00:23:38что он отправит это в OpenAI в пакетном режиме.
00:23:42Он будет отслеживать,
00:23:43используя систему RAG для отправки только важных деталей,
00:23:46которые,
00:23:46по его мнению,
00:23:47связаны с вашим репозиторием и HubSpot.
00:23:49Это займет немного времени,
00:23:51и как только это будет сделано,
00:23:53он вернется и покажет вам все возможные совпадения.
00:23:56Вы получите уведомление по электронной почте,
00:23:59я также работаю над уведомлением в Slack,
00:24:00которое говорит: «Эй,
00:24:01тебе лучше это проверить».
00:24:03Затем у вас есть возможность либо сказать: «Хорошо,
00:24:05это законно,
00:24:06я создам задачу по этому поводу,
00:24:07и мы начнем над ней работать»,
00:24:08либо я могу отклонить ее,
00:24:09потому что это на самом деле не относится к этому.
00:24:12Как только вы отклоните его,
00:24:13мы достаточно умны,
00:24:14чтобы начать понимать: «Хорошо,
00:24:16возможно,
00:24:17это не то,
00:24:17что мы хотим отслеживать для этого конкретного репозитория»,
00:24:21поэтому мы обновим график использования.
00:24:23После этого мы будем постоянно отслеживать каждый репозиторий,
00:24:27поэтому,
00:24:27если вы вносите изменения в какой-либо из репозиториев,
00:24:31мы это отслеживаем.
00:24:32Если вы внесете серьезное изменение,
00:24:34мы проведем повторное сканирование всех журналов изменений на предмет этого нового изменения,
00:24:38которое вы добавили,
00:24:39чтобы убедиться,
00:24:40что вы не сделали что-то,
00:24:41о чем не знали,
00:24:42что это проблема.
00:24:43Это также позволяет нам продолжать,
00:24:47и я забыл,
00:24:48что собирался сказать.
00:24:50Это позволяет нам проверять каждый раз,
00:24:53когда появляется новый журнал изменений,
00:24:55и просматривать каждый подключенный репозиторий,
00:24:58чтобы увидеть,
00:24:58относится ли этот журнал изменений конкретно к вам.
00:25:01Это позволяет вам не полагаться на свои глаза,
00:25:04чтобы заходить в журнал изменений и выяснять,
00:25:06относится ли это к вам или нет.
00:25:08Это позволяет журналу изменений приходить к вам в почтовый ящик,
00:25:11и вы можете действовать по нему по мере необходимости.
00:25:14С учетом сказанного,
00:25:15я думаю,
00:25:15что пришло время вопросов и ответов.
00:25:17Я постарался пробежаться по этому как можно быстрее,
00:25:19чтобы у нас было время для вопросов и ответов,
00:25:21если это необходимо.
00:25:22Ты хорошо поработал, Деннис.
00:25:23Да, отличная работа, Деннис.
00:25:25Быстро, быстро.
00:25:26Очень быстро.
00:25:27Хорошо, у нас есть несколько минут.
00:25:31Итак, у меня есть вопрос для начала.
00:25:34Я знаю,
00:25:35что сегодня мы видели,
00:25:36что демонстрации не всегда проходят идеально в прямом эфире.
00:25:39И хотя Vercel упрощает жизнь людям,
00:25:42всегда есть что-то,
00:25:43что мы можем сделать лучше.
00:25:45Никто не идеален.
00:25:46Итак,
00:25:46у вас есть какие-либо запросы на функции,
00:25:48которые вы хотели бы,
00:25:49чтобы я передала инженерной команде?
00:25:51Есть ли что-то,
00:25:52что вы хотели бы видеть по-другому или чего просто полностью не хватает?
00:25:55Пока не знаю насчет отсутствия.
00:26:00Но,
00:26:00честно говоря,
00:26:01есть некоторые функции,
00:26:02которые вы недавно выпустили,
00:26:04расширяющие время работы бессерверной функции,
00:26:07я полагаю.
00:26:07Я не помню название того,
00:26:09что вы только что выпустили,
00:26:10но меня это очень интересует,
00:26:12потому что,
00:26:13когда я работаю с Open AI,
00:26:14ожидание результата может превысить время жизни бессерверной функции.
00:26:19У вас было название для этого,
00:26:20и я извиняюсь,
00:26:20но я забыл,
00:26:21что это было.
00:26:21Но я очень рад начать использовать это,
00:26:24а также ваш AI SDK,
00:26:25который вы только что представили.
00:26:28Это не запросы на функции,
00:26:30это я наслаждаюсь функциями,
00:26:32которые вы выпускаете.
00:26:34У меня есть еще один.
00:26:35Я на самом деле использовал,
00:26:37я забыл название API для развертываний,
00:26:40потому что мне было немного раздражающе переходить от фронтенд-приложения,
00:26:47которое я построил,
00:26:48к вопросу: было ли развертывание вообще успешным?
00:26:53Итак, у вас есть API для получения статуса развертывания.
00:26:56Так что мне не нужно это делать.
00:26:58Я могу подождать,
00:26:58пока он не будет прочитан,
00:27:00прежде чем я,
00:27:00потому что я на самом деле не хочу смотреть на интерфейс,
00:27:03пока не возникнет проблема.
00:27:05И если у меня неудачное развертывание,
00:27:06это самая разочаровывающая проблема,
00:27:08с которой я когда-либо сталкивался.
00:27:09Но в остальном,
00:27:11имея несколько проектов,
00:27:12и я думаю,
00:27:13что некоторые интерфейсы,
00:27:15например,
00:27:15всегда есть места для улучшения с точки зрения опыта,
00:27:19но не было чего-то одного,
00:27:21что я бы заметил.
00:27:23Да,
00:27:23у меня есть одна возможная загвоздка,
00:27:25которая может быть на моей стороне,
00:27:27а не на стороне Vercel.
00:27:28Так что, если это запрос на функцию, отлично.
00:27:30Если это я, ну, позор мне.
00:27:33Я провел кучу тестов локально со всем своим добром,
00:27:36и функции не умирают локально.
00:27:38По крайней мере, у меня не умирали.
00:27:40Так что все выглядело просто как по маслу,
00:27:42вы знаете,
00:27:42это было потрясающе.
00:27:43Все получается.
00:27:44Работало на моей машине.
00:27:45Да.
00:27:46Работало на моей машине.
00:27:47Именно.
00:27:48Классика.
00:27:49Итак,
00:27:50если вы делаете,
00:27:50ну,
00:27:51Vercel,
00:27:51и,
00:27:52вы знаете,
00:27:52функции в конечном итоге умирают,
00:27:54я,
00:27:55опять же,
00:27:55это может быть моя проблема,
00:27:57когда мне просто нужно,
00:27:58ну,
00:27:58ограничить свои функции,
00:27:59установить,
00:28:00по сути,
00:28:01регулятор на свои функции,
00:28:02чтобы они могли работать только в течение определенного периода времени.
00:28:04Но если бы Vercel мог предложить это из коробки,
00:28:06это было бы довольно удивительно.
00:28:08Это как более длительное время выполнения.
00:28:10Да.
00:28:11Нет, нет.
00:28:12Ну,
00:28:12я имею в виду,
00:28:13время выполнения,
00:28:14соответствующее тому,
00:28:15что они имеют в продакшене.
00:28:17Локально.
00:28:18Да.
00:28:19Хорошо.
00:28:20Да.
00:28:21Я тоже сталкивался с подобным.
00:28:22Приятно знать.
00:28:23У тебя есть что-нибудь?
00:28:24Это здорово.
00:28:25Я знаю.
00:28:26Я всю жизнь через это проходил,
00:28:29стук рядом помогает мне вспомнить.
00:28:32У меня нет никаких конкретных запросов,
00:28:35нет,
00:28:35но я хотел бы отметить,
00:28:37что если вы новичок в HubSpot,
00:28:39но вам понравилось то,
00:28:40что вы увидели,
00:28:41и вы хотите попробовать нас.
00:28:43Вы всегда можете присоединиться к нашему Slack для разработчиков.
00:28:45Мы говорили об этом,
00:28:47и вы можете также ознакомиться с нашей документацией для разработчиков,
00:28:52чтобы попробовать что-то самостоятельно.
00:28:55Действительно.
00:28:56Отлично.
00:28:57Посмотрим.
00:28:58У меня есть еще один вопрос,
00:29:00который я люблю задавать,
00:29:02и это,
00:29:02я знаю,
00:29:03вы многое охватили.
00:29:05Итак,
00:29:05если есть какой-то ключевой вывод,
00:29:07лучшая практика или просто важный совет,
00:29:10который вы хотите,
00:29:12чтобы люди запомнили после этого?
00:29:14У меня есть один,
00:29:15и я не следовал ему,
00:29:17и до сих пор не следую,
00:29:19и я злюсь на себя,
00:29:21очень злюсь на себя.
00:29:23Используйте окружения и настраивайте их заранее.
00:29:27Не пытайтесь потом это ретрофитить,
00:29:30потому что это очень больно.
00:29:32Так что на раннем этапе наличие вашей среды,
00:29:35это одна вещь,
00:29:37например,
00:29:37в интерфейсе,
00:29:38очень легко привязать ваши переменные среды к среде.
00:29:43Например, настройте среды, используйте их рано.
00:29:48Не ждите, потому что делать это позже так, так больно.
00:29:51И я знаю,
00:29:52что мы все просто хотим создавать функциональность и видеть,
00:29:55как она работает как можно быстрее.
00:29:57И поэтому наличие тестовой среды может быть немного раздражающим,
00:30:01но да,
00:30:01это то,
00:30:02что я бы порекомендовал.
00:30:03Я бы поддержал это.
00:30:04У меня возникала ошибка,
00:30:06и я спрашивал курсор,
00:30:07почему моя ошибка,
00:30:08почему она не работала,
00:30:10когда я был в своей среде разработки,
00:30:12и это было потому,
00:30:14что я не включил использование своей среды,
00:30:16моего очень,
00:30:17моего секретного ключа среды внутри моей среды разработки.
00:30:22Так что это было похоже на то, что он не мог найти ключ.
00:30:24Так что это было немного глупо.
00:30:26Но да,
00:30:26я вижу этот вопрос о том,
00:30:28как вы используете ИИ в своих рабочих процессах?
00:30:30Итак, конкретно я люблю использовать наш разработчик MCP.
00:30:35Я думаю,
00:30:35это действительно хороший продукт,
00:30:37и мы всегда стараемся получить обратную связь о том,
00:30:39как мы можем сделать этот разработчик MCP лучше для разработчиков HubSpot.
00:30:43Но мне это нравится,
00:30:44потому что когда я спрашиваю курсор,
00:30:46типа: «О,
00:30:47я хочу что-то сделать».
00:30:48Что он сделает,
00:30:49так это будет искать в наших документах в реальном времени.
00:30:51Так что вы всегда будете получать самую актуальную информацию.
00:30:55Она не будет устаревшей,
00:30:57когда вы зададите вопрос MCP,
00:31:00и он начнет поиск по документации.
00:31:04Мое дополнение — быть, я использую ИИ скептически.
00:31:07Я подвергаю сомнению все,
00:31:09что он мне присылает,
00:31:10потому что часто,
00:31:11вы знаете,
00:31:11это все еще не идеально.
00:31:12Не надо, это так легко.
00:31:14Это как конфетка.
00:31:15Вы знаете,
00:31:16вы можете просто нажать «принять»,
00:31:17и вперед,
00:31:18вперед,
00:31:18вперед,
00:31:19вперед,
00:31:19вперед.
00:31:19Вы уже на 17 коммитов вглубь.
00:31:21И тогда,
00:31:22вы знаете,
00:31:22этот третий коммит на самом деле все сломает.
00:31:26Так что используйте Vercel или используйте Vercel,
00:31:29используйте ИИ скептически.
00:31:31Очень критично к этому.
00:31:33Всегда,
00:31:34всегда,
00:31:34всегда создавайте новые ветки,
00:31:36когда делаете что-то новое.
00:31:38Таким образом,
00:31:38вы можете просто избавиться от этого,
00:31:40если это необходимо.
00:31:40Воспользуйтесь Vercel и его средой предварительного просмотра,
00:31:45вы знаете,
00:31:46чтобы сделать это,
00:31:47и да,
00:31:48не слишком полагайтесь на него.
00:31:50Все хорошие советы.
00:31:51Я знаю,
00:31:52что время вышло,
00:31:53и вы все очень заняты и,
00:31:54вероятно,
00:31:55должны быть где-то сразу после этого.
00:31:58Так что большое спасибо, что уделили время.
00:32:00Я отпущу вас, чтобы вы могли вернуться к своим делам.
00:32:03Ценю это.
00:32:04Спасибо.
00:32:05Спасибо Vercel и всем, кто пришел.
00:32:09Отлично.
00:32:11Просто быстрое напоминание.
00:32:12У нас будет еще одна сессия на следующей неделе.
00:32:14Мы будем говорить о Python в Vercel.
00:32:18И вы всегда можете проверить календарь событий на community.vercel.com/events,
00:32:22чтобы увидеть все,
00:32:23что будет дальше.
00:32:24Спасибо всем.
00:32:25Хорошей недели.