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

Данный кейс может быть полезен, если вам нужно с помощью бота обновлять и выводить для пользователей:

данные по проведению различных мероприятий,
сроки акций,
меню ресторана,
задачи для сотрудников,
стоимость товаров и многое другое. :)

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

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

Часть 1.

Сконструируем сценарий.

Пожалуйста, при выполнении данной инструкции будьте внимательны и не отступайте от инструкции ни на шаг. Пишите именно те значения, которые рекомендованы в статье, иначе сценарий будет не работать. Когда вы успешно пройдёте урок, можете создать свой кейс на примере получившегося успешного сценария.

Добавим экран с приветствием!

Привет!


Добавим на этот экран метку с названием экрана - "привет".


Добавьте на этот экран блок Переход:


Добавление экран с перечислением возможностей бота.

От блока Переход создайте новый блок Текст:



Я помогу тебе узнать дату и время конференции Conversations 2019.


Добавим на этот экран метку - "задача":


Добавьте на экран "задача" блок Интенты и создайте следующие интенты:

* когда *

* где *

Сохраните блок.



Свяжите вариант Любая другая фраза с экраном "задача".


Добавьте на экран "задача" кнопки:

когда?

где?



Добавим HTTP-запросы.

От интента * когда * создайте HTTP-запрос. Оставьте его пустым, нажмите Сохранить. Мы заполним его позже.



Назовите этот экран с HTTP-запросом "читаем когда".


От интента * где * создайте новый HTTP-запрос. Оставьте его пустым, нажмите Сохранить. Мы заполним его позже.


Назовите второй экран с HTTP-запросом "читаем где".


Добавим выход из HTTP-запросов.

От варианта Завершен успешно запроса "читаем когда" создайте новый блок Текст:

Дата и время мероприятия: $event.когда.


Здесь мы используем переменную $event, так как позже в HTTP-запросе мы будем записывать в неё содержание таблицы.

Назовём этот экран "вывод когда":



От варианта Завершен с ошибкой запроса "читаем когда" создайте новый блок Текст:

Произошла ошибка чтения времени: $httpStatus. Попробуйте позже!

Назовём этот экран "ошибка чтения когда".


От варианта Завершен успешно запроса "читаем где" создайте новый блок Текст:

Место проведения мероприятия: $event.где.

Здесь мы также используем переменную $event, так как позже в HTTP-запросе мы будем записывать в неё содержание таблицы.

Назовём этот экран "вывод где":



От варианта Завершен с ошибкой запроса "читаем где" создайте новый блок Текст:

Произошла ошибка чтения местоположения: $httpStatus. Попробуйте позже!



Назовём этот экран "ошибка чтения где".



Скопируйте блок Интенты с экрана "задача":



Вставьте этот блок интентов на экраны "вывод когда":





И на экран и "вывод где":




На экраны "ошибка чтения когда" и "ошибка чтения где" добавьте блоки Переход:





Свяжите оба блока Переход с экранов "ошибка чтения когда" и "ошибка чтения где" с экраном "задача".





Свяжем оставшиеся интенты

Свяжите интент * когда * с экранов "вывод когда" и "вывод где" с экраном "читаем когда".





Свяжем интент * где * с экранов "вывод когда" и "вывод где" с экраном "читаем где".





Свяжите "Любая другая фраза" с экрана "вывод когда" с экраном "задача".

Также, свяжите "Любая другая фраза" с экрана "вывод где" с экраном "задача".

Итак, мы закончили создание ветки чтения параметров из таблицы.

Вот что у нас получилось:

Весь сценарий:



Вид крупнее:





Запросы оформим позже.

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

Наш бот будет в основном общаться с пользователями, но администратор может захотеть воспользоваться этим же ботом, чтобы обновить дату и время проведения мероприятия (например, когда планируется следующее мероприятие, ввести новую дату и время).

Для того, чтобы только администратор мог попасть в эту ветку, добавим в любом месте сценария блок Интенты.


Добавим интент, который будет содержать пароль, например "12345".

Сделаем блок доступным из любого места сценария.


Назовите этот экран "пароль".



Добавим выбор параметров для записи

От интента "12345" создадим новый блок Текст:

Что ты хочешь записать? Время или местоположение?


Назовите этот экран "запись".



Скопируйте и вставьте сюда тот же блок Интентов, который на экране "задача".


Свяжите вариант "Любая другая фраза" с экраном "запись".


Добавьте на экран "запись" кнопки:

когда

где



Добавим блоки приема параметров.

От интента * когда * на экране "запись" создадим блок Ввод текста, в котором напишем:

Сообщение

Напиши одним сообщением дату и время мероприятия.

Имя переменной

when



Назовите этот экран "пишем когда",



От интента * где * на экране "запись" создадим блок Ввод текста, в котором напишем:

Сообщение

Запиши одним сообщением местоположение мероприятия.

Имя переменной

where



Назовём этот экран "пишем где":


Добавим HTTP-запросы для записи.

От варианта "Переход после ввода $when" создайте новый HTTP-запрос. Сохраните его, мы заполним его позже.

