Добавление SDK расширений Messenger

SDK расширений Messenger позволяет добавлять полезные функции Messenger на любой сайт или в веб-приложение, которые открываются через веб-представление Messenger. С помощью этого SDK вы можете извлекать информацию о пользователе, открывшем веб-просмотр, делиться контентом в переписках в Messenger, а также выполнять интеграцию с пользовательским интерфейсом Messenger.

Доступные функции

При использовании SDK расширений в веб-просмотре Messenger становятся доступны следующие функции. Примечание: доступность функций зависит от версии Messenger и устройства.

ФункцияОписание

getContext()

Извлечение контекста переписки, например идентификатора PSID человека, открывшего веб-просмотр.

requestCloseBrowser()

Закрытие веб-просмотра и возврат к переписке в Messenger.

askPermission()

Запрос разрешения на выполнение действий, например извлечение информации о профиле человека.

getGrantedPermissions()

Список существующих предоставленных разрешений.

getSupportedFeatures

Проверка поддерживаемых функций веб-просмотра на текущем устройстве (например, публикации).

Полные сведения об использовании этих функций см. в справке по SDK расширений Messenger.

Установка SDK

1. Добавление домена в белый список

Чтобы использовать расширения Messenger в боте, необходимо сначала внести в белый список домены, с которых обслуживается страница. В целях безопасности все домены на вашей веб-странице должны быть добавлены в белый список. Подробнее см. в документации по белому списку.

Внести домен в белый список можно программным способом с помощью следующего API:

 
curl -X POST -H "Content-Type: application/json" -d '{
  "whitelisted_domains":[
    "https://petersfancyapparel.com"
  ]
}' "https://graph.facebook.com/v19.0/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN"

В случае успеха вы получите ответ от API Messenger Profile:

{"result":"success"}

2. Добавление SDK расширений Messenger для JavaScript

Добавьте 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'));

3. Ожидание события загрузки SDK

window.extAsyncInit() будет вызвано по окончании загрузки SDK расширений Messenger для JavaScript. Это событие можно использовать как триггер для вызова других функций этого SDK.

window.extAsyncInit = function() {
  // the Messenger Extensions JS SDK is done loading 
};

Использование SDK в веб-клиенте Messenger

SDK расширений Messenger можно использовать как в мобильных клиентах, так и в клиентах Messenger для ПК. Однако для корректной работы вам учтите следующее.

С помощью свойства window.name можно проверить расположение iframe на стороне клиента.

Когда iframe срабатывает в веб-версии Messenger, мы устанавливаем для window.name значение "messenger_ref". В противном случае при загрузке во вкладках чата Facebook window.name будет иметь значение "facebook_ref".

Неподдерживаемые функции

Перечисленные ниже настройки и функции не поддерживаются в веб-клиентах Messenger, но по-прежнему корректно работают в мобильных клиентах:

Устранение неполадок

Если вам не удается вызвать SDK расширений Messenger со своей страницы, проверьте следующее:

  • При открытии веб-представления из постоянного меню или с помощью кнопки параметр messenger_extensions должен иметь значение true. Если пользователь открыл веб-представление через сообщение, которым кто-либо поделился, для работы расширений Messenger не нужно состоять в переписке с вашим ботом.
  • Проверьте, добавили ли вы домен страницы в белый список.

  • Убедитесь, что SDK для JavaScript есть на каждой странице, где используется расширение.

  • Не пытайтесь вызывать какие-либо функции, пока не завершится загрузка SDK. Чтобы узнать, завершена ли загрузка, используйте функцию window.extAsyncInit , описанную в этом разделе.

  • Страница должна работать по протоколу HTTPS и не должна использовать нестандартные порты.