Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Yii
Code

Aufbau Ihres Startups: Bereitstellen der Besprechungseinladung

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Using the Mailgun Store(): A Temporary Mailbox for Your App's Incoming Email
Building Your Startup With PHP: Email Commands

German (Deutsch) translation by Wei Zhang (you can also view the original English article)

Final product image
What You'll Be Creating

Einführung

Dieses Tutorial ist Teil der Build Your Startup With PHP-Reihe auf Envato Tuts +. In dieser Serie führe ich Sie durch den Start eines Konzepts vom Konzept zur Realität, wobei Sie meine Meeting Planner-App als reales Beispiel verwenden. Bei jedem Schritt werde ich den Meeting Planner-Code als Open-Source-Beispiele veröffentlichen, von denen Sie lernen können. Ich werde auch auf unternehmensbezogene Probleme beim Start eingehen.

Was deckt diese Episode ab?

In diesem Tutorial erfahren Sie, wie Sie die Einladung per E-Mail an den Teilnehmer senden, das grundlegende Erscheinungsbild des Inhalts implementieren und die Erstellung von Links für Empfänger in Betracht ziehen, damit diese antworten können.

Der gesamte Code für Meeting Planner ist im Yii2 Framework für PHP geschrieben. Wenn Sie mehr über Yii2 erfahren möchten, sehen Sie sich meine parallele Serie Programming With Yii2 bei Envato Tuts + an.

Nur zur Erinnerung, ich beteilige mich an den Kommentarthreads unten. Ich bin besonders interessiert, wenn Sie unterschiedliche Ansätze, zusätzliche Ideen haben oder Themen für zukünftige Tutorials vorschlagen möchten. Sie können mich auch auf Twitter @reifman erreichen.

Anforderungen für die Zustellung von Einladungen

Es ist aufregend, diese Phase der ersten Einladungen zu erreichen, erfordert aber dennoch viel Arbeit. In der letzten Episode habe ich die Besprechungsansichten aktualisiert, damit sie entweder den Organisator oder die Teilnehmer unterstützen können.

Der größte Teil der Arbeit in dieser Episode konzentriert sich auf die Erstellung von HTML-E-Mails in Yii und deren programmgesteuerte Übermittlung. Als ich jedoch anfing, den Code dafür zu schreiben, stieß ich auf alle Komplexitäten, die das System bald unterstützen muss. Beispielsweise müssen alle Links in den Einladungen zur sicheren Authentifizierung der Teilnehmer verwendet werden. Dabei ist zu berücksichtigen, dass sie sich noch nie für Meeting Planner registriert haben. Einige davon werde ich für die nächste Episode speichern.

Im Wesentlichen müssen wir die Anwendung darauf aufmerksam machen, wer die Besprechungsseite anzeigt, und dann das Erscheinungsbild und die verfügbaren Befehle anpassen. Yii macht das meiste einfach, aber es geht um viele Details.

Eine kurze Einschränkung bezüglich der Benutzererfahrung

Lassen Sie mich im Vorfeld sagen, es gibt viele Nachbesserungen und Verbesserungen der Benutzererfahrung, die im Laufe der Zeit schrittweise auf dem Weg zur Schaffung des minimal funktionsfähigen Produkts (MVP) durchgeführt werden müssen. Das meiste, was ich gerade baue, ist die Kernfunktionalität, um das Alpha für die tatsächliche Verwendung zu nutzen. Ich weiß, dass es an manchen Stellen grob aussieht und nicht immer so intuitiv wirkt, wie Sie möchten. Es gibt auch Ineffizienzen bei der Codierung, die in der Zukunft optimiert werden müssen.

Bitte schreiben Sie unten Ihre Gedanken und Kommentare, und ich werde sie bei der laufenden Arbeit berücksichtigen.

Hier einige Herausforderungen, die sich aus der Arbeit dieser Episode ergeben haben:

  • Das grundlegende Design und den Inhalt der Einladungs-E-Mail
  • Wie werden Einladungen geliefert? z.B. Welche E-Mail-Plattform oder Anbieter?
  • Welche verknüpften Befehle werden in der E-Mail angeboten? Und könnte der Veranstalter einige der Befugnisse der Teilnehmer einschränken?
  • Funktionale Antwort auf verknüpfte Befehle in der Einladungs-E-Mail
  • Verwalten der Besuche von eingeladenen Benutzern, die sich noch nicht angemeldet haben, z. worauf sie zugreifen können und was nicht?
  • Handhabung der Benutzererfahrung zum Sammeln von Anzeigenamen von Teilnehmern
  • Protokollierung der Antworten auf die Besprechungseinladung und Aufbau der Überwachungs- und Benachrichtigungskapazität, um den Organisator zu informieren
  • Planung der Infrastruktur für zukünftige E-Mails mit Aktualisierungen, wenn sich die Konferenzkonfigurationen ändern und die Zeit näher rückt (und vergeht), z. Benachrichtigungen ändern, Erinnerungen abrufen, Antworten als neue Notizen akzeptieren usw.

