2012-02-08 9 views
5

In WFFM esiste un'opzione in modo che, quando qualcuno abbandona il modulo, tutti i dati inseriti nel modulo stesso siano registrati e siano accessibili tramite il rapporto Dropout.Sitecore Web Form per marketing e DMS - non registrare campagne, obiettivi e informazioni di interruzione

Ho un WFFM per il quale ho attivato Analytics e attivato la funzione di esclusione. Sfortunatamente non vedo alcun dato registrato nel DB e il Rapporto Dropout è visibile, ma vuoto.

Vedo dal codice javascript incluso nella cartella WFFM che una serie di chiamate AJAX dovrebbe salvare i campi sugli eventi sfocatura - con chiamate a/moduli sitecore/Web/Web Form per marketer/Tracking.aspx

Ho provato a eseguire il debug del codice Javascript, ma il metodo che si suppone pubblichi le informazioni su/sitecore modules/web/Web Forms per Marketers/Tracking.aspx non viene mai chiamato. Riesci a pensare a qualche ragione per cui questo codice non funzioni? Inoltre, qualcuno sa quale tabella questa informazione dovrebbe essere registrata? È la tabella dei campi nel DB WFFM?

Infine, anche se ho attivato l'analisi su questo particolare modulo WFFM e ho associato una campagna e un obiettivo all'invio del modulo, nessuno di questi viene registrato. Vedo che i dati inseriti nel modulo sono memorizzati con successo e vengono visualizzati nel rapporto dati, ma nessuna informazione su Campaign né sull'obiettivo è registrata nel DB.

Ho anche controllato manualmente direttamente nel DMS DB in esecuzione:

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 

Questo mostra che la pagina in cui è resa la forma è essere colpito, ma nessuna campagna è associato alla visita.

poi ho provato la seguente:

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 

Ma io non vedere alcuna voce per questa particolare campagna nè per l'obiettivo (mentre vedo voci per altre campagne e gli obiettivi associati agli elementi non WFFM Sitecore)

Qualsiasi consiglio sarebbe molto apprezzato!

Grazie,

Francesco

EDIT

Il file contiene sc.webform.js questo metodo:

_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) }); 
}, 

Questo dovrebbe essere chiamato dal modulo inizializzazione del widget sc.webform. Dovrebbe associare gli eventi di messa a fuoco e sfocatura ai cambiamenti per tutti i campi di input, i menu a discesa e le aree di testo. Sfortunatamente, quando ho provato a inserire un punto di interruzione all'interno di questo metodo, non viene mai chiamato.

SECONDO EDIT

Interessante. Ho capito che il tutto deve partire da questa riga di codice JavaScript incorporato nella pagina che contiene il modulo 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> 

Una volta ho messo un punto di rottura, ero finalmente in grado di tracciare nel metodo _create di jQuery.Widget UI definito in sc.webform.js. Il codice che chiama _create è in realtà all'interno della libreria jQuery.UI. Ha un senso, giusto?

Infine, viene eseguito il codice all'interno _create, gli eventi di sfocatura sono legati alle TrackEvents metodo, definito anche all'interno del widget:

_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' 
}); 

Che non ha senso è che ora, anche se finalmente riesco a vedere trackEvents essere chiamato ogni volta che registro da un campo all'altro nel modulo WFFM (perché non funzionava prima che sia un mistero per me), non vedo alcun dato registrato nel DB WFFM. Ho anche provato un rapido query nel DB:

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 

Qualcuno sa dove si suppone che Tracking.aspx per salvare le informazioni sul campo catturati?

+0

Il modulo WFFM è stato installato correttamente? Puoi confermare che DMS stia funzionando tramite i rapporti di analisi? –

+0

Mark, DMS 2.0 funziona correttamente. Se aggiungo campagne e obiettivi a qualsiasi altra pagina diversa da un modulo WFFM, vengono registrati correttamente. Abbiamo appena aggiornato da Sitecore 6.2 a 6.5 e installato DMS 2.0 (avevamo l'OMS ma non era usato, quindi abbiamo installato DMS 2.0 da zero). Abbiamo anche aggiornato WFFM all'ultima versione. Il WFFM funziona nel senso che registra il contenuto nel DB quando viene inviato un modulo e esegue varie azioni su invio (ad esempio, salva in CRM, ecc.).Le cose che non funzionano sono legate solo a DMS, almeno questo è quello che sembra così lontano ... –

risposta

1

Questo può essere sciocco da chiedere, ma hai configurato correttamente l'origine dati per il tuo WFFM? Voglio dire, ovviamente, stai usando WFFM..ma è impostato per usare SQL o sta usando il "file" che WFFM usa di default come database.

come questo per utilizzare 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>--> 

Se non si configura correttamente quello, mi chiedo se in qualche modo i dati vengono registrati in un luogo ma non un altro? Inoltre, un'altra domanda che ho è di chiedere se si tratta di un ambiente di sviluppo, stai eseguendo webform in modalità live? Mi sembra che questo sia un problema di configurazione.

+0

Come ho detto sopra, "Vedo voci per altre campagne e obiettivi associati a elementi Sitecore non WFFM", quindi sì , il DB è definito correttamente in quella sezione del file form.config. Potrebbe essere su qualcosa però. Recentemente abbiamo spostato il database DMS su un altro server. Tutto quello che ho cambiato è stata la stringa di connessione nel file connectionsStrings.config di Sitecore ... c'è un altro posto in cui dovrei cambiare la stringa di connessione? –

+0

E, per rispondere alla tua altra domanda, no non sto correndo in modalità live. Lo sto testando in un ambiente di controllo qualità che ha sia un server CM che un server CD disponibili. In particolare sto testando dal sito web del CD. –

1

Stiamo riscontrando lo stesso identico problema su 6.5 update 6 e WFFM 2.3.3 rev. 111209. Possiamo vedere le chiamate asincrone al server incluso l'oggetto JSON probabilmente ben formato contenente l'evento corretto.

Esempio:

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}] 

Noi non vediamo nessuna delle forcellini arrivano nel database, anche se ...

0

Avete fatto in modo che le sue campagne e gli obiettivi sono stati distribuiti? Se hai cambiato database, potrebbero non esserlo. Per ridistribuire fare questo:

  1. per ogni obiettivo in Sistema -> Marketing Center -> Obiettivi
  2. modificare lo stato del flusso di lavoro per redigere
  3. Salva
  4. Poi nella revisione del nastro click deploy.
  5. Questo creerà una voce nella tabella pageeventdefinition e permetterà a di interrogare.

Non dimenticare di fare lo stesso per le campagne.

Problemi correlati