Инициирование сообщения Facebook при отправке гравитационной формы
До сих пор у меня есть плагин / виджет Facebook Checkbox (прикреплен / к Chatfuel) внутри HTML-виджета в Gravity Form. Оно работает. Все выглядит хорошо. Тем не менее, это не влияет на платформу мессенджеров.
<script> window.fbMessengerPlugins = window.fbMessengerPlugins || { init : function() { FB.init({ appId: "1678638095724206", xfbml: true, version: "v2.6" }); }, callable : [] }; window.fbMessengerPlugins.callable.push( function() { var ruuid, fbPluginElements = document.querySelectorAll(".fb-messenger-checkbox[page_id='288534304507180']"); if (fbPluginElements) { for( i = 0; i < fbPluginElements.length; i++ ) { ruuid = 'cf_' + (new Array(16).join().replace(/(.|$)/g, function(){return ((Math.random()*36)|0).toString(36)[Math.random()<.5?"toString":"toUpperCase"]();})); fbPluginElements[i].setAttribute('user_ref', ruuid) ; fbPluginElements[i].setAttribute('origin', window.location.href); window.confirmOptIn = function() { FB.AppEvents.logEvent('MessengerCheckboxUserConfirmation', null, { app_id:"1678638095724206", page_id:"288534304507180", ref:"b64:Z2l2ZWF3YXk=", user_ref: ruuid }); }; } } }); window.fbAsyncInit = window.fbAsyncInit || function() { window.fbMessengerPlugins.callable.forEach( function( item ) { item(); } ); window.fbMessengerPlugins.init(); }; setTimeout( function() { (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/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); }, 0); </script> <div class="fb-messenger-checkbox" origin="" page_id="288534304507180" messenger_app_id="1678638095724206" user_ref="" prechecked="true" allow_login="true" size="standard"></div>
После просмотра документации Facebook ( https://developers.facebook.com/docs/messenger-platform/discovery/checkbox-plugin) я наткнулся на этот код:
<html>
<head>
<script>
function confirmOptIn() {
FB.AppEvents.logEvent('MessengerCheckboxUserConfirmation', null, {
'app_id':'APP_ID',
'page_id':'PAGE_ID',
'ref':'PASS_THROUGH_PARAM',
'user_ref':'UNIQUE_REF_PARAM'
});
}
</script>
</head>
<body>
<input type="button" onclick="confirmOptIn()" value="Confirm Opt-in"/>
</body>
</html>
Этот код является кодом подтверждения, необходимым для фактического отключения сообщения. Когда я взял код и просто протестировал его на своей странице (а не внутри Gravity Form), он, как можно догадаться, выдал кнопку с. Когда эта кнопка нажата, сообщение срабатывает. Помните, что форма Gravity с другим кодом все еще находится на той же странице.
Теперь мне нужно иметь возможность применить этот эффект при успешной подаче гравитационной формы. Я борюсь с реализацией.
Я не разбираюсь в Javascript вообще. Но если бы мне пришлось угадывать, мне нужно вставить приведенный выше код для подтверждения Facebook в приведенный ниже код, чтобы он был подключен к представлению Gravity Forms:
<script type="text/javascript">
jQuery(document).bind('gform_confirmation_loaded', function(event, formId){
// code to be trigger when confirmation page is loaded
});
</script>
https://docs.gravityforms.com/gform_confirmation_loaded/
Я также протестировал следующий код, чтобы увидеть, смогу ли я заставить его работать одним нажатием кнопки "Отправить", хотя даже с этим конечным продуктом мне не удалось успешно запустить сообщение Facebook.
<script type="text/javascript">
$(document).ready(function() {
$('#gform_25 input[type=submit]').click(function () {
function confirmOptIn() {
FB.AppEvents.logEvent('MessengerCheckboxUserConfirmation', null, {
'app_id':'APP_ID',
'page_id':'PAGE_ID',
'ref':'PASS_THROUGH_PARAM',
'user_ref':'UNIQUE_REF_PARAM'
});
}
confirmOptIn();
});
});
</script>
Я понимаю, насколько запутанным может быть этот пост. Я действительно надеюсь, что это не так, и что где-то есть ответ. Основная цель - вызвать сообщение Facebook после отправки Gravity Forms. Спасибо!