Als ich den Code für diese Episode schrieb, baute ich für einige der oben genannten Elemente eine Infrastruktur und ließ einige davon in zukünftigen Episoden zu diskutieren. Beginnen wir mit dem Einladungsdesign.

Das Einladungsdesign und der Inhalt

Anfangs musste ich fragen, was in der E-Mail enthalten sein sollte. Natürlich gibt es die Standardfelder:

  • Zu
  • Von
  • Betreff (Sie sind zu einem Meeting eingeladen!)
  • Nachrichtentext
  • Fußzeile

Der Inhalt des Körpers muss Folgendes enthalten:

  • Die Besprechungsdetails
  • Vorgeschlagene Orte
  • Vorgeschlagene Termine und Zeiten

Und welche Befehlslinks sollten abhängig von den Einstellungen des Organisators angezeigt werden? Hier sind einige Fragen, die aufkamen. Sollten wir den Empfängern erlauben,

  • Akzeptiere jede Option, d. H. Alle Orte, Daten und Zeiten sind akzeptabel
  • Akzeptieren Sie alle Orte oder alle Daten und Zeiten getrennt
  • Akzeptieren Sie bestimmte Orte und Datumsangaben individuell
  • Karten für potenzielle Orte und letztendlich Websites und Yelp-Links anzeigen
  • Senden Sie dem Organisator eine Notiz für die Besprechungsansicht
  • Schlagen Sie einen neuen Ort oder Datum und Uhrzeit vor
  • Wählen Sie einen Ort oder ein Datum und eine Uhrzeit
  • Beenden Sie die Besprechung

Schließlich muss die Fußzeile Folgendes unterstützen:

  • Alpha-Hinweis mit der Bitte um Rückmeldung
  • Option, um den Absender zu blockieren
  • Option zum Abbestellen zukünftiger Meeting Planner-Einladungen
  • Die Firmendetails und Kontaktinformationen

Ich weiß, dass es schwierig sein kann, all das zu visualisieren - dies war keine einfache Episode, für die man bauen konnte. Hier ist ein Beispiel für die Einladung, die ich letztendlich erstellt habe:

Meeting Planner Invitation Example

Im Moment habe ich die Befehle akzeptabel und ablehnen verwendet, um dem Teilnehmer anzuzeigen, dass er lediglich angibt, ob ein Ort, ein Datum und eine Uhrzeit für ihn funktionieren oder nicht. Zur Vereinfachung bot ich jedoch an, alle Orte und Zeiten zu akzeptieren, alle Orte zu akzeptieren und alle Zeiten zu akzeptieren, um dies in kürzeren Schritten zu bewältigen.

All dies basiert auf dem tatsächlichen Einladungsformular für die Besprechung der letzten Episode. Unten sehen Sie den Teil der Einladung, der die Konfiguration von Orten und Zeiten bietet:

Meeting Planner Invitation - View of Places and Times

Beachten Sie, dass die E-Mail einige der erweiterten Funktionen enthält, die in der letzten Episode entwickelt wurden, um den Organisatoren die Möglichkeit zu geben, den Teilnehmern bessere Kontrollmöglichkeiten zu bieten, z. B. neue Orte und Zeiten vorschlagen, den endgültigen Ort und die endgültige Zeit auswählen usw.

Meeting Planner Invitation - Updating Your Meeting Settings

Mir wurde sehr schnell klar, dass in Zukunft mehr in die Gestaltung der E-Mail investiert und einfachere Konfigurationen der Einladung angeboten werden müssen. Ich muss dies für zukünftige Episoden aufheben.

Einer meiner ersten Alpha-Testfreunde schlug beispielsweise vor, dass sie wünschten, sie könnten angeben, dass einige Orte nur zu bestimmten Terminen und zu bestimmten Zeitpunkten arbeiten und umgekehrt. Letztendlich muss ich möglicherweise Orte, Datumsangaben und Zeiten in einem Modell der Entscheidungen vereinheitlichen.

Lassen Sie uns noch einmal überprüfen, wie ich die obige Einladung geliefert habe.

Einlieferung der Einladung

Meeting Planner Invitation - The Command Bar with Send

