Мы живем в эпоху сотрудничества и командной работы. Это означает, что даже самая простая задача в наши дни (например, заказ обеда) часто выносится на голосование комитета. К счастью, наша эпоха также является эпохой великих технологических достижений, и, возможно, нет лучшего способа прийти к консенсусу, чем через опросы и опросы. Сегодня мы увидим, как мы можем использовать Build on Standard Library для развертывания быстрого и простого в использовании приложения для опроса, которое использует ваш номер Twilio для отправки SMS-сообщений вашей группе, а затем регистрирует их ответы в одном удобная база Airtable.

Что вам понадобится заранее

Шаг 1. Настройка Airtable

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

  • Вопросы - в этой таблице отслеживаются ваши текущие и прошлые вопросы. Вопросы помещаются в первый столбец, а остальные столбцы будут обрабатываться нашим приложением.
  • Контакты - это будет таблица лиц, входящих в вашу группу. Единственное обязательное поле здесь - это номер телефона (например, код страны + код города + номер телефона 14155309876). Поле имени необязательно
  • Ответы - эта таблица будет полностью заполнена нашим приложением. Он хранит возвращенное текстовое сообщение вместе с тем, кто отправил ответ и на какой вопрос был предназначен ответ.

Для этого урока вам нужно будет добавить хотя бы один номер в таблицу контактов (я бы порекомендовал протестировать с вашим собственным номером мобильного телефона) и один вопрос в таблицу вопросов (не стесняйтесь продолжить обсуждение GOAT, если хотите. нравиться). Теперь, когда база настроена, давайте приступим к работе со стандартной библиотекой!

Шаг 2. Создайте рабочий процесс на основе стандартной библиотеки

Если вы еще этого не сделали, создайте себе учетную запись стандартной библиотеки (это бесплатно!) И перейдите на https://build.stdlib.com, чтобы приступить к построению рабочего процесса. В этом проекте мы хотим инициировать опрос, посетив URL-адрес, поэтому в разделе Когда это событие происходит выберите HTTP или Webhook в качестве вашего события и введите следующее параметры:

Когда это событие происходит

  • HTTP или Webhook → HTTP-запрос отправляется в конечную точку проекта → send-survey

Этот рабочий процесс будет запущен

  • Airtable → Выбрать строки, запросив базу
  • Airtable → Выбрать строки, запросив базу
  • Twilio → Отправить сообщение

Когда вы закончите, ваш экран должен выглядеть так:

Шаг 3. Свяжите свои ресурсы

Следующим шагом будет привязка ваших учетных записей Twilio и Airtable к идентификатору в стандартной библиотеке. Для тех, кто не знаком, привязка ресурса к стандартной библиотеке позволяет вам один раз безопасно настроить свои учетные записи, а затем сделать их доступными для всех ваших рабочих процессов. Начнем с того, что свяжем аккаунт Airtable и выберем базу. Нажмите кнопку Ссылка на ресурс, чтобы открыть следующий экран:

Если вы впервые подключаете свою учетную запись Airtable, нажмите кнопку Добавить новую учетную запись и введите отображаемое имя на следующем экране. Вам также необходимо получить свой ключ API из Airtable и указать его здесь. Это должно выглядеть примерно так:

Теперь вы попадете на экран, на котором представлены все ваши базы. Выберите тот, который вы добавили ранее, из нашего шаблона под названием Twilio Survey, а затем нажмите Готово [База ссылок].

Это касается Airtable, так что теперь вы можете приступить к привязке номера Twilio к своему проекту. Сначала процесс будет очень похож на процесс Airtable, и вы увидите такое же всплывающее окно с просьбой Добавить новую учетную запись или Связать новый ресурс, в зависимости от использовали ли вы ранее Twilio в стандартной библиотеке или нет. Если вы видите здесь номер, который вы хотели бы использовать для этого проекта, нажмите зеленую кнопку Выбрать и переходите к следующему шагу.

Если у вас еще нет привязанного номера, нажмите Добавить новую учетную запись или Связать новый ресурс. После завершения загрузки экрана вы должны увидеть что-то вроде следующего:

Примечание. Если у вас есть номера, которые вы приобрели в Twilio не из стандартной библиотеки, вы заметите, что они отсутствуют на этом экране. Это результат того, как работают приложения Twilio Connect. Чтобы узнать больше о приложениях и дополнительных учетных записях Twilio Connect, щелкните здесь.

Теперь вы можете либо выбрать ранее связанный номер, который вы приобрели через стандартную библиотеку, либо приобрести новый номер для использования в этом проекте. Как только вы это сделаете, нажмите синюю кнопку Готово [Link Phone Number], и вы увидите следующее:

Часть 4. Настройка рабочего процесса

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

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

  • таблица → Вопросы
  • где → ключ: wasSent → выберите: ПУСТО
  • Нажмите на синий знак плюса рядом с Добавить новое предложение AND к этой операции запроса KeyQL.
  • В этом новом поле введите: где → клавиша: Статус → выберите: равно → введите: Ожидает

Затем нажмите на шесть точек слева от Twilio в верхней части нашего диалогового окна. У нас есть возможность ввести здесь до четырех значений, но нам нужно только два. В поле Кому: введите:

${result.step1.selectQueryResult.rows[0].fields.Number}

Затем в поле body: введите:

${result.step2.selectQueryResult.rows[0].fields.Question}

Нажмите зеленую кнопку Запустить с тестовым событием в нижней части диалогового окна, и вы должны получить текст с вопросом, который вы ввели в Airtable. Если да, значит, работает!

Хотя в интерфейсе сборки можно делать большую часть того, что нам нужно, нам нужно будет внести некоторые настройки в наш код для хранения результатов нескольких запросов (что, если в нашей таблице контактов более одного номера?). Чтобы сделать все это, нам нужно кратко погрузиться в структуру сборки, переключив кнопку Режим разработчика в положение Вкл.

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

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

Первая половина этого позволит нам получить 1. все номера, которые мы включили в таблицу Контакты, и 2. вопрос, который мы хотим отправить из Вопросы стол. Обратите внимание, что критерием выбора вопроса является то, что столбец wasSent не отмечен (пустой), а в столбце Статус указано Ожидается. . Если этому запросу соответствует два или более вопроса, будет отправлен только последний добавленный.

Эта вторая половина этого кода позволяет нам выполнять действие Отправить сообщение из нашей связанной учетной записи Twilio каждому пользователю, которого мы добавили в нашу таблицу Контакты, а затем изменяет wasSent для вопроса равно true. Теперь нажмите зеленую кнопку Выполнить с тестовым событием еще раз, и вы должен получить сообщение с вашим первым вопросом!

Если вы получили текстовое сообщение и значение столбца wasSent в вашей таблице было изменено на true (то есть теперь этот столбец отмечен зеленой галочкой!), То нажмите синюю кнопку Далее. На этой последней странице вы назовете свой проект (назовите его twilio-survey), а затем нажмите синюю кнопку Хорошо, отправьте!. Вы получите сообщение о том, что вы молодец. Отличная работа!

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

https://<Your-Username>.api.stdlib.com/twilio-survey@dev/send-message/

Где ‹Your-Username› заменяется на имя вашей учетной записи в стандартной библиотеке. twilio-survey - это имя нашего проекта, а send-message - это имя конечной точки, которую мы установили при определении нашего события.

Часть 5. Сохранение ответов

Теперь нам нужен способ отслеживать ответы. Это потребует создания нового события в нашем проекте для вставки SMS-сообщений на наш номер Twilio в нашу базу Airtable. Вернитесь в свой проект, нажав ссылку dev (нажмите, чтобы управлять) на главной странице вашего проекта:

Найдите поле, позволяющее добавлять новые события. Он будет расположен прямо под предыдущим созданным вами рабочим процессом. Вы увидите серый текст, который гласит: Источник события и Когда это событие происходит…

Для этого рабочего процесса мы хотим выбрать:

  • Twilio → получено смс

Ваш раздел Интеграции теперь должен выглядеть следующим образом:

После того, как вы нажали [+] Добавить новый рабочий процесс, настройте рабочий процесс следующим образом на странице диалогового окна:

  • Airtable → Выбрать строки, запросив базу
  • Airtable → Выбрать строки, запросив базу
  • Airtable → Вставить строку в базу

Нажмите Далее, и вы должны увидеть ранее связанные ресурсы. Не стесняйтесь просто нажать Далее. Здесь мы снова окунемся в режим разработчика. Установите для этого параметра значение Вкл и вставьте следующий фрагмент в редактируемую часть поля:

Давайте быстро рассмотрим, что мы здесь делаем.

  1. Мы запрашиваем базу, чтобы определить, какой вопрос в настоящее время активен.
  2. Мы находим пользователя, связанного с отвечающим номером телефона
  3. Мы создаем новую запись в таблице Ответы и связываем этот ответ с ранее выбранным вопросом и пользователем, соответственно.

Однако тестирование этого кода приведет к ошибке, поэтому нам нужно внести одно изменение в тестовое событие.

Если щелкнуть значок шестеренки рядом с кнопкой Запуск в тестовой среде, вы увидите что-то вроде этого:

Наш рабочий процесс пытается найти пользователя, у которого есть номер, связанный с клавишей "От" внутри этого события. Измените это значение («+15555555555») на число, которое присутствует в таблице Контакты (т.е. ваш номер телефона с предшествующим знаком «+», например: «+ 18155451993». Здесь необходимо указать «+» и код страны). Оставьте все остальные значения как есть и попробуйте снова запустить тест. Если теперь вы видите сообщение «Hello from Twilio!» в своей таблице Ответы, то поздравляю! Все готово. Нажмите Далее и, наконец, Отправить!

Готово!

Вот и все! Устройтесь поудобнее и наблюдайте, как приходят ответы. Как мы упоминали ранее в этом руководстве, убедитесь, что есть только один вопрос со статусом Pending со значением wasSent, равным true , поскольку первым вопросом, отвечающим обоим этим критериям, будет тот, ответы на который будут отправлены. Если вы чувствуете, что на вопрос есть достаточно ответов, просто измените поле «Статус» для этого вопроса на Готово, а затем продолжайте добавлять новый вопрос. Перейдите к конечной точке URL-адреса, чтобы доставить новый вопрос. Удачного голосования!

Кевин Бриммерман (Kevin Brimmerman) - инженер-программист в стандартной библиотеке. Вне работы он заядлый бегун и стойкий фанат спорта из Чикаго. Вперед, детеныши!