Mobile Blogging-App mit DreamFactory, WordPress und Mailgun, Teil 2
Schritt 6: Die Mailgun-API verstehen
Nachdem Sie Jetzt wissen, wie Sie Ihre Anwendung mit DreamFactory verbinden und einen externen Web-Service integrieren können, werden wir die mobile Blogging-Anwendung jetzt vervollständigen, indem wir sie mit dem zweiten Web-Service, Mailgun, verbinden. Sobald der Blog-Beitrag mit Hilfe des WordPress-Dienstes veröffentlicht wurde, können wir den Mailgun-Dienst verwenden, um eine kurze Nachricht, die die Blog-Post-URL enthält, an eine E-Mail-Adressliste zu senden.
Um eine Nachricht über die Mailgun-API zu senden, ist es notwendig, eine authentifizierte POST-Anforderung an den API-Endpunkt zu senden, die innerhalb des POST-Texts Absender, Empfänger, Betreff und Nachrichtentext enthält. Die Daten sollten als application/x-www-form-urlencoded-Felder gesendet werden und die Mailgun-API gibt eine JSON-Antwort zurück, die anzeigt, ob die Nachricht erfolgreich war oder nicht.
Um zu sehen, wie die Mailgun-API funktioniert, melden Sie sich zunächst an Ihrem Mailgun-Konto an und erzeugen über den Menüpunkt eine neue Mailingliste. Weisen Sie der Mailing-Liste einen Namen zu (in diesem Beispiel mblog-fans) und fügen Sie ein paar Empfänger-E-Mail-Adressen hinzu. Notieren Sie sich den Aliasnamen der Mailingliste, vor allem auch den Namen der zugewiesenen Sandbox-Subdomain, da Sie diese im nächsten Schritt benötigen werden.
Sobald Sie Ihre Mailingliste eingerichtet haben, starten Sie Ihren REST-Client und senden eine authentifizierte POST-Anforderung an https://api.mailgun.net/v2/sandbox.mailgun.org/messages (denken Sie daran, sandbox.mailgun.org durch die tatsächliche Subdomain aus Ihrem Mailinglisten-Alias zu ersetzen). Fügen Sie die Felder to, from, subject und text zu Ihrer Anfrage als URL-codierte Form-Parameter hinzu und benutzen Sie die HTTP-Basic-Authentifizierung mit dem Benutzernamen api und Ihrem Mailgun-API-Schlüssel als Passwort. Das folgende Bild zeigt die vollständige Anforderungskonfiguration.
Die Mailgun-API wird diese POST-Anforderung akzeptieren und die E-Mail-Nachricht an alle Empfänger Ihrer Mailing-Liste weiterleiten. Wenn Sie Ihre E-Mail-Adresse zur Liste hinzugefügt hatten, dann sollten Sie eine Kopie der Nachricht erhalten. Dies demonstriert, dass die API wie gewünscht funktioniert.
Schritt 7: Den Mailgun-Service zu DreamFactory hinzufügen
Im nächsten Schritt soll die Mailgun-API mit der DSP verbunden werden. Dazu melden Sie sich wieder auf Ihrer DSP an und öffnen die Registerkarte sandbox.mailgun.org
durch Ihren Mailgun-Subdomain-Namen zu ersetzen).
Im Unterabschnitt
fügen Sie einen neuen Header mit dem Namen Authorization hinzu, als dessen Wert Sie den HTTP-Basic-Authentifizierungstring einsetzen (denken Sie daran, die gesamte Zeichenfolge von der Postman-Schnittstelle zu kopieren, also das Wort »Basic« und den Schlüssel selbst). Und im Unterabschnitt fügen Sie eine Dienstdefinition hinzu, sodass Sie die API mit dem DreamFactory-Client-SDK verwenden können, wie unten dargestellt:{ "resourcePath": "/{api_name}", "produces": [ "application/json", "application/xml" ], "consumes": [ "application/json", "application/xml", "application/x-www-form-urlencoded" ], "apis": [ { "path": "/{api_name}/messages", "description": "Operations for messages", "operations": [ { "method": "POST", "summary": "sendMessage() - Send an email message", "nickname": "sendMessage", "parameters": [ { "name": "from", "description": "Message data", "allowMultiple": false, "type": "string", "paramType": "query", "required": true }, { "name": "to", "description": "Message data", "allowMultiple": false, "type": "string", "paramType": "query", "required": true }, { "name": "subject", "description": "Message data", "allowMultiple": false, "type": "string", "paramType": "query", "required": true }, { "name": "text", "description": "Message data", "allowMultiple": false, "type": "string", "paramType": "query", "required": true } ] } ] } ], "models": {} }
Speichern Sie Ihre Änderungen, damit der Dienst zur DSP hinzugefügt wird.
Es ist jetzt ganz einfach, Ihre Anwendung so zu aktualisieren, dass die erfolgreiche Veröffentlichung eines Blog-Posts einen Aufruf des Mailgun-Dienstes auslöst und eine E-Mail an Ihre Mailing-Liste sendet, die einem Link auf den neuen Beitrag enthält. Es folgt der überarbeitete Code, der zu $APP_ROOT/app.js hinzugefügt werden soll:
$(document).ready(function() { // validate form $("#add-post-form").validate({ submitHandler: function(form) { var title = $('#title').val(); var body = $('#body').val(); // generate WordPress publication request window.df.apis.wordpress.createPost({"body": {"title": title, "content_raw": body, "status":"publish"}}, function(response) { // if publication successful // get blog post URL from response // generate new request to Mailgun window.df.apis.mailgun.sendMessage({"from":'john@example.com', "to": 'mblog-fans@your-sandbox.mailgun.org',"subject":'New post: ' + response.title, "text":'Check out my latest blog post at ' + response.link}, function(response) { $("#status").show(); $("#status").html("Blog post published and promoted successfully!"); }, function(response) { $("#status").show(); $("#status").html("There was an error sending email."); } ); }, function(response) { $("#status").show(); $("#status").html("There was an error posting to WordPress."); } ); } }); });
Wie Sie obigem Code entnehmen können: Wenn die WordPress-API-Anforderung über die createPost()
-Methode erfolgreich war, wird die API-Antwort geparst, der Permalink des Blog-Post wird daraus extrahiert und eine neue Anforderung wird an die Mailgun-API über die sendMessage()
-Methode gesendet. Die Methodenparameter sind die Werte für to, from, subject und 'text, wobei der Nachrichtentext einen kurzen Einladungstext und den Permalink enthält. Damit erzeugt jeder neue Blog-Post automatisch eine Benachrichtigung an die vordefinierte Mailingliste.