Данный материал, вероятно, устарел. Если у вас есть какие-либо правки — пишите в комменты. Я исправлю и дополню статью
Наконец-то я разобрался в API ВКонтакте и сразу же замутил одну послезную феню, которую давно хотел реализовать: автоматическое оповещение своих подписчиков в группе ВКонтакте о том, что начался стрим. Ведь как обычно делаешь? Запустил стрим, идешь в свою группу, ручками пишешь, что запустил. Еще может и картинку какую-то ищешь.
Можно такой пост заранее сделать и запланировать ко времени начала стрима, если утвердил для себя расписание (почему следует стримить по рассписанию, я, кстати, уже рассказывал в своем Twitch FAQ), но в любом случае — это ручная работа. А я как программист — хоть и в отставке — очень не люблю делать какие-то регулярно повторяющиеся действия самостоятельно и всегда ищу способы автоматизации процесса.
IFTTT
С сервисом If This Then That, название которого можно перевести как «если произошло вот это, делать то», я познакомился давно и успешно использую его для решения различных задач. К примеру, возможность заказа игры для стрима прямо из чата Твича работает в том числе через IFTTT. О реализации этой функциональности я подробно рассказал в серии статей под общим названием «Дневник разработки».
По сути IFTTT создает связь между двумя серсивами. Например, можно подключить к аккаунту Instagram и Dropbox, а потом установить связь: если опубликована новая фотография в инстаграме, сохранить её заданную папку дропбокса. IFTTT поддерживает огромное количество сервисов, начиная с Твиттера, заканчивая системами управления умным домом.
Как подключить ВКонтакте к IFTTT
Поддержка Твича появилась достаточно давно, а вот ВКонтакте у IFTTT пока в списке поддерживаемых сервисов не значится. Но это не беда, потому что для сайтов (и не обязательно только сайтов) с API существует самый крутой коннектор Maker.
Данный коннектор настолько крут, что может как принимать запросы от любых сервисов через GET и POST, так и отравлять их куда угодно. В нашем случае алгоритм работы будет следующий: мы создадим связь в IFTTT между Twitch и Maker, который будет отправлять специализированный запрос ВКонтакте для создания поста в группе (паблике) с информацией о стриме. Для работы нам нужно собственное приложение ВКонтакте и его access_token. Если у вас они уже есть, то пропускайте следующий раздел.
Standalone-приложение и токен
Начальный пункт наших изысканий расположен в конечном пункте задачи, то есть во ВКонтакте. Социальная сеть не разрешат работать с API пользователю напрямую. Делать это можно только через приложение. Его мы сейчас и создадим прямо вот тут: https://vk.com/apps?act=manage. Там справа есть кнопочка Создать приложение. Нажал — создал.
Выбираем платформу: Standalone-приложение. Вписываем абсолютно любое навзвание. Потом еще надо с телефона подтвердить, что вы не фейк. Далее сразу идем в раздел Настроки (это слева менюшка) и копируем циферки самого верхнего поля ID приложения.
Отлично. Теперь самый отвественный этап. Скопируйте вот такую ссылку в Блокнот (Notepad++, конечно):
https://oauth.vk.com/authorize?client_id=5563738&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token
Циферки после client_id=
нужно поменять на свои, которые мы взяли из ID приложения. А потом вставляем эту ссылку в адресную строку браузера, жмем Enter и подтверждаем всю ту уйму прав, что мы хотим предоставить своему приложению, нажав кнопку Разрешить.
После этого в строке адреса браузера сменится линк, в котором появится параметр access_token. Вам нужно скопировать и сохранить то, что идет после знака равно и до амперсанта (&). Эта длинная череда символов позволит нам создавать посты (и не только) в группах и пабликах, к которым есть доступ у аккаунта, которым вы разрешили доступ приложению.
Настраиваем IFTTT
Регистрируемся, переходим в раздел My Applets, жмем кнопку New Applet:
- На странице настройки нового апплета нажимаем на синюю надпись +this — это триггер нашего апплета. Пишем в поиске Twitch, авторизуемся и выбираем событие на второй карточке New stream started by you. То, что нам и нужно — запуск нового стрима;
- Теперь нам нужно выбрать, что будет происходить при запуске стрима, нажимаем на +that и пишем в поиске webhook. Выбираем один найденный сервис Maker Webhooks, и далее экшон Make a web request;
- На данный момент для того, чтобы сформировать ссылку запроса, который будет создавать пост во ВКонтакте при запуске стрима, у нас не хватает ID вашей группы (паблика). Узнать его проще простого:
- щелкнике правой кнопкой мыши по дате любого поста в вашем паблике (группе);
- скопируйте ссылку;
- выделите из ссылки число между wall и подчеркиванием
https://vk.com/wall-101835343_3396 — обратите внимание, ID групп и пабликов всегда отрицательные, не потеряйте минус.
- В поле URL настройки апплета нужно вставить ссылку:
https://api.vk.com/method/wall.post?owner_id=-101835343&friends_only=0&from_group=1&message=<<<Запустил стрим по {{Game}}. Стрим по ссылке {{ChannelUrl}}>>>&attachments= {{StreamPreview}}&access_token=СЮДА_ВСТАВЬ_СВОЙ_ТОКЕН
В этой ссылке обязательно нужно заменить owner_id
на ID вашей группы (паблика) ВКонтатке, access_token
на ваш токен, полученный нами в предыдущем разделе. Еще вы видите интересные конструкции <<<ЧОТА>>> и {{ЧОТА}}. Тройные знаки больше-меньше нужны, чтобы всё было хорошо, не трогайте их. Двойные фигурные скобки представляют собой так называемые ингридиенты — это значения, которые передает нашему апплету Твич, когда происходит запуск стрима. Всего их шесть:
- CreatedAt — дата и время начала стрима;
- Game — игра, которая задана на стриме в момент запуска;
- ChannelName — название канала, та часть ссылки, которая идет после twitch.tv/
- StreamPreview — ссылка на картику с текущим кадром стрима на момент события;
- ChannelUrl — ссылка на ваш канал;
- CurrentViewers — количество зрителей на данный момент.
Как вы видете по ссылке, я использовал в параметре message
ингредиенты, чтобы обозначить текущую игру на стриме и дать ссылку на стрим. Параметр attachments содержит вложения к посту, сюда можно добавить любую картинку из вашего альбома ВКонтакте, но я решил сделать его динамическим и прикрепил ссылку на превью стрима. На выходе получается так:
Есть нюанс. Приложенная картинка не ведет на стрим, она открывает ту самую ссылку на превью-картинку стрима. Прямо сейчас для меня является пероочередной задачей решить, как сделать данную картинку ссылкой на стрим. Но даже в текущем варианте первоначальная задача решена.
При начале стрима на Twitch автоматически создается пост в моей паблике ВКонтакте с достоверной информацией о стриме. И, кстати, не забудьте нажать на кнопку Save после того, как настроите апплет! Никакие другие поля кроме URL трогать не нужно. Всё будет работать и так.