Назовите этот экран "отправка когда".



От варианта "Переход после ввода $where" создайте новый HTTP-запрос. Сохраните его, мы заполним его позже.

Назовите этот экран "отправка где".



Добавим выход из блоков HTTP-запрос.

От варианта "Завершен с ошибкой" экрана "отправка когда" создайте новый блок Текст:

ошибка записи времени: $httpStatus

Назовите этот экран "ошибка отправки когда".



Добавьте на экран "ошибка отправки когда" блок Переход и свяжите его с экраном "запись".



От варианта "Завершен с ошибкой" экрана "отправка где" создайте новый блок Текст:

ошибка записи местоположения: $httpStatus

Назовите этот экран "ошибка отправки где".


Добавьте на экран "ошибка отправки где" блок Переход и свяжите его с экраном "запись".




Успех записи

От варианта "Завершен успешно" экрана "отправка когда" создайте новый блок Текст:

успешно записано

Назовите этот экран "успех записи".



Свяжите вариант Завершен успешно экрана "отправка где" с экраном "успех записи".





Добавьте на экран "успех записи" блок Переход и свяжите его с экраном "задача",



Готово! Мы сформировали сценарий.

Полностью сценарий выглядит так:

Верхняя часть:



Нижняя часть:





Теперь нужно оформить таблицу, в которую будем вносить записи, и оформить запросы.

Часть 2. Оформление таблицы.

Создайте папку на своем гугл диске, запишите её название. Например, создадим в корне диска папку "IFTTT". Нужно запомнить название, так как позже оно нам понадобится для записи.



В папке "IFTTT" создадим таблицу "мероприятие". Название также понадобится нам позже.



Оформите таблицу. Нам нужно добавить название столбцов и занести в них какие-нибудь тестовые записи.

Пример таблицы здесь. Можете просто скопировать эту таблицу.

Таблица должна выглядеть так:



В таблице будут столбцы:

когда

где

мероприятие

Названия столбцов понадобятся нам позже в сценарии, поэтому пишите их именно таким образом.

В колонку "когда" внесём какую-нибудь дату, например:

26 ноября

В колонку "где" внесём какое-нибудь место, например:

м. Автозаводская, ул. Ленинская Слобода, 26, строение 11

В колонку "мероприятие" внесем название какого-нибудь мероприятия, например:

Conversations

В этом уроке мы будем выводить и записывать именно данные к этой конференции - Conversations. Поэтому важно, чтобы мероприятие было написано именно так.

Позже мы будем переписывать эти тестовые значения.

Опубликуйте таблицу.

Файл -> Опубликовать в интернете -> Опубликовать -> Ок -> Закройте всплывающее окно.

Путь из всплывающего окна копировать не нужно.





Опубликовать таблицу очень важно, иначе не удастся читать данные из неё.

Часть 3. Оформляем запросы для чтения

Оформляем запросы чтения из таблицы.

Откройте блокнот, скопируйте и вставьте в него следующее:

http://tools.aimylogic.com/api/googlesheet2json?sheet=1&id=

Вернитесь в таблицу и скопируйте из неё следующее:



Нужное значение будет находиться между /d/ и /edit

Вставьте значение из url таблицы в блокнот без пробелов сразу за строкой, которую вставили в блокнот ранее.



Откройте HTTP-запрос "читаем когда" и оформите его следующим образом:



метод GET

в поле URL вставьте строку, которая получилась в блокноте в шаге перед этим.

На вкладке RESPONSE нажмите на плюс и добавьте:

Имя переменной

event

Значение

_.findWhere($httpResponse, {"мероприятие": "Conversations"})

Вкладки BODY и HEADERS заполнять не нужно.



В этом случае мы всегда будем показывать значения, которые будут в колонке под названием "мероприятие" и в строке, соответствующей мероприятию "Conversations".

Откройте HTTP-запрос "читаем где".



Оформите его совершенно так же, как запрос "читаем когда". Все поля нужно заполнить абсолютно идентично запросу "читаем когда".

Часть 4. Настраиваем запись данных с использованием сервиса IFTTT.

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

Часть 5. Оформляем HTTP-запросы для записи.


Откройте экран "отправка когда". Оформите данный запрос следующим образом:

метод POST


URL - вставьте URL для записи даты. Ранее вы должны были сохранить его в блокноте.


BODY скопируйте и вставьте:

{
"value1": "$when"
}




Перейдите на вкладку HEADERS и заполните:

Content-Type

application/json



Сохраните блок.


Откройте запрос "отправка где".

метод POST



URL - вставьте URL для записи местоположения. Ранее вы должны были сохранить его в блокноте.


BODY скопируйте и вставьте:

{
"value1": "$where"
}



Перейдите на вкладку HEADERS и заполните:

Content-Type

application/json


Сохраните блок.

Готово!

Бот готов. Теперь бот может записывать время и место проведения конференции Conversations, а также записывать новое время и место.

Можем протестировать его:





Была ли эта статья полезна?
отменить
Спасибо!