2017-02-22 15 views
2

Кто-нибудь знает, как добавить несколько опросов в Facebook в прямом эфире, как показано в этом примере Super Deluxe: https://www.facebook.com/superdeluxevideo/videos/416419238702632/.Несколько ответов в прямом эфире Facebook в 1 сообщении

Моя идея состояла в том, чтобы создать кнопку, чтобы сохранить текущую реакцию в качестве объекта в базе данных (Firebase) и вычесть из числа ответов, указанных в API, для начала от 0 до каждого нового раунда. Проблема в том, что, когда люди реагируют на первый опрос и дают другую реакцию на следующий, он вычитает первую реакцию и помещает эту реакцию в негатив.

Например: Если пользователь нажал WOW на первом опросе, счетчик WOW: 1 LOVE: 0. Когда опрос сбрасывается, эти слова вычитаются из того, что берется из API графиков Facebook. Итак, если в следующем опросе этот пользователь нажимает LOVE, счетчик переключается на WOW: -1 LOVE: 1.

Вот базовый пример кода, который я использую, используя Firebase для хранения значений реакций.

// Firebase config 
firebase.initializeApp(config); 
var database = firebase.database(); 
var dbCounter = database.ref('/counter'); 

var access_token = 'ACCESS_TOKEN', // PASTE HERE YOUR FACEBOOK ACCESS TOKEN 
    pageID = 'PAGE_ID', //Paste your Facebook Page ID here 
    postID = 'POST_ID', // PASTE HERE YOUR POST ID 
    postID = pageID+'_'+postID, 
    refreshTime = 5, // Refresh time in seconds 
    counter = { 
     love : 0, 
     wow : 0 
    }, 
    cachedCounter = counter; 

var reactions = ['LOVE', 'WOW'].map(function (e) { 
     var code = 'reactions_' + e.toLowerCase(); 
     return 'reactions.type(' + e + ').limit(0).summary(total_count).as(' + code + ')' 
    }).join(','); 

var refreshCounts = function() { 
    var url = 'https://graph.facebook.com/v2.8/' + postID + '?fields=' + reactions + '&access_token=' + access_token; 
    $.getJSON(url, function(res){ 
     counter.love = res.reactions_love.summary.total_count; 
     counter.wow = res.reactions_wow.summary.total_count; 
     $('.reaction.love .count').text(counter.love); 
     $('.reaction.wow .count').text(counter.wow); 
    }); 
} 

$(document).ready(function(){ 
    // Update the value of cachedCounter every time the database is updated 
    dbCounter.on('value', function(res){ 
     // res.val() starts with the same value as the default counter 
     cachedCounter = res.val(); 
    }); 

    // Only runs once 
    dbCounter.once('value').then(function(res){ 
     setInterval(refreshCounts, refreshTime * 1000); 
     refreshCounts(); 
    }); 

    // Reset counters while keeping count of reactions for new poll 
    $('button.reset-count').click(function() { 
     // Save current counter in database 
     dbCounter.set(counter); 
     // Set counters to 0 
     $('.reaction .count').text(0); 
     return false; 
    }); 
}); 

Неужели кто-нибудь знает, как Super Deluxe сбросит значения количества ответов в их реализации?

+0

Facebook не хочет, чтобы вы использовали реакции таким образом, см. Https://en.facebookbrand.com/assets/reactions: _ «Не используйте реакции для опросов в видео, где весь поток состоит из статического или зацикливая графику или изображения. »_ (И потому что« аргумент »« но посмотрите на пример, они делают это слишком !!! », можно ожидать, что он будет поднят сейчас: ограбление банка также не является законным только потому, что вы видеть, как люди это делают.) – CBroe

+0

@CBroe Как вы узнаете, какой материал jtpatton показывается на Facebook Live? В нем говорится, что не использовать Reactions в опросах только там, где поток имеет статическую или циклическую графику. Как Super Deluxe (как связанный), так и, вполне возможно, проект jtpatton используют реальный, живой контент с встроенным голосованием, который полностью разрешен в ToS FB. Также просто скажем, что связи между ограблением банка и API Facebook могут быть немного превыше всего? – lanewinfield

ответ

1

Я столкнулся с этой проблемой. В основном это сводилось к следующему:

Если вы запустили несколько опросов в одном видео, вы не можете поддерживать только две реакции (например, «Любовь/любовь») для всего.

Давайте использовать этот сценарий:

Опрос 1 начинается: 0 любит, 0 любит (пока никто не голосовал)

Опрос 1 заканчивается: 100 любит, 200 любови. Любит побеждать 66%/33%.

Затем, через несколько минут, мы запускаем опрос №2. Если мы сбросим значение по умолчанию до нуля, это означает, что мы устанавливаем смещение всех понравившихся и любимых видео, когда начнется новый опрос. Поэтому мы удаляем их из голосов.

Опрос 2 начинается: (с последнего голоса) 100 нравится, 200 любит. Смещение установлено на -100, -200, поэтому эффективно 0 нравится и 0 любит.

Теперь, когда опрос 2 заканчивается, это становится трудным. Давайте посмотрим на сценарий, в котором у нас есть смесь людей, которые уже голосовали, и новые.

5 человек переключили свой голос с любви на понравившиеся.

5 человек новые и решили понравиться.

Любовь не получает дополнительных голосов.

Опрос 2 конца: 10 понравилось (110 всего понравилось - 100 смещений от последнего голосования), -5 любит (195 всего любит - 200 очков от последнего голосования).

Мы не хотим этого отрицательного номера.

Мое решение было:

  • Переход от как/любовь к другой реакции множества (например, ха-ха/вау) каждый другой голос
  • Сброс счетчика (как выше смещение) в начале от каждого периода голосования

Таким образом, если люди голосуют, они переключаются туда и обратно и эффективно «перезапускают» голосование каждый раз.

Смежные вопросы