Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
de:create:functions:mailschedule [10.12.2014 14:26] – ausgelagert aus functions-respondent adminde:create:functions:mailschedule [06.09.2020 21:29] – [mailSchedule()] admin
Zeile 1: Zeile 1:
 ====== mailSchedule() ====== ====== mailSchedule() ======
  
-''void **mailSchedule**(string //PersonID//, int //Serienmail//, int //Zeitpunkt//)''+''void **mailSchedule**(string //PersonID//, int //Serienmail//, int //Zeitpunkt//, [array //Einstellungen//])''
  
 Diese Funktion bereitet direkt im Fragebogen den Versand einer Serienmail vor -- etwa die Einladung zum zweiten Fragebogen. Im Gegensatz zu ''[[:de:create:functions:mailresume|mailResume()]]'' wird nicht das laufende Interview fortgesetzt, sondern die Serienmail wird genauso verschickt, als hätte man den Versand manuell vorbereitet. Diese Funktion bereitet direkt im Fragebogen den Versand einer Serienmail vor -- etwa die Einladung zum zweiten Fragebogen. Im Gegensatz zu ''[[:de:create:functions:mailresume|mailResume()]]'' wird nicht das laufende Interview fortgesetzt, sondern die Serienmail wird genauso verschickt, als hätte man den Versand manuell vorbereitet.
Zeile 10: Zeile 10:
   * //Serienmail//\\ (Numerische) Kennung der Serienmail, die an den Teilnehmer verschickt werden soll.   * //Serienmail//\\ (Numerische) Kennung der Serienmail, die an den Teilnehmer verschickt werden soll.
   * //Zeitpunkt//\\ Die Verzögerung bis zum Versand (in Sekunden, maximal 153900000) __oder__ ein Unix-Zeitstempel, der den Zeitpunkt für den nächsten Versand definiert.   * //Zeitpunkt//\\ Die Verzögerung bis zum Versand (in Sekunden, maximal 153900000) __oder__ ein Unix-Zeitstempel, der den Zeitpunkt für den nächsten Versand definiert.
 +  * //Einstellungen//\\ Optionale Einstellungen, als assoziatives Array angegeben mit folgenden Schlüsseln:
 +    * '''status'''\\ Erinnerungs-/Folgemails nur verschicken, wenn der Link in der usprünglichen Serienmail ...
 +      * '''finished''' -- ...geöffnet und der Fragebogen bis zum Ende ausgefüllt wurde
 +      * '''incomplete''' -- ...nicht geöffnet oder nicht bis zum Ende ausgefüllt wurde
 +      * '''no-response''' -- ...nicht geöffnet wurde
 +    * '''expire'''\\ Gültigkeit des persönlichen Teilnahme-Links beschränken, es gilt dasselbe Format wie für den //Zeitpunkt//
 +    * '''to.email'''\\ E-Mail nicht an die im Adresseintrag hinterlegte E-Mail-Adresse, sondern an die hier angegeben E-Mail-Adresse versenden. Mit dieser Funktion lässt sich ein Hinweis an den Projektleiter realisieren, wenn ein Teilnehmer einen (Folge-)Fragebogen nicht innerhalb einer definierten Zeit bearbeitet.
 +    * '''to.mobile'''\\ SMS nicht an die (eventuell) im Adresseintrag hinterlegte Rufnummer, sondern an die hier angegeben Rufnummer versenden. Die Rufnummer muss mit Ländervorwahl angegeben werden.
 +    * '''%custom1%''' bis '''%custom5%'''\\ Wenn Inhalte für benutzerdefinierte Felder im ''mailSchedule()''-Befehl angegeben werden, dann werden in der Serienmail diese Inhalte anstatt der Angaben im Adresseintrag verwendet.
  
 **Hinweis:** Eine Serienmail wird (im Gegensatz zu ''mailResume()'') nur einmal pro Empfänger zugestellt, auch wenn die Funktion mit derselben Serienmail mehrfach aufgerufen wird. Der Versand unterschiedlicher Serienmails ist möglich -- z.B. eine Einladung zur zweiten Befragungswelle in 14 Tagen und eine weitere Einladung zur dritten Welle in 1 Monat. **Hinweis:** Eine Serienmail wird (im Gegensatz zu ''mailResume()'') nur einmal pro Empfänger zugestellt, auch wenn die Funktion mit derselben Serienmail mehrfach aufgerufen wird. Der Versand unterschiedlicher Serienmails ist möglich -- z.B. eine Einladung zur zweiten Befragungswelle in 14 Tagen und eine weitere Einladung zur dritten Welle in 1 Monat.
Zeile 15: Zeile 24:
 **Tipp:** Im Internet gibt es zahlreiche Websites, die ein Datum in einen Unix-Zeitstempel umrechnen können, z.B. [[http://www.unixtime.de/|unixtime.de]]. Auch die [[http://www.php.net/manual/de/ref.datetime.php|Datums- und Zeit-Funktionen]] von PHP (insbesondere ''[[http://php.net/manual/de/function.mktime.php|mktime()]]'' und ''[[http://www.php.net/manual/de/function.strtotime.php|strtotime()]]'') sind dafür hervorragend geeignet. **Tipp:** Im Internet gibt es zahlreiche Websites, die ein Datum in einen Unix-Zeitstempel umrechnen können, z.B. [[http://www.unixtime.de/|unixtime.de]]. Auch die [[http://www.php.net/manual/de/ref.datetime.php|Datums- und Zeit-Funktionen]] von PHP (insbesondere ''[[http://php.net/manual/de/function.mktime.php|mktime()]]'' und ''[[http://www.php.net/manual/de/function.strtotime.php|strtotime()]]'') sind dafür hervorragend geeignet.
  
 +
 +
 +==== Beispiel ====
 +
 +Der folgende Befehl versendet die Serienmail mit der ID 2 am nächsten Montag um 8 Uhr an die Person, die den Fragebogen gerade ausfüllt. Anstelle des Platzhalters ''%custom1%'' wird in der Serienmail das Datum angezeigt, wann ''mailSchedule()'' aufgerufen wurde.
 +
 +<code php>
 +mailSchedule(false, 2, strtotime('next Monday 08:00:00'), [
 +  '%custom1%' => date('d.m.Y')
 +])
 +</code>
 +
 +Serienmail 3 ist eine Erinnerungsmail für Serienmail 2 (s. oben) und soll um 16 Uhr verschickt werden, wenn der Link in Serienmail 2 bis dahin noch nicht aufgerufen wurde.
 +
 +<code php>
 +mailSchedule(false, 3, strtotime('next Monday 16:00:00'), [
 +  'status' => 'no-response',
 +  '%custom1%' => date('d.m.Y')
 +])
 +</code>
 ===== Beispiel ===== ===== Beispiel =====
  
Zeile 27: Zeile 56:
 <code php> <code php>
 mailSchedule(false, 2, 1209600); mailSchedule(false, 2, 1209600);
 +</code>
 +
 +
 +===== Erinnerungsmails =====
 +
 +Der Teilnehmer wird mit Serienmail 1 zum ersten Fragebogen (Welle 1) eingeladen -- die Einladungen erfolgen gestaffelt, sodass a-priori nicht bekannt ist, wann der Teilnehmer den Fragebogen ausfüllt. Einen Monat nach dem Ausfüllen des ersten Fragebogen soll der Teilnehmer eine Einladung zur zweiten Erhebungswelle bekommen (Serienmail 2). Falls er nicht teilnimmt, soll nach einer Woche noch ein Reminder (Serienmail 3) verschickt werden.
 +
 +In Serienmail 3 ist eingestellt, dass es sich um eine Erinnerungs-/Folgemail für Serienmail 2 handelt.
 +
 +Im Fragebogen zur ersten Erhebungswelle wir folgender PHP-Code verwendet:
 +
 +<code php>
 +mailSchedule(false, 2, strtotime('+1 month'));
 +mailSchedule(false, 3, strtotime('+1 month +1 week'), array(
 +  'status' => 'no-response'
 +));
 </code> </code>
de/create/functions/mailschedule.txt · Zuletzt geändert: 13.02.2022 17:43 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki