Добро пожаловать во второй пост мини-серии о начале работы с SMS-чатами! Сегодня вы изучите основы создания бота, работая в дружелюбном визуальном конструкторе без необходимости написания кода — **Twilio Studio**.
В этом руководстве вы узнаете, как создать **бота для новогодних обещаний**, который поможет пользователям взять на себя обязательства и оставаться на верном пути. Чтобы сделать новогоднее обещание по-настоящему официальным, бот предложит пользователю подписать контракт. Контракт включает:
— Имя человека, берущего на себя обязательство.
— Само обещание.
— Дату выполнения.
— Подпись для официального подтверждения.
🎗 Напоминания для успешного выполнения обещания!
Но сначала сделайте селфи и обязательно опробуйте работающую версию бота для новогодних обещаний, если вы этого ещё не сделали.
Давайте рассмотрим, что вам понадобится для этого руководства:
— Аккаунт Twilio
— Номер телефона, зарегистрированный в Twilio
— Аккаунт HelloSign — он понадобится для отправки контракта пользователю на электронную почту.
— Аккаунт Zapier, который мы будем использовать для интеграции с Google Calendar.
Прежде чем начать, давайте посмотрим, как выглядит панель Studio при первом открытии:
Блок **Trigger** помогает запустить поток. Есть три способа начать поток:
**Входящее сообщение**: Поток запускается, когда пользователь отправляет SMS.
**Входящий звонок**: Поток запускается, когда пользователь звонит.
**REST API (входящий запрос)**: Поток можно запустить программно. Эту возможность мы рассмотрим в другом руководстве.
**Библиотека виджетов** — это список интерактивных виджетов для создания бота. Эти виджеты представляют собой простые блоки перетаскивания, которые можно разместить на холсте для построения бота.
Теперь, когда мы это выяснили, давайте приступим к созданию бота для новогодних обещаний.
*Первое, что нам нужно для контракта бота, — это имя пользователя.*
— Перетащите виджет **Send & Wait for Reply** (этот виджет позволяет собирать ввод пользователя на основе его ответа на ваше сообщение) на холст и дайте ему имя. Я настоятельно рекомендую переименовывать виджеты, чтобы они отражали основное действие, которое они выполняют, — в данном случае *Name*.
— В поле **Message Body** введите запрос, предлагающий пользователю ответить своим именем.
— Соедините его с точкой **Incoming Message** виджета **Trigger**.
*Поздравляем! Вы только что настроили первый шаг для создания бота!*
Шаги 2 и 3 аналогичны первому — мы продолжим задавать вопросы и собирать ответы.
*Следующее, что нам нужно для контракта, — это новогоднее обещание пользователя.*
Этот вопрос должен быть задан сразу после получения ответа на вопрос из шага 1.
— Перетащите ещё один виджет **Send & Wait for Reply** на холст и назовите его. Я назову его *Resolution*.
— Соедините его с точкой **Reply** вашего первого виджета *Name* — это запустит виджет *Resolution* после получения ответа на виджет *Name*.
— В поле **Message Body** введите запрос, предлагающий пользователю ответить своим новогодним обещанием.
**ПРИМЕЧАНИЕ:** На изображении выше вы заметите использование двух открывающих фигурных скобок для активации выпадающего списка. Studio поддерживает язык шаблонов Liquid, что является причудливым способом сказать: «способ помочь вам загружать динамический контент в ваш поток». Таким образом, вводя две открывающие фигурные скобки, мы сообщаем Studio, что хотим автоматически заполнить этот текст на основе чего-либо.
Более конкретно, мы хотим использовать имя пользователя в новом сообщении. Это можно сделать, добавив **переменную**, представляющую ответ (текст сообщения), который мы получили (входящий) на предыдущем шаге (*Name*). Таким образом, имя переменной, которую мы хотим использовать, — **{{widgets.Name.inbound.Body}}**. Начните вводить её, и вы увидите варианты автозаполнения, как по волшебству!
*Два шага позади, осталось три. Бот для новогодних обещаний уже близко!*
*Теперь, когда вы собрали имя и обещание, следующее, что вам нужно для контракта, — это дата выполнения обещания.*
— Аналогично шагам 1 и 2, перетащите виджет **Send & Wait for Reply** на холст и дайте ему имя. Я назову его *CompletionDate*.
— Соедините его с точкой **Reply** виджета *Resolution* — это запустит его после получения ответа на виджет *Resolution*.
— В поле **Message Body** введите запрос, предлагающий пользователю ответить датой выполнения.
*Вы на полпути! Осталось всего два шага. ;)*
*Теперь отправьте пользователю сообщение, информирующее его о том, что он получит контракт для подписи и напоминание на дату выполнения.*
Для этого необходимо:
— Перетащите виджет **Send Message** (этот виджет позволяет отправлять сообщение пользователю) на холст.
— Соедините его с точкой **Reply** виджета *CompletionDate*.
— В поле **Message Body** введите сообщение, информирующее пользователя о том, что вы отправите ему контракт для подписи, а также напоминание на дату выполнения *CompletionDate*.
**ПРИМЕЧАНИЕ:** Ссылка bitly, которую вы видите в теле сообщения, ведёт на контракт в HelloSign. Как только пользователь перейдёт по ссылке, он будет перенаправлен на HelloSign, где сможет поставить подпись и получить подписанный контракт на свою почту. Чтобы узнать, как создать контракт в HelloSign, следуйте инструкциям ниже:
— Перейдите на **HelloSign.com** и нажмите **Templates** в меню слева.
— Выберите **Create a Link**.
— Загрузите сертификат (убедитесь, что он готов), который должны подписать пользователи.
— Добавьте **роль** (в данном случае *Resolutioner*), которая должна подписать документ.
— Перетащите поля **signature** и **signing date** из верхнего меню.
— Дайте сертификату имя (например, *Certificate of Resolution*).
— Появится всплывающее окно с **ссылкой**. Скопируйте её и вставьте в bitly, чтобы получить сокращённую версию.
— Вставьте ссылку bitly в поле **Message Body** вашего виджета **SendMessage**.
*Поздравляем! Вы на финишной прямой. Остался всего один шаг. :)*
*Чтобы напомнить пользователю о его обещании в календаре, вам нужно интегрировать Google Calendar со Studio. Для этого мы будем использовать два инструмента:*
— Виджет **HTTP Request**, также известный как вебхук. Если вы ещё не знаете, что это такое, не беспокойтесь. Это, по сути, соединение, которое позволяет нашему приложению взаимодействовать с другим приложением для обмена информацией. Это называется POST-запросом.
— **Google Calendar через Zapier**: Самый простой способ, который я нашёл для подключения к Google Calendar, — это настроить простой Zap. Zap будет управлять потоком информации между нашим потоком и Google Calendar. Наш Zap будет говорить: «Когда я получаю новое обещание, отправляй напоминания Resolutioner каждый месяц, а также на выбранную дату выполнения».
**Шаг 5a: Как настроить HTTP-запрос:**
— Перетащите виджет **HTTP Request** на холст.
— Соедините его с точкой **Sent** виджета **SendMessage** — это запустит его после отправки сообщения.
— Оснастите наш контракт HelloSign информацией, которой хотите поделиться, — именем пользователя, его обещанием и датой выполнения. Для этого задайте виджету следующие **HTTP Parameters**, как показано в таблице ниже. Обратитесь к гифке, чтобы увидеть, как их вводить.
**Шаг 5b: Google Calendar через Zapier (сделайте это самостоятельно)**
Наш виджет HTTP почти готов. Ему не хватает лишь одного — адреса или URL **Zap**. Для этой части вам нужно использовать Zapier. Для этого последнего раздела обратитесь к документации, предоставленной Zapier ниже:
По сути, вам нужно создать два Zaps.
**Первый Zap:** *Для настройки ежемесячных напоминаний об обещании, а также напоминания на дату выполнения в Google Calendar* (см. гифку ниже)
Теперь мы установили соединение между нашим потоком в Studio и новым Zap.
**ВАЖНО:** Давайте протестируем наш поток, подключив его к одному из зарегистрированных номеров телефонов и отправив сообщение. Это передаст нашему Zap тестовые данные, которые ему нужны, чтобы проверить, правильно ли он работает:
— Нажмите на виджет **Trigger** в верхней части потока.
— В правой панели инспектора нажмите на ссылку **Use your flow with a phone number**.
— Во всплывающем окне нажмите «*Let’s do this now*».
— Откроется страница со всеми вашими активными номерами телефонов. Нажмите на номер телефона, чтобы подключить его к потоку бота для новогодних обещаний.
— В разделе Messaging, когда приходит сообщение, настройте номер на использование «Studio Flow» в первом выпадающем списке и выберите «Resolution Bot» во втором.
— Сохраните изменения.
— Протестируйте свой поток, отправив сообщение на ваш номер! 🙌 Убедитесь, что прошли все шаги.
**Второй Zap:** Для отправки пользователю напоминаний по SMS
— Настройте SMS-напоминания для пользователя. (См. гифку ниже)
Если вам понравилось создавать бота для новогодних обещаний, вам понравится создание бота Санты. Попробуйте прямо сейчас!
Отправляйте любые отзывы или рассказывайте, что вы создаёте, присоединившись к сообществу Studio в Slack-канале или отправив письмо на studio-feedback@twilio.com.
Мы с нетерпением ждём, что вы создадите с помощью Twilio Studio!