Веб-формы Sitecore для маркетологов и DMS - без записи кампаний, целей и информации об удалении - PullRequest
5 голосов
/ 08 февраля 2012

В WFFM есть опция, так что, когда кто-то покидает форму, любые данные, которые были введены в самой форме, записываются и должны быть доступны через отчет об исключении.

У меня есть WFFM, для которогоЯ включил Google Analytics и включил функцию исключения.К сожалению, я не вижу никаких данных, записываемых в БД, и отчет об удалении виден, но пустой.

Я вижу из кода javascript, включенного в папку WFFM, что серия вызовов AJAX должна сохранятьполя событий размытия - с вызовами / sitecore modules / web / Web Forms для маркетологов / Tracking.aspx

Я попытался отладить код Javascript, но метод должен был публиковать информацию в / sitecore modules /web / Web Forms для маркетологов / Tracking.aspx никогда не вызывается.Можете ли вы вспомнить причины, по которым этот код не работает?Кроме того, кто-нибудь знает, в какую таблицу эта информация должна записываться?Это таблица полей в БД WFFM?

Наконец, несмотря на то, что я включил аналитику в этой конкретной форме WFFM и связал кампанию и цель с отправкой формы, ни одно из них не являетсязаписывается.Я вижу, что данные, введенные в форму, успешно сохранены и отображаются в отчете о данных, но информация о кампании и цели не записана в БД.

Я даже проверял вручную непосредственно в БД DMSвыполняется:

select top 10
p.DateTime, p.UrlText, cp.CampaignName
,i.Url, vi.VisitId
from pages p
inner join ItemUrls i on p.ItemId = i.ItemId
inner join Visits vi on vi.VisitId = p.VisitId
inner join GeoIps g on vi.Ip = g.Ip
left join Campaigns cp on cp.CampaignId = vi.CampaignId
order by p.DateTime desc

На этом рисунке показано, что страница, на которой отображается форма, была нажата, но с посещением не связано ни одной кампании.

Затем я попробовал следующее:

select pe.datetime, ped.Name, pg.UrlText from PageEvents pe
inner join PageEventDefinitions ped on ped.PageEventDefinitionId = pe.PageEventDefinitionId
inner join Pages pg on pg.PageId = pe.PageId
order by pe.DateTime desc

Но я не вижу ни записи для этой конкретной кампании, ни для цели (хотя я вижу записи для других кампаний и целей, связанных с предметами, не относящимися к WFFM Sitecore)

Любой совет будетс благодарностью!

Спасибо,

Франческо

РЕДАКТИРОВАТЬ

Файл sc.webform.js содержит этот метод:

_create: function () {
var self = this,
    options = this.options;
if (options.tracking) {
    this.element.find("input[type!='submit'], select, textarea")
    .bind('focus', function (e) { self.onFocusField(e, this) })
    .bind('blur change', function (e) { self.onBlurField(e, this) });

    this.element.find("select")
        .change(function () { $scw.webform.controls.updateAnalyticsListValue(this) });

    this.element.find("input[type='checkbox'], input[type='radio']")
        .click(function () { $scw.webform.controls.updateAnalyticsListValue(this) });
}

this.element.find(".scfDatePickerTextBox").each(function () { $scw.webform.controls.datePicker(this) });
},

Это должно вызываться формой при инициализации виджета sc.webform.Он должен связывать фокус и события изменения размытия для всех полей ввода, выпадающих и текстовых областей.К сожалению, когда я пытался установить точку останова внутри этого метода, он никогда не вызывался.

ВТОРОЕ РЕДАКТИРОВАНИЕ

Интересно.Я понял, что все должно начаться с этой строки кода Javascript, встроенного в страницу, содержащую форму WFFM:

<script type="text/javascript">
$scwhead.ready(function() {
    $scw('#form_A8BF483419174F97A2830E12CBCF7E4F').webform({formId: "{A8BF4834-1917-4F97-A283-0E12CBCF7E4F}",pageId: "{21C24144-B964-4FBA-8388-D9B90EBBC17C}",eventCountId: "pagecolumns_0_columncontent_0_bottomrow_0_form_A8BF483419174F97A2830E12CBCF7E4F_form_A8BF483419174F97A2830E12CBCF7E4F_eventcount",tracking: true})
}); 
</script>

