В этой демонстрации мы создадим простое SMS-приложение, которое позволит вам отправить текстовое сообщение на номер телефона, а затем автоматически опубликовать это сообщение в хранилище данных Turbo 360. Затем мы будем отображать эти сообщения в веб-интерфейсе.

Для просмотра видео версии нажмите ниже:

Начиная

Убедитесь, что у вас Node версии 6 или выше.

$ node -v

Затем выполните следующие команды:

$ sudo npm i -g gulp
$ sudo npm i -g webpack
$ sudo npm i -g turbo-cli

На момент демонстрации последняя версия Turbo — 0.15.7. Если вы не уверены, какая у вас версия, вы можете проверить, выполнив:

$ turbo version

Перейдите в Turbo 360 и создайте учетную запись, если у вас ее еще нет. Создайте новое приложение под названием текстовая доска. Скопируйте идентификатор приложения из правой части окна.

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

$ cd ~/Desktop

Создайте новый проект, выполнив следующую команду:

$ turbo new text-demo

Это создает базовое приложение Node/Express, с которым вы можете работать.

Выполните следующие команды:

$ cd text-demo
$ npm install

Это установит все пакеты и зависимости для вашего проекта. Этот шаг должен быть вам знаком, если вы ранее работали с Node и Express.

Затем мы хотим запустить сервер разработки, чтобы убедиться, что пока все работает правильно.

$ turbo devserver

Используйте свой браузер, чтобы перейти к localhost:3000, и вы увидите простое приложение Turbo 360. Чтобы остановить сервер разработки, нажмите CTRL+C на клавиатуре.

Далее мы подключим наш локальный исходный код к проекту Turbo, который мы создали ранее.

$ turbo app PASTE_APP_ID_HERE
$ turbo deploy

Теперь ваш проект будет подключен к бесплатной тестовой среде, предоставляемой Turbo 360. Когда эта команда завершит выполнение, вы увидите что-то вроде: DEPLOY COMPLETE: http://YOUR_STAGING_URL.turbo360-vertex.com

Скопируйте этот URL-адрес и перейдите к нему с помощью браузера. Вы увидите ту же страницу, что и раньше, но теперь мы знаем, что проект работает как в живой среде, так и в локальной.

Исходный код

Это проект Node/Express, поэтому наш исходный код будет следовать традиционной архитектуре Node/Express. app.js — это традиционная точка входа для проектов Node/Express. Здесь вы увидите базовую настройку Node/Express с некоторыми основными маршрутами. В папке представлений вы можете открыть index.mustache, чтобы просмотреть код страницы, которую мы только что видели в браузере. Имейте в виду, что при использовании скаффолда Turbo 360 по умолчанию реализовано несколько вещей: установлен шаблонизатор усов, а в качестве каталога статических ресурсов используется каталог public.

Создание конечной точки API

Перейдите к папкам маршрутов и создайте новый файл с именем sms.js:

$ cd routes
$ touch sms.js

Целью этого маршрута будет получение текстовых сообщений.

Откройте новый файл route/sms.js. Скопируйте код из route/index.js и вставьте его в sms.js. Удалите все текущие конечные точки, чтобы у вас осталось следующее:

Чтобы убедиться, что этот маршрут работает правильно, мы возвращаем некоторые основные данные JSON. Добавьте следующий код:

res.json({
     confirmation: 'success',
     data: 'this is the sms route!'
})

Итак, sms.js выглядит так:

Далее маршрут необходимо подключить в app.js как стандартный проект Express. Вернитесь к app.js и подключите sms.js, добавив код в строки 10 и 15:

Этот код создает путь для обслуживания созданного нами нового sms-маршрута.

Запустите команду $ turbo devserver. И перейдите к localhost:3000/sms, чтобы увидеть JSON, который мы определили для этого маршрута. Теперь мы знаем, что наш маршрут настроен правильно. Позже мы вернемся к этому маршруту.

Использование Twilio

Twilio отправляет POST-запросы на сервер, который вы определяете с помощью веб-перехватчика, а POST-запросы отправляют данные через тег body запроса. Это означает, что нам нужна еще одна конечная точка API в route/sms.js, которая будет получать тексты от Twilio. Добавьте обработчик запроса POST, который проверяет сообщение и отправителя, а затем добавьте сообщение в хранилище данных Turbo 360. Мы делаем это, добавляя следующий код в sms.js:

