Веб-формы Sitecore для маркетологов и DMS — без записи кампаний, целей и информации об отсеве

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

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

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

Я попытался отладить код Javascript, но метод, который должен публиковать информацию в /sitecore modules/web/Web Forms for Marketers/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

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

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

Спасибо,

Франческо

ИЗМЕНИТЬ

Файл 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 должен сохранять информацию о захваченных полях?


person Francesco Gallarotti    schedule 08.02.2012    source источник
comment
Вы правильно установили модуль WFFM? Можете ли вы подтвердить, что сама DMS работает через аналитические отчеты?   -  person Mark Ursino    schedule 08.02.2012
comment
Марк, DMS 2.0 работает нормально. Если я добавлю кампании и цели на любую другую страницу, кроме формы WFFM, они будут записаны просто отлично. Мы только что обновили Sitecore 6.2 до 6.5 и установили DMS 2.0 (раньше у нас была OMS, но она не использовалась, поэтому мы фактически установили DMS 2.0 с нуля). Мы также обновили WFFM до последней версии. WFFM работает в том смысле, что он записывает содержимое в БД при отправке формы и выполняет различные действия при отправке (например, сохраняет в CRM и т. д.). То, что не работает, связано только с DMS, по крайней мере, пока так кажется...   -  person Francesco Gallarotti    schedule 08.02.2012


Ответы (3)


Это может быть глупо спрашивать, но правильно ли вы настроили источник данных для своего 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>-->

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

person divamatrix    schedule 09.02.2012
comment
Как я уже сказал выше, я вижу записи для других кампаний и целей, связанных с элементами Sitecore, не относящимися к WFFM, поэтому да, БД определена правильно в этом разделе файла form.config. Вы можете быть на что-то все же. Недавно мы переместили базу данных DMS на другой сервер. Все, что я изменил, это строка подключения в файле Sitecore ConnectionStrings.config... есть ли другое место, где я должен изменить строку подключения? - person Francesco Gallarotti; 09.02.2012
comment
И, чтобы ответить на ваш другой вопрос, нет, я не работаю в режиме реального времени. Я тестирую это в среде QA, в которой доступны как CM, так и CD-сервер. В частности, я тестирую с сайта компакт-диска. - person Francesco Gallarotti; 09.02.2012

Мы сталкиваемся с точно такой же проблемой в 6.5 update 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}]

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

person Reto Hugi    schedule 13.02.2012

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

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

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

person AndrewThompson    schedule 31.07.2013