Примерно с мая месяца 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.
То есть, если у страницы вашей компании в Instagram подписчиков больше, чем 100К, то сообщения доходить до бекэнда не будут. Это так, и это подтвердили в группе тех.поддержки Facebook. Нужно ждать до конца Q3.
7. Вопросы по подключению к Messaging Platform можно задавать в официальной группе Facebook, админы отвечают быстро.