Как только я поставил точку останова, я наконец смог отследить в_create метод виджета jQuery.UI, определенный в sc.webform.js.Код, который вызывает _create, фактически находится внутри библиотеки jQuery.UI.Что-то в этом есть, верно?

Наконец, код внутри _create выполняется, события размытия привязываются к методу TrackEvents , также определенному в виджете:

_trackEvents: function(events) {
$scw.ajax({
     type: 'POST',
     url: "/sitecore modules/web/Web Forms for Marketers/Tracking.aspx" + location.search,
     data: {track: JSON.stringify(events)},
     dataType: 'json'
});

Что не имеет смысла, так это то, что теперь, хотя я, наконец, могу видеть, что trackEvents вызывается всякий раз, когда я переключаюсь от поля к полю в форме WFFM (почему не работало, пока для меня это не загадка), Я не вижу никаких данных, записанных в БД WFFM.Я даже попытался выполнить быстрый запрос в БД:

select f.Timestamp, f.StorageName, fi.Value, fi.FieldName 
from Form f
inner join Field fi on f.Id = fi.FormId
order by f.Timestamp desc, FieldName

Кто-нибудь знает, где Tracking.aspx должен сохранять захваченную информацию поля?

Ответы [ 3 ]

1 голос
/ 13 февраля 2012

Мы сталкиваемся с точно такой же проблемой на 6,5 обновлении 6 и WFFM 2.3.3 rev.111209. Мы видим асинхронные вызовы к серверу, включая, вероятно, правильно сформированный объект json, содержащий правильное событие.

Пример:

track:[{"fieldId":"{E0A0BCDD-85E1-4D8D-9E76-5ABD240423C9}","type":"Field Completed","value":"test","formId":"{0F3B57C1-1B6A-43B9-A5A6-2E958C168B31}","pageId":"{025AFF68-62B9-42CE-B49F-0C36311E1976}","ticks":16}]

Мы не видим, чтобы какие-либо выпадающие сообщения приходилив базе данных, хотя ...

1 голос
/ 09 февраля 2012

Это может быть глупо, но вы правильно настроили источник данных для своего WFFM?Я имею в виду, очевидно, что вы используете WFFM ... но он настроен на использование SQL или использует "файл", который WFFM использует по умолчанию в качестве своей базы данных.

как использовать SQL:

   <!-- MSSQL-->

    <formsDataProvider type="Sitecore.Forms.Data.DataProviders.WFMDataProvider,Sitecore.Forms.Core">
  <param desc="connection string">Database=Sitecore_WebForms;Data Source=xxx;user id=xxx;password=xxx;Connect Timeout=30</param>
</formsDataProvider>

<!-- SQLite -->

<!--<formsDataProvider type="Sitecore.Forms.Data.DataProviders.SQLite.SQLiteWFMDataProvider,Sitecore.Forms.Core">
  <param desc="connection string">Data Source=/data/sitecore_webforms.db;version=3;BinaryGUID=true</param>
</formsDataProvider>-->

Если вы не настроите это правильно, мне интересно, записываются ли данные в одном месте, а не в другом?Кроме того, еще один вопрос, который у меня есть, это спросить, если это среда разработки, вы запускаете веб-формы в живом режиме?Мне просто кажется, что это проблема конфигурации.

0 голосов
/ 31 июля 2013

Вы убедились, что ваши кампании и цели были развернуты?Если вы переключили базы данных, они могут не быть.Для повторного развертывания выполните следующие действия:

  1. Для каждой цели в Системе -> Маркетинговый центр -> Цели
  2. Измените состояние рабочего процесса на черновик
  3. Сохранить
  4. Затем на ленте обзора нажмите развертывание.
  5. Это создаст запись в таблице определения страницы и позволит вам выполнять запрос.

Не забудьте сделать то же самое для кампаний.

...