Если вы хотите протестировать остальную часть этого проекта, настройте учетную запись в Twilio и зарегистрируйте номер телефона. С пробной учетной записью перейдите в раздел Обучение и разработка -> Создать -> Получить номер. Затем перейдите на панель инструментов, нажмите на свой номер телефона и прокрутите вниз до раздела Сообщения. В текстовом поле рядом с ПРИХОДИТ СООБЩЕНИЕ введите URL-адрес промежуточного приложения Turbo 360, а затем /sms. URL будет иметь вид http://text-board-zpqpoy.turbo360-vertex.com/sms.

Теперь мы можем отправлять текстовые сообщения на номер телефона Twilio, и он будет добавлен в хранилище данных Turbo 360, связанное с этим проектом. Чтобы отобразить эти сообщения, мы должны сначала изменить route/index.js, чтобы получать сообщения из хранилища данных и отображать страницу, которая их отображает. Файл должен содержать следующий код:

Далее мы изменим views/index.mustache для отображения сообщений в хранилище данных:

На этом этапе вы должны протестировать это локально, запустив сервер разработки и перейдя на localhost: 3000, а также протестировать промежуточную среду, развернув и затем введя свой промежуточный URL-адрес в свой веб-браузер.

Тема

Чтобы увидеть список доступных тем, предоставляемых Turbo 360, запустите $ turbo themes. Для этой демонстрации мы используем тему Turbo Hyperspace. Для этого выполните команду $ turbo theme hyperspace. Вы могли заметить, что это изменяет ваш файл index.mustache. Если вы запустите devserver и перейдете на localhost:3000, вы увидите, что тема реализована.

Tags.js

Затем перейдите в каталог маршрутов и создайте новый файл с именем tags.js.

$ cd routes
$ touch tags.js

Убедитесь, что вы подключили этот новый файл в своем app.js. Мы можем протестировать это соединение так же, как мы тестировали sms.js, запустив сервер разработки и введя localhost:3000/tags в вашем браузере. Прямо сейчас tags.js и app.js должны выглядеть так:

И:

Затем мы хотим очистить URL-адрес, предоставленный маршруту тегов, для данных, содержащихся в его метатегах, поэтому мы собираемся установить superagent и cheerio. Superagent используется для выполнения HTTP-запросов, а cheerio позволяет выполнять парсинг HTML.

$ npm install -S superagent
$ npm install -S cheerio

Убедитесь, что вам требуются superagent и cheerio в верхней части файла, и добавьте код для HTTP-запроса и очистки HTML, чтобы tags.js выглядел следующим образом:

Чтобы использовать маршрут тегов, выберите новостную статью в Интернете и введите в браузере следующий адрес: localhost:3000/tags?url=http://URL_FOR_YOUR_ARTICLE.com.

Или используйте этот пример: http://localhost:3000/tags?url=https://nypost.com/2017/11/14/knicks-are-loving-their-offense-without-phil-jackson/

Скрейп.js

Теперь tags.js был создан только для тестирования, поэтому сейчас мы собираемся создать служебную функцию, которая позаботится о HTTP-запросе и очистке HTML. Из корневого каталога вашего проекта выполните следующие команды:

$ mkdir utils
$ cd utils
$ touch scrape.js

Это создаст новый каталог с именем utils и файл с именем scrape.js внутри этого каталога. Затем переместите код из tags.js в новый файл, чтобы scrape.js выглядел так:

Поскольку теперь мы передаем функцию очистки на аутсорсинг, измените tags.js, чтобы он содержал:

Не забудьте потребовать очистку в верхней части файла. Вы можете проверить это, запустив сервер разработки и перейдя на localhost:3000/tags.

Заканчивать

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

Наконец, мы изменим наш файл index.mustache, чтобы отображать информацию, полученную из ссылок, которые мы получаем через SMS:

Убедитесь, что вы протестировали это в реальном приложении, развернув его в Turbo 360, а также протестировав локально. Обратите внимание, что в этой базовой демонстрации мы исходим из предположения, что наши сообщения будут либо просто текстом, либо просто URL-адресом, а не комбинацией того и другого.

Если все работает, то поздравляю! Вы создали новостную ленту SMS!

Если у вас есть вопросы или комментарии относительно этого руководства, обращайтесь по адресу [email protected].