Интеграция messengers API с Google drive
Данный шаблон звена позволит Вам сохранять файлы из сообщений messengers в Google drive. Для работы с сервисом необходимо пройти этапы настройки собственного «сервиса» по сохранению файла, так как Google drive не имеет метода, который позволил бы сохранять файлы через url.
Настройка
В первоначальной настройки Вам необходимо указать адрес функции, которая будет развернута на сервере Google cloud. Об этом ниже:
1 - Для начала создайте новый проект в Google cloud или выберите уже имеющийся проект;
2 - В проекте должен быть подключен биллинг для дальнейшей корректной работы. Об этом Вам также напомнит сам Google при попытке подключить API;
3 - Далее необходимо перейти в раздел библиотек проекта, найти и подключить “Cloud Build API” - оно Вам понадобится для развертывания функции.
А также подключить “Google Drive API" - это API для непосредственного подключения к Google диску.
4 -После этого необходимо добавить сервисного пользователя к проекту: переходим в serviceaccounts и добавляем сервисный аккаунт.
Указываем какое угодно имя.
Во вкладке Permissions, добавляем пользователю права Owner.
5 - Далее переходим в интересующую нас папку Google Drive и выдаем на нее разрешение на только что созданный сервисный аккаунт. Для этого щелкаем по ней правой кнопкой, выбираем опцию “открыть доступ”.
После чего добавляем адрес сервисного аккаунта, а также право на редактирование и кликаем отправить.
Этот адрес можно найти по ссылке, выбрав нужный проект.
6 - Создаем новую Google функцию, которая будет сохранять файл на Google диск. Для этого необходимо перейти по адресу, выбрать наверху интересующий проект и создать новую функцию.
7 - В настройках функции указываем удобный для Вас регион, задаем название функции.
Можно сразу скопировать полный адрес ссылки в Ваш виджет в Chat API.
Ниже в настройках функции указываем, что аутентификация разрешена и для неавторизованных пользователей. Нажимаем “сохранить”. Ниже, если предполагается сохранять файлы более 256 мегабайт, указываем 512 мегабайт.
В части где указывается пользователь, под которым будет выполняться код (runtime service account), необходимо указать Вашего пользователя, иначе доступ к Drive API будет недоступен, нажимаем “продолжить”.
8 - Копируем index.js и package.json из проекта https://github.com/chatapi/chainapi-google-drive в открывшееся окно.
9 -Далее необходимо поменять параметр sharedFolderKey в index.js.
Зайдите в папку на которую Вы выдали права в Google drive , в адресе находится идентификатор этой папки, например в адресе "https://drive.google.com/drive/folders/0BxL2BKcYFzUQTDJYV1djOEtnYzg?something=0-WVKid8cJNA2-Nw" идентификатором будет 0BxL2BKcYFzUQTDJYV1djOEtnYzg.
Если Вы не хотите, чтобы файлы автоматически были доступны для всех пользователей в константе shareFile внутри index.js необходимо поставить "false".
В верхнем правом углу настроек функции необходимо указать в точке входа (entry point) функцию download.
Нажимаем кнопку «деплой» и ждем завершения процесса.
10 - После этого Вы можете продолжать первоначальную настройку в цепочках API. Если Вы забыли вписать адрес функции - дождитесь завершения ее деплоя, зайдите в редактирование и скопируйте адрес.
После чего Вам необходимо будет в динамических данных указать, откуда брать url файла.
Ответ
В успешном ответе может содержаться параметр sharedLink и/или параметр directDownloadLink, первый необходим для прямого перехода к файлу в Google драйв, последний для прямого скачивания.
Если файл весит больше 100 мегабайт то Google не позволит по прямой ссылке скачать файл из-за встроенного антивируса. Обход подобных ограничений возможен: https://bytesbin.com/skip-google-drive-virus-scan-warning-large-files/ , но мы не рекомендуем отдавать Ваш API ключ во внешние ресурсы.
В случае неудачи вам вернется описание ошибки в параметре err и статусом 500.