Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Примерно с мая месяца Facebook разрешил подключения к API обмена сообщениями с Instagram, но процедура подключения несколько запутанная. Под катом некоторые нюансы и шишки прохождения процедуры верификации приложения для работы с сообщениями Instagram.
API обмена сообщениями с Instagram ничем не отличается от API обмена сообщениями с Facebook, только в теле сообщения в параметре platform будет указано «Instagram», в отличии от сообщения с Facebook, для которого в platform будет указано «page».
А вот процедура верификации приложения в случае Instagram имеет несколько отличий от верификации в случае Facebook.
1. Так же как и с Facebook, настраиваем Вебхук на наш бекэнд, только в разделе Instagram, генерируем токен, и прописываем токен на стороне бекэнда, проверяем, что вебхук подтвердился.
Напоминаю, что проверить статус токена, срок его действия, и какие на нем разрешения, можно в специальном инструменте Facebook «Access Token Debugger».
2. Для подключения к Facebook необходимо было получить разрешения «pages_messaging» и «Business Asset User Profile Access». Первое для получения и отправки сообщений, второе для считывания имени и фамилии пользователя.
В случае с Instagram необходимо получить два похожих разрешения, «instagram_manage_messages» и «instagram_basic». Аналогично, первое для получения и отправки сообщений, второе для считывания имени и фамилии пользователя. В отличии от Facebook, в Instagram имя и фамилия лежат в одном параметре.
3. При запросе разрешений, создается заявка на верификацию, такая же как и при подключении к Facebook. Но при подключении к Facebook было достаточно вложить screencast, то есть записанное видео, со следующим сценарием:
a) Входим на страницу компании в Facebook.
b) Входим на бекэнд компании, куда приходят сообщения.
c) Показываем, как сообщения со страницы попадают на бекэнд, и как уходят – приходят ответы на эти сообщения.
При этом пользователь, от которого отправляем сообщения, должен быть добавлен в роль Тестовые пользователи приложения:
В случае с Instagram, есть два существенных момента:
3.1. На текущий момент, на август 2021 г., Instagram пропускает на бекэнд сообщения только если сообщения отправляем в Instagram на страницу компании, в имени которой есть префикс test_
Так как вряд ли вы будете переименовывать официальный Instagram экаунт компании, то конечно нужно создать тестовую страницу компании в Instagram, и ее соединить с тестовой страницей компании в Facebook, и далее все это указать в настройке вебхука. На скрине префикс test_ есть и у страницы компании, куда отправляем сообщения, и на всякий случай, для верности, имя тестового пользователя, который отправляет сообщения, тоже начинается с test_:
По поводу нужен ли префикс test_ в имени тестового пользователя: в группе тех.поддержки мессенджера ответили, что нет, префикс test_ нужен только у тестовой страницы, получающей сообщения. Но до этого, при прохождении процедуры верификации, я видел, как верификатор Facebook переименовал учетку тестового пользователя, добавил префикс test_. Поэтому лишним не будет, пусть префикс test_ будет в Instagram как у отправителя, так и у получателя.
3.2. Второй важный момент, в случае с Facebook верификаторы просматривали видео в заявке, и всё, давали доступы. В случае с Instagram это не так, в заявке на верификацию обязательно нужно указать адрес нашего бекэнда, и дать учетку, то есть логин и пароль. Верификатор сам должен зайти на бекэнд, и лично повторить все, что продемонстрировано в screencast , то есть верификатор лично должен отправить сообщение на страницу компании (тестовую), увидеть сообщение на бекэнде, и лично ответить на него. Вот так вот. На текущий момент это требование является обязательным, обойти его нельзя.
Если отправлять заявку без учетки от бекэнда, то будет вот такая куча отказов, с ссылкой «читайте документацию»:
4. После формирования запроса на доступы «instagram_manage_messages» и «instagram_basic» у приложения автоматически будут добавлены продукты «Facebook Login» и «Instagram Graph API». Хотя собственно для обмена сообщениями в этих продуктах ничего настраивать не нужно, Facebook добавляет их именно для интеграции страницы компании в Facebook со станицей компании в Instagram. Удалить эти продукты из приложения невозможно. Недостатком является то, что верификатор может начать искать на входе в бекэнд кнопку входа через учетку Facebook. Поэтому в заявке можно отметить, что продукт «Facebook Login» не используется в работе бекэнда.
5. Если в заявке на верификацию есть текст на русском языке, и/или интерфейс App Dashboard переключен на русский язык, то заявка будет несколько часов висеть в статусе «Переводится». Поэтому лучше писать заявку на английском, и кажется, интерфейс App Dashboard лучше переключить на английский.
6. После успешной верификации приложения эти самые два заветных разрешения «instagram_manage_messages» и «instagram_basic» перейдут в статус «Active».
И в этот момент можно обнаружить, что сообщения от пользователей Instagram не поступают на бекэнд компании, на который настроен вебхук. Потому что, !!, есть пресс-релиз Facebook, в котором говорится, что:
We are currently in phase 2 of the global rollout of the Instagram Messaging. Instagram accounts with follower count between 1K-100K are able to connect to the API. We plan to include remaining accounts for the last phase by end of Q3. Please check this page for updates.
https://developers.facebook.com/docs/messenger-platform/instagram/rollout/
То есть, если у страницы вашей компании в Instagram подписчиков больше, чем 100К, то сообщения доходить до бекэнда не будут. Это так, и это подтвердили в группе тех.поддержки Facebook. Нужно ждать до конца Q3.
7. Вопросы по подключению к Messaging Platform можно задавать в официальной группе Facebook, админы отвечают быстро:
https://www.facebook.com/groups/messengerplatform