SDK расширений Messenger позволяет добавлять полезные функции Messenger на любой сайт или в веб-приложение, которые открываются через веб-представление Messenger. С помощью этого SDK вы можете извлекать информацию о пользователе, открывшем веб-просмотр, делиться контентом в переписках в Messenger, а также выполнять интеграцию с пользовательским интерфейсом Messenger.
При использовании SDK расширений в веб-просмотре Messenger становятся доступны следующие функции. Примечание: доступность функций зависит от версии Messenger и устройства.
Функция | Описание |
---|---|
Извлечение контекста переписки, например идентификатора PSID человека, открывшего веб-просмотр. | |
Закрытие веб-просмотра и возврат к переписке в Messenger. | |
Запрос разрешения на выполнение действий, например извлечение информации о профиле человека. | |
Список существующих предоставленных разрешений. | |
Проверка поддерживаемых функций веб-просмотра на текущем устройстве (например, публикации). |
Полные сведения об использовании этих функций см. в справке по SDK расширений Messenger.
Чтобы использовать расширения Messenger в боте, необходимо сначала внести в белый список домены, с которых обслуживается страница. В целях безопасности все домены на вашей веб-странице должны быть добавлены в белый список. Подробнее см. в документации по белому списку.
Внести домен в белый список можно программным способом с помощью следующего API:
curl -X POST -H "Content-Type: application/json" -d '{
"whitelisted_domains":[
"https://petersfancyapparel.com"
]
}' "https://graph.facebook.com/v21.0
/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN"
В случае успеха вы получите ответ от API Messenger Profile:
{"result":"success"}
Добавьте SDK расширений Messenger для JavaScript на страницу веб-просмотра. Для этого используйте код ниже. Вставьте его сразу после открывающего тега body
на каждой странице, где он должен загружаться:
(function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/messenger.Extensions.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'Messenger'));
window.extAsyncInit()
будет вызвано по окончании загрузки SDK расширений Messenger для JavaScript. Это событие можно использовать как триггер для вызова других функций этого SDK.
window.extAsyncInit = function() { // the Messenger Extensions JS SDK is done loading };
SDK расширений Messenger можно использовать как в мобильных клиентах, так и в клиентах Messenger для ПК. Однако для корректной работы вам учтите следующее.
С помощью свойства window.name
можно проверить расположение iframe на стороне клиента.
Когда iframe срабатывает в веб-версии Messenger, мы устанавливаем для window.name
значение "messenger_ref"
. В противном случае при загрузке во вкладках чата Facebook window.name
будет иметь значение "facebook_ref"
.
Перечисленные ниже настройки и функции не поддерживаются в веб-клиентах Messenger, но по-прежнему корректно работают в мобильных клиентах:
webview_height_ratio;
webview_share_button;
Если вам не удается вызвать SDK расширений Messenger со своей страницы, проверьте следующее:
messenger_extensions
должен иметь значение true
. Если пользователь открыл веб-представление через сообщение, которым кто-либо поделился, для работы расширений Messenger не нужно состоять в переписке с вашим ботом.Проверьте, добавили ли вы домен страницы в белый список.
Убедитесь, что SDK для JavaScript есть на каждой странице, где используется расширение.
Не пытайтесь вызывать какие-либо функции, пока не завершится загрузка SDK. Чтобы узнать, завершена ли загрузка, используйте функцию window.extAsyncInit
, описанную в этом разделе.
Страница должна работать по протоколу HTTPS и не должна использовать нестандартные порты.