Zur Dokumentation springen
Ruby

Formulare

`forms.list`, `get`, `create`, `update`, `delete`, `publish`, `pause`, `resume`, `duplicate`, `analytics`, `list_starters`, `get_starter`, `list_submissions`, `get_submission`, `delete_submission`, `delete_submissions`, `approve_submission`, `resend_confirmation` und `subscribe`.

Jede Methode

forms.rb
form = client.forms.create(  name: "Newsletter sign-up",  starter: "newsletter",  settings: {audienceIds: ["aud_4c1b8e2a7d9f05c36b4e8a71"]},  publish: true) puts form[:url], form[:subscribeUrl] saved = client.forms.update(  form[:id],  settings: {doubleOptIn: true, senderAddress: "[email protected]"},  expectedUpdatedAt: form[:updatedAt]) signup = client.forms.subscribe(form[:id], email: "[email protected]", first_name: "Ann", consent: true) client.forms.iterate_submissions(form[:id], status: "pending") do |submission|  client.forms.resend_confirmation(form[:id], submission[:id]) if submission[:expired]end stats = client.forms.analytics(form[:id], days: 30)starters = client.forms.list_starters client.forms.pause(form[:id])client.forms.resume(form[:id])copy = client.forms.duplicate(form[:id])client.forms.delete(copy[:id]) puts saved[:senderIssue], signup[:outcome], stats.dig(:totals, :conversion), starters.size

Ein Formular hat einen Entwurf in document und das publishedDocument, das Besucher sehen. update ändert den Entwurf und die Einstellungen, und publish schaltet den Entwurf live. Einstellungen gelten sofort, ob veröffentlicht oder nicht, und expectedUpdatedAt lehnt eine Speicherung, die die einer anderen Person überschreiben würde, mit einem 409 version_conflict ab, ausgelöst als OpenEmail::ConflictError.

Die Felder eines Formulars behalten die camelCase-Namen der API (expectedUpdatedAt:, doubleOptIn) und werden als Keyword-Argumente oder als einzelner Hash übergeben, während Filter und Optionen Keywords in snake_case sind (status: bei list_submissions, offset_minutes: bei analytics). Ein Formular kommt als Hash mit Symbol-Schlüsseln zurück, form[:subscribeUrl] liest also die Adresse, die Anmeldungen annimmt.

Lesen erfordert forms:read und Ändern erfordert forms:write. approve_submission erfordert außerdem contacts:write, weil es einen Kontakt hinzufügt. resend_confirmation erfordert außerdem emails:send, ebenso ein Aufruf, durch den das Formular E-Mails sendet: doubleOptIn einschalten, senderAddress oder die Bestätigungs-E-Mail festlegen oder ein Formular mit Double-Opt-in veröffentlichen oder fortsetzen. delete verlangt von einem OAuth-Zugriffstoken einen Bestätigungscode, von einem API-Schlüssel nie. Solange das Token keinen hat, löst delete einen OpenEmail::PermissionError mit step_up_required? true aus.

subscribe meldet jemanden so an, wie es die Seite des Formulars tut, und sendet keine Zugangsdaten, auch nicht von einem Client, der welche hat. api_key: wird daher ignoriert. Die Antworten werden als Keyword-Argumente oder als einzelner Hash übergeben, geschlüsselt nach den Feldschlüsseln des Formulars. Alle Anmeldungen aus einem Netzwerk teilen sich ein Limit von 40 alle zehn Minuten, ein Server, der Anmeldungen für viele Personen weiterreicht, erreicht es also schnell: Fügen Sie Personen, die Sie bereits kennen, stattdessen mit audiences.import_contacts hinzu. Über dem Limit löst der Aufruf OpenEmail::RateLimitError aus. Übergeben Sie die Seite, auf der das Formular war, als oe_source:, lassen Sie oe_started weg und senden Sie oe_website leer oder gar nicht.

Ein 422 von subscribe ist invalid_form_submission, ausgelöst als OpenEmail::ValidationError, und fields im Fehler listet jede fehlende oder ungültige Antwort als Hash mit key und error auf, mit Gründen wie required, email und option. OpenEmail::FORM_FIELD_ERRORS nennt jeden Grund. Das Gem läuft auf einem Server. Ein Browser sendet die Antworten selbst an die subscribeUrl des Formulars, als JSON-Body oder mit einem Header Accept: application/json, und bekommt von jedem Origin JSON zurück. Fehlt beides, bekommt er eine 303-Weiterleitung auf die gehostete Seite.

Antwort: ein Formular

list gibt eine OpenEmail::Page mit Formularen zurück, neueste zuerst, ohne document und settings, und list_all und iterate durchlaufen alle Seiten. get, create, update, publish, pause, resume und duplicate geben das ganze Formular als Hash zurück, der document, publishedDocument, settings, audiences, senderIssue und senderProblem ergänzt.

idString
Der dauerhafte Bezeichner, `frm_` gefolgt von 24 Hexzeichen.
statusString
`draft` bis zur ersten Veröffentlichung, dann `live`, solange es Anmeldungen annimmt, und `paused`, solange es keine annimmt. Ein Formular kehrt nie zu `draft` zurück. `OpenEmail::FORM_STATUSES` nennt die drei.
urlString
Die gehostete Seite des veröffentlichten Formulars, zum Teilen als Link.
subscribeUrlString
Wohin ein reines HTML-Formular oder ein Skript im Browser die Antworten sendet.
documentHash
Der Entwurf: `fields` in ihrer Reihenfolge, die umgebenden Texte in `copy` und der `style`.
publishedDocumentHash or nil
Was Besucher jetzt sehen, oder nil bis zur ersten Veröffentlichung.
settingsHash
Wohin Anmeldungen gehen und was danach geschieht: `audienceIds`, `doubleOptIn`, `senderAddress`, die Bestätigungs-E-Mail, `successAction`, `redirectUrl` und `notifyAddresses`.
hasUnpublishedChangesBoolean
True, wenn sich der Entwurf von dem unterscheidet, was Besucher sehen. Vor der ersten Veröffentlichung immer false.
senderIssueString or nil
Warum ein Formular mit Double-Opt-in seine Bestätigungs-E-Mails gerade nicht senden kann: `missing`, `not_sendable` oder `not_allowed`. nil, wenn es das kann. `OpenEmail::FORM_SENDER_ISSUES` nennt die drei.
statsHash
`views`, `submissions`, `added`, `pending` und `lastSubmittedAt`, gezählt im Moment des Lesens.

Einsendungen

list_submissions liefert Seiten, neueste zuerst, mit q: zum Durchsuchen von E-Mail-Adressen und status: für pending oder added, und list_all_submissions und iterate_submissions durchlaufen alle Seiten. OpenEmail::FORM_SUBMISSION_STATUSES nennt die beiden Status. Jede Einsendung ist ein Hash, der die Antworten so behält, wie sie gesendet wurden, samt Bezeichnungen, sodass sie auch nach einer Änderung des Formulars richtig lesbar bleibt.

resend_confirmation gibt die Einsendung mit confirmationSent zurück. Es ist false, wenn nichts hinausging: Eine Adresse erhält eine Bestätigung pro Formular alle zehn Minuten und fünf pro Tag im ganzen Workspace, und eine hinzugefügte Einsendung erhält keine. expired markiert eine ausstehende Anmeldung, deren neuester Link abgelaufen ist.