Пропустить навигацию

Call To Action (CTA)

Обновлено: 12.08.2026
Открыть как Markdown
Функция в статусе @experimental: достаточно стабильна для использования, но детали API могут измениться. Следите за изменениями плеера .

CTA — призыв к действию поверх видео: подписка, переход по ссылке, кнопки на таймлайне или форма сбора контактов. Задаётся в playlist[].cta при создании плеера или через setPlaylistItemOptions .

Простой CTA в конце ролика можно настроить без кода — в шаблоне плеера .

Типы показа

Поле type (по умолчанию overlay):

typeПоведение
overlayПерекрывает плеер, останавливает воспроизведение
popupВсплывающая панель, воспроизведение не останавливает
panelПрозрачная панель, воспроизведение не останавливает
bannerБаннер с картинкой/ссылкой
buttonsНабор кнопок на кадре (клик → переход по плейлисту/времени)
leadgenДиалог сбора данных пользователя и отправки на ваш URL

Быстрый старт: overlay

function onKinescopeIframeAPIReady(playerFactory) {
  playerFactory
    .create('player', {
      url: 'https://kinescope.io/VIDEO_ID',
      playlist: [
        {
          cta: [
            {
              id: 'subscribe-cta',
              type: 'overlay', // можно не указывать — это значение по умолчанию
              title: 'Понравилось видео?',
              description: 'Подпишитесь на канал, чтобы не пропустить новые выпуски.',
              skippable: true,
              button: { text: 'Подписаться' },
              trigger: { percentages: [50] },
            },
          ],
        },
      ],
    })
    .then((player) => {
      player.on(player.Events.CallAction, (event) => {
        // event.data.id === 'subscribe-cta'
        window.open('https://example.com/subscribe', '_blank')
        player.closeCTA()
      })
    })
}

Когда пользователь нажимает кнопку CTA, срабатывает CallAction . В обработчике выполните своё действие и закройте экран через closeCTA() — для overlay после этого воспроизведение продолжится.

Если у кнопки задан button.url, плеер может открыть ссылку сам; CallAction всё равно приходит — удобно для аналитики.

Общие поля и trigger

ПолеТипОписание
idstringИдентификатор; приходит в CallAction
typeсм. типыВариант показа; по умолчанию overlay
trigger.percentagesnumber[]Процент воспроизведения, например [50, 100]
trigger.timePointsnumber[]Точки времени в секундах, например [60, 600]
trigger.pausebooleanПоказать CTA при постановке на паузу

Укажите хотя бы один способ срабатывания: percentages, timePoints или pause (можно комбинировать).

overlay, popup, panel

Общие поля:

ПолеТипОписание
titlestringЗаголовок
descriptionstringОписание
skippablebooleanМожно закрыть / пропустить
button.textstringТекст кнопки
button.styleCSSPropertiesСтили кнопки
button.urlstringURL по нажатию

Дополнительно:

ПолеТипыОписание
linkoverlayВторая ссылка: { text, url, style? }
posteroverlayПостер / картинка на экране CTA
positionpopup, panel'top' | 'bottom'

Пример popup на паузе:

{
  id: 'pause-offer',
  type: 'popup',
  position: 'bottom',
  title: 'Продолжить позже?',
  button: { text: 'Сохранить прогресс', url: 'https://example.com/save' },
  skippable: true,
  trigger: { pause: true },
}
ПолеТипОписание
title, description, skippable, buttonкак у overlayОсновные поля
urlstringСсылка баннера
imagestring | объект постераКартинка
positionstring'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right'
variant'vertical' | 'horizontal'Раскладка
styleCSSPropertiesСтили контейнера

buttons

Набор кнопок на кадре. Воспроизведение по умолчанию не останавливается (pause на элементе — опционально).

{
  id: 'hotspots',
  type: 'buttons',
  trigger: { timePoints: [30] },
  list: [
    {
      id: 'go-chapter-2',
      title: 'Глава 2',
      position: { x: 0.2, y: 0.5 }, // относительно кадра, 0…1
      goTo: { playlistItem: 0, time: 120 },
    },
  ],
}
ПолеОписание
list[].idID кнопки
list[].titleТекст
list[].position{ x, y } относительно размера кадра
list[].goTonumber (время, сек) или { playlistItem, time? }
list[].styleСтили кнопки
pauseПоставить на паузу при показе

leadgen

Диалог сбора данных. Поля отправляются POST на ваш url.

ПолеТипОписание
urlstringEndpoint для отправки формы
fieldsArray<'name' | 'email' | 'company'>Какие поля показать
privacyPolicyUrlstringСсылка на политику конфиденциальности
lifetimenumberСколько считать форму уже отправленной для этого id (по умолчанию 30 дней)
skippablebooleanМожно закрыть без отправки
triggerКак у остальных типов
{
  id: 'lead-end',
  type: 'leadgen',
  url: 'https://example.com/api/leads',
  fields: ['name', 'email'],
  privacyPolicyUrl: 'https://example.com/privacy',
  skippable: true,
  trigger: { percentages: [100] },
}

Что дальше?