Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

0 votes

Guten Tag,

ich führe eine Tagebuchstudie durch, bei der die Teilnehmer 6 Befragungen pro Tag (T1-T6) zu (Versandzeitpunkte von T2-T6 in Abhängigkeit vom Ausfüllen der ersten Befragung) sehr pünktlich ausfüllen müssen. Wenn die Teilnehmer 5 Minuten nach 'mailsent' der Fragebögen T2-T6 den Link noch nicht geöffnet oder den Fragebogen zu weniger als 50% ausgefüllt haben, wollen wir die Teilnehmer anrufen und an die Bearbeitung des Fragebogens erinnern. Das ist nicht nur für die Teilnehmer ziemlich aufwändig, sondern auch für die Studienleitung aufwändig zu überwachen. Daher würde ich gern eine automatische Benachrichtigung installieren, sodass wir (die Studienleitung) automatisch eine Mail erhalten, wenn die o.g. Bedingungen nicht erfüllt sind.

T2-T6 werden per mailschedule() verschickt. Nun habe ich überlegt, eine extra Serienmail und einen extra Fragebogen einzurichten, der auch mit mailSchedule angewiesen und ggf. mit mailRevoke zurückgehalten wird. Ich habe allerdings meine Zweifel, dass nur die Studienleitung diese Mail erhält, sondern auch die Studientielnehmer. Oder kann man da bei mailSchedule auch eine E-Mail Adresse eingeben?

Hätten Sie noch eine Idee zur Lösung des Problems?

Ich bedanke mich im Voraus!

in SoSci Survey (dt.) by s068944 (300 points)

1 Answer

0 votes

Dafür habe ich spontan keine Lösung.

Der Haken dabei ist ja, wie Sie schon bemerken, dass die Mails an einen anderen Adressaten gehen müssen als an den aktuellen Interviewteilnehmer. Das hat mehrere Implikationen:

(a) Mit mailSchedule() würde die Serienmail überhaupt nur einmal verschickt, denn jede Serienmail wird an jeden Adressaten nur max. einmal verschickt. Stattdessen könnte man aber mailResume() verwenden.

(b) Die mittels mailResume() vorbereiteten Versendungen können nur im laufenden Interview mittels mailRevoke() storniert werden. Aber um Zeitpunkt wenn T2 ausgefüllt wird, läuft ja ein anderes Interview.

SoSci Survey fehlt beim Ausfüllen von T2 schlicht und ergreifend die Möglichkeit, die richtige Serienmail zu finden.

Ich könnte mir eine neue Funktion (z.B. mailNotification()) vorstellen, die wie mailSchedule() funktioniert, aber die Mail (nur) an die Projektleitung verschickt. In diesem Fall könnte man den Versandeintrag dennoch an den Teilnehmer binden und so gezielt mittels mailRevoke() stornieren. Allerdings müssten Sie ein wenig Zeit (1-3 Wochen) mitbringen, wenn Sie solch eine Funktion gerne hätten?

Die Alternative wäre, dass man einmal pro Tag die Adressliste abruft und prüft, wer seinen Link nicht angeklickt hat. Aber nachdem Sie den Versandzeitpunkt ja dynamisch ermitteln, wäre das eine wenig erfreulich Tätigkeit...

by SoSci Survey (68.6k points)
Das wäre äußerst hilfreich, wenn Sie das einrichten könnten!! So viel Zeit habe ich auf jeden Fall noch.

Ich erkläre noch einmal ganz genau, worum es mir geht:
T1 wird morgens um 5 Uhr versandt und ist bis 12 Uhr mittags "gültig". Nach dem Aufwachen sollen die Teilnehmer unmittelbar T1 ausfüllen. In T1 ist der Versand von T2-T6 mittels mailSchedule() wie folgt festgelegt:
mailSchedule(false, 2, 1680); //28 Min. Verzögerung
mailSchedule(false, 3, 2580); //43 Min. Verzögerung
mailSchedule(false, 4, 8880); //148 Min. Verzögerung
mailSchedule(false, 5, 28680); //478 Min. Verzögerung
mailSchedule(false, 6, 48480); //808 Min. Verzögerung

Wenn man den mailSchedule()-Zeitpunkt als T0 definiert (da habe ich einen Zeitstempel als interne Variabel eingebaut 'ZS01_01'), möchte ich ab diesem Zeitpunkt für T2-T5 in folgenden Zeitintervallen vom System automatisch informiert werden (per E-Mail), je wenn Fragebogenseite 6 noch nicht erreicht ist:
T2: 33 Minuten nach Zeitstempel, wenn Fragebogenseite 6 noch nicht erreicht ist
T3: 48 Minuten nach Zeitstempel,wenn Fragebogenseite 6 noch nicht erreicht ist
T4: 153 Minuten nach Zeitstempel, wenn Fragebogenseite 6 noch nicht erreicht ist
T5: 483 Minuten nach Zeitstempel,wenn Fragebogenseite 6 noch nicht erreicht ist

Ist das so verständlich?
Ja - zumindest glaube ich, ist es das, wie ich das Anliegen bisher verstanden hatte. Die Gültigkeit der einzelnen Serienmails wird per PHP-Code Filter beschränkt, oder?
ja genau, zum Beispiel so:
function timeCheck() {
    $info = panelData(); // Gültigkeit des Fragebogens auf 15 Minuten beschränken
if ($info) {
  $sent = $info['mailsent'];
  $limit = strtotime('+ 900 seconds', $sent);
  if (time() > $limit) {
    text('too late');
    buttonHide();
    pageStop();
  }
}
}


oder so:
$info = panelData(); // Gültigkeit des Fragebogens bis 12 Uhr beschränken
if ($info) {
  $sent = $info['mailsent'];
  $limit = strtotime('today 12:00:00', $sent);
  if (time() > $limit) {
    text('too late');
    buttonHide();
    pageStop();
  }
}

oder so:
$limit = value('ZS02_01') + 1680;
  if (time() > $limit) {
    text('too late');
    buttonHide();
    pageStop();
}
Ich evaluiere gerade unterschiedliche Möglichkeiten, wie das mit der Benachrichtigung am besten funktionieren könnte.

Eine Problematik, die dabei auftaucht und zu der ich gerne Ihre Meinung hören würde: Anonymität. In der Benachrichtigung müssten Sie ja sehen, welcher Adresseintrag (=E-Mail-Adresse) nicht teilgenommen hat. Zugleich ist dann aber aus dem Zeitpunkt bei fester Verzögerung genau ersichtlich, zu welchem Datensatz diese E-Mail-Adresse gehört.

Nun könnte die Infomail natürlich nur die Personenkennung (SERIAL) mitteilen, und dann müssten Sie die Teilnehmer-Adressen im Datenschutz-Modus "personenbezogen" importieren, um die Zuordnung vorzunehmen. Aber dann erheben Sie im Datensatz selbst personenbezogene Daten. Das ist nur mit AVV-Vertrag möglich, und diesen können wir (wenn es um mehr als Adressdaten geht) nur für den kostenpflichtigen Pro-Server vereinbaren.

Zumal ich nicht weiß, ob Sie wirklich personenbezogene Daten sammeln möchten, denn das ist ja ach DSGVO gleich mit einer Reihe von Verpflichtungen und Dokumentation verbunden...
Da sprechen Sie einen wichtigen Punkt an, um den ich mir auch schon Gedanken gemacht habe und mit dem ich auch ein anderes Problem habe. Prinzipiell würde mir "Pseudonym" genügen (da wird ja auch die Serial zurückgegeben), denn wir lassen von den Teilnehmern bei jeder Befragung ein Pseudonym generieren (jedes Mal nach den gleichen Vorgaben), sodass wir die Daten später zuordnen können. Mein Problem bei der Sache ist, dass für mich die Rückgabe der Variable Mailsent im Datensatz von enormer Wichtigkeit ist. Diese wird nach jetzigem Stand allerdings nur bei "Personenbezogen" zurückgegeben. Gibt es noch eine andere Möglichkeit, Daten für Mailsent zu erhalten, auch wenn nur "Pseudonym" ausgewählt ist? Dann würde mir das genügen. Beantwortet das Ihre Frage?
Die Funktion panelData() liefert MAILSENT auch für pseudonyme Adressdaten, vgl. https://www.soscisurvey.de/help/doku.php/de:create:functions:paneldata - die Ausgabe müssen Sie dann nur mittels put() in einer internen Variable speichern.

Aber meine Frage beantwortet es nicht wirklich: Wenn Sie eine Benachrichtigung über die Nicht-Teilnahme erhalten, dann können Sie anhand des Zeitpunkts ganz genau erkennen, zu welchem Datensatz die Mailadresse gehört... Sie haben dann implizit also personenbezogene Daten. Und das wollten Sie ja eigentlich vermeiden. Aber wenn Sie zugleich MAILSENT und STARTED im Datensatz haben, dann sehe ich das als unvermeidlich.

Die m.E. "saubere" Lösung wäre, dass die Infomail ("hat nicht teilgenommen") nur die Personenkennung (SERIAL) enthält - und Sie die Adressdaten als "personenbezogen" importieren, sodass Sie E-Mail-Adressen und Personenkennungen zuordnen können. Aber dann kommen Sie den DSGVO-Auflagen nicht aus...
Zum ersten Punkt:
Wie kann ich die Informationen über mailSent aus Paneldata() in die interne Variable übertragen? Ich frage panedata in meinem Fragebogen so ab:
$info = panelData(); // Gültigkeit des Fragebogens bis 12 Uhr beschränken
if ($info) {
  $sent = $info['mailsent'];
usw.
wenn ich Folgendes eingebe, klappt das nicht:
put('ZS03_01', $info('mailsent'('d.m.Y H:i:s')));

Zum zweiten Punkt:
wäre nicht eine saubere Lösung, wenn der Inhalt des Pseudonyms (das entspricht drei Items in unserem Datensatz), das die Probanden selbst in der Befragung (z.B. in T1) generieren, in der Benachrichtigungsmail an uns gemeldet wird?
Versuchen Sie es mit

$info = panelData();
if ($info) {
  put('ZS03_01', $info['mailsent']);
}

Oder falls Sie ein anderes Format für die Zeit bevorzugen

  put('ZS03_01', date('Y-m-d H:i:s', $info['mailsent']));

> wäre nicht eine saubere Lösung, wenn der Inhalt des Pseudonyms (das entspricht drei Items in unserem Datensatz), das die Probanden selbst in der Befragung (z.B. in T1) generieren, in der Benachrichtigungsmail an uns gemeldet wird?

Naja, wenn Sie ohnehin eine Zuordnungliste Pseudoynm-Person haben, dann arbeite Sie ja ohnehin schon mit personenbezonen Daten. Dann macht es wohl auch keinen Unterschied mehr, wenn Sie den Bezug Datensatz-E-Mail-Adresse aus dem Zeitpunkt der E-Mail ableiten können...

Ich notiere mir also, dass in der Mail (a) die SERIAL (Personenkennung) und (b) nach Bedarf noch benutzerdefinierte Felder (z.B. für Ihr Pseudonym) verschickt werden sollen.
...