Was passiert, wenn der Veranstalter auf Senden klickt? Anfangs erwartete ich, dass ich direkt an die Mailgun-API schreiben müsste, die ich bereits in früheren Envato Tuts + -Tutorials untersucht habe. Die Unterstützung von Yii2 für E-Mails ist jedoch recht umfangreich, und ich konnte die native Ansichtsunterstützung für E-Mail-Layouts (sowohl HTML als auch Text) nutzen und diese einfach über meine Mailgun SMTP-Kontoauthentifizierung bereitstellen. Dies unterstützt sogar das Anhängen zukünftiger Ereignisdateien (.ics), um Besprechungen in Kalender zu importieren.

Hinweis: Ich bin ein großer Fan von Mailgun, habe aber auch als Berater für sie gearbeitet und für ihren Blog und Envato Tuts + geschrieben.

Bevor Sie fortfahren, empfiehlt es sich, einen kurzen Blick in die Mailing-Dokumentation von Yii2 zu werfen. Es bietet einen hervorragenden Überblick.

Zuerst habe ich detailliertere SwiftMailer-Konfigurationseinstellungen zu /common/config/main-local.php hinzugefügt:

Dies ermöglichte es Yiis SwiftMailer-Komponente, meine E-Mails über den grundlegenden SMTP-Dienst von Mailgun zuzustellen.

Sie müssen Ihre Mailgun-SMTP-Einstellungen über das Steuerungsfeld Ihrer Domäne abrufen:

Meeting Planner Invitation - Mailgun SMTP Settings

Natürlich müssen Sie auch sicherstellen, dass SwiftMailer Teil der Konfiguration Ihrer composer.json-Datei ist, bevor Sie das composer update ausführen:

Als Nächstes habe ich die Ansichtsdateikonfiguration für SwiftMailer erstellt, die verwendet werden soll. Zunächst muss ein Master-Layout für HTML und Text vorhanden sein. Dann müssen auch für jedes einzelne Inhaltsdateien vorhanden sein:

Meeting Planner Invitation - The Folder and Files in Mail Layouts

Nicht alles ist für Yii vollständig dokumentiert, daher wird dieses Beispiel hoffentlich einige Hinweise geben. Beachten Sie, dass die Dateien finalize-html und -text später für eine zukünftige Episode hinzugefügt wurden.

Normalerweise ist die Datei layouts / html.php recht einfach:

Ich habe jedoch viel hinzugefügt, um mit der Gestaltung und Formatierung von HTML-E-Mails zu beginnen, die Mailchimp der Open-Source-Community zur Verfügung stellt.

Yiis SwiftMailer konvertiert Ihre HTML-Ansicht im Allgemeinen automatisch in für Text kompatible Ansichten. Am wahrscheinlichsten möchte ich eine kürzere, einfachere Textansicht für Einladungen. Im Moment werde ich jedoch die textbasierten E-Mail-Ergebnisse meines Codes überprüfen.

Im Meeting.php-Modell habe ich eine Sendefunktion geschrieben, die alle Daten sammelt, die zum Erstellen meiner oben gezeigten Einladungsansicht erforderlich sind. Im Moment lasse ich Teile aus, die sich auf die nächste Episode beziehen, um Befehlslinks aufzubauen. Grundsätzlich verwende ich Yii::$app->mailercompose() und send():

Diese Funktionen erstellen eine Nachricht unter Verwendung unseres HTML-Layouts und dieser Ansicht und geben die resultierenden Nachrichten mit personalisierten Daten an den SMTP-Dienst von Mailgun weiter. Wir können Yiis Implementierung des MVC-Modells für die E-Mail-Zustellung verwenden.

Probleme mit dem Composer

Da ich Composer mit Yii verwendet habe, bin ich oft mit einer Menge von Problemen konfrontiert, die schwer zu finden sind. Meistens hängt es mit dem Plugin "yiisoft / yii2-composer" zusammen, das den Fehler "composer-plugin-api 1.0.0" erfordert, aber dieses Mal trat beim Aktualisieren von Mailgun ein Problem auf. Für neuere Versionen der Mailgun-API sind aktuelle Updates erforderlich, um die Informationen zu erhalten. Für ein früheres, in MeetingPlanner verwendetes Yii-Plugin war eine feste, veraltete Version von guzzle erforderlich. Also musste ich Composer so konfigurieren, dass er einen Alias verwendet.

Im Wesentlichen habe ich den Komponisten angewiesen, die neueste Version von guzzle zu synchronisieren und der Anwendung mitzuteilen, dass sie eine ältere Version verwendet. In composer.json sieht ein Alias folgendermaßen aus:

Ich weise es an, "guzzlehttp/guzzle" zu installieren: "6.2.0 als 4.2.3" und damit funktioniert alles, zumindest in diesem Fall. Manchmal benötigen Entwickler von Plugins bestimmte Bibliotheksversionen, um ordnungsgemäß zu funktionieren. Komponist ist meistens nützlich, aber manchmal macht es sicher Spaß.

Meeting-Erstellung aktualisieren

Während ich mit Einladungen experimentierte, entschied ich mich, die Ansicht der Meeting-Erstellung so anzupassen, dass ein Themenbereich klarer unterstützt wird. Auf diese Weise können Benutzer eine Betreffzeile so schreiben, als würden sie eine E-Mail senden, um jemanden ohne Meeting Planner zu einem Meeting einzuladen. Die UX für diese Aufgabe muss im Laufe der Zeit wiederholt und vereinfacht werden.

Meeting Planner Invitation - Create a Meeting

Dies stellt die ideale Betreffzeile in der E-Mail für die Besprechungseinladung bereit. Um dies zu gewährleisten, musste ich natürlich das Meeting-Modell erweitern.

Ich habe eine neue Migration mit dem Namen extend_meeting_table_add_subject erstellt, die das Betrefffeld hinzufügte:

Und ich musste der neuen _form.php-Datei und dem Modell Unterstützung für das neue Feld hinzufügen.

Hier ist ein Auszug aus dem, was dem Meeting.php-Modell hinzugefügt wurde:

Eine aktualisierte Kartenseite für Orte

Zu Beginn gingen meine Links zu den Einladungskarten direkt an Google Maps, aber ich erkannte, dass es besser wäre, sie mit einer eingebetteten Kartenansicht in Meeting Planner zu verknüpfen, die Teil der Meeting-Einladung war. In meinem Fall habe ich eine Ansicht der Karte mit der Schaltfläche Zurück zur Besprechung erstellt:

Meeting Planner Invitation - Viewing a Place within a Meeting Invitation

Dafür habe ich eine neue Ansicht erstellt, die auf /views/place/view.php basiert. Hier ist /views/meeting/viewplace.php:

Was kommt als nächstes?

Wie Sie sehen, hat die erste E-Mail-Einladung alle möglichen Probleme mit sich gebracht und es waren viele kleine bis mittelgroße Updates erforderlich. Wenn jedoch die Grundvoraussetzungen für sie vollständig sind, können wir die Komplexität des Geschaffenen betrachten. Mit anderen Worten, was wird als nächstes benötigt:

  • Authentifizierte Befehlslinks. Wenn ein Teilnehmer innerhalb der E-Mail auf einen Befehlslink klickt, wie werden wir ihn authentifizieren, insbesondere wenn er sich noch nie bei unserer Anwendung registriert hat?
  • Abschluss der Besprechung anhand der Antworten. Welche Änderungen und Aktualisierungen sind erforderlich, wenn die Teilnehmer Entscheidungen treffen und der Organisator bereit ist, das Meeting abzuschließen?
  • Überwachung des Änderungsprozesses der Teilnehmer an der Einladung. Wie überwachen wir Änderungen an den Besprechungsdetails und entscheiden, wann Organisatoren und Teilnehmer benachrichtigt werden?
  • Benachrichtigung des Veranstalters und des Teilnehmers über Änderungen. Was sollten wir ihnen sagen und welche Optionen sollten angeboten werden, wenn wir sie benachrichtigen?
  • Erstellen von Kalenderdateien (.ics) zum Importieren in Google Kalender, Outlook und Apple Calendar mit den Einladungsdetails. Sobald das Meeting abgeschlossen ist, können wir eine herunterladbare .ics-Datei senden.
  • Erstellen einer Ansicht einer vollständig abgeschlossenen Besprechung. Wie sollten die Besprechungsdetails aussehen, wenn sie keine Befehle mehr für die Auswahl von Orten und Zeiten anbieten müssen? Aber welche Befehle werden auch benötigt, um die Zeit neu einzuplanen, umzuschalten, abzubrechen, den Ort oder Datum und die Uhrzeit zu ändern usw.?

In der nächsten Episode werden einige dieser Fragen behandelt. Sie konzentrieren sich auf die Links in der Einladung, auf die die Empfänger antworten möchten, obwohl sie sich zuvor noch nie bei Meeting Planner angemeldet haben. Andere Probleme müssen etwas länger warten.

Ich beginne auch mit WeFunder zu experimentieren, basierend auf der Umsetzung der neuen Crowdfunding-Regeln der SEC. Bitte beachten Sie unser Profil. Ich darf darüber mehr im Rahmen dieser Serie schreiben.

Achten Sie auf kommende Tutorials in meiner "Your Startup With PHP" -Serie - ich hoffe, Sie stimmen zu, dass dies irgendwie aufregend wird!

Bitte zögern Sie nicht, Ihre Fragen und Kommentare unten hinzuzufügen. Ich nehme generell an den Diskussionen teil. Sie können mich auch auf Twitter @reifman erreichen.

ähnliche Links

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.