Saltar para a documentação
Ruby

Formulários

`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` e `subscribe`.

Todos os métodos

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

Um formulário guarda um rascunho document e o publishedDocument que os visitantes veem. update altera o rascunho e as definições, e publish ativa o rascunho. As definições têm efeito de imediato, publicadas ou não, e expectedUpdatedAt recusa com um 409 version_conflict, lançado como OpenEmail::ConflictError, uma alteração guardada que substituiria a de outra pessoa.

Os campos de um formulário mantêm os nomes em camelCase da API (expectedUpdatedAt:, doubleOptIn), passados como argumentos nomeados ou como um único Hash, enquanto os filtros e as opções são argumentos nomeados em snake_case (status: em list_submissions, offset_minutes: em analytics). Um formulário volta como um Hash com chaves Symbol, por isso form[:subscribeUrl] lê o endereço que recebe as inscrições.

Ler requer forms:read e alterar requer forms:write. approve_submission requer também contacts:write, porque adiciona um contacto. resend_confirmation requer também emails:send, tal como uma chamada que faça o formulário enviar correio: ativar doubleOptIn, definir senderAddress ou o email de confirmação, ou ainda publicar ou retomar um formulário com dupla confirmação. delete pede um código de verificação a um token de acesso OAuth, e a uma chave de API nunca. Enquanto o token não tiver um, delete lança OpenEmail::PermissionError com step_up_required? a true.

subscribe inscreve alguém tal como a página do formulário faz e não envia nenhuma credencial, mesmo a partir de um cliente que tenha uma, por isso api_key: é ignorado. As respostas são passadas como argumentos nomeados ou como um único Hash, com as chaves dos campos do formulário. Todas as inscrições a partir de uma mesma rede partilham um limite de 40 a cada dez minutos, por isso um servidor que reencaminha inscrições de muitas pessoas atinge-o depressa: em vez disso, adicione as pessoas que já conhece com audiences.import_contacts. Acima do limite, a chamada lança OpenEmail::RateLimitError. Passe a página onde estava o formulário como oe_source:, deixe de fora oe_started, e envie oe_website vazio ou não o envie de todo.

Um 422 de subscribe é invalid_form_submission, lançado como OpenEmail::ValidationError, e o fields do erro lista cada resposta em falta ou inválida como um Hash com key e error, com motivos como required, email e option. OpenEmail::FORM_FIELD_ERRORS nomeia todos os motivos. A gem corre num servidor. Um navegador envia ele próprio as respostas para o subscribeUrl do formulário, como corpo JSON ou com um cabeçalho Accept: application/json, e recebe JSON de volta a partir de qualquer origem. Sem nenhum dos dois, recebe um redirecionamento 303 para a página alojada.

Resposta: um formulário

list devolve uma OpenEmail::Page de formulários, dos mais recentes para os mais antigos, sem document e settings, e list_all e iterate percorrem todas as páginas. get, create, update, publish, pause, resume e duplicate devolvem o formulário completo como um Hash, que acrescenta document, publishedDocument, settings, audiences, senderIssue e senderProblem.

idString
O identificador duradouro: `frm_` seguido de 24 caracteres hexadecimais.
statusString
`draft` até à primeira publicação, depois `live` enquanto aceita inscrições e `paused` enquanto não as aceita. Um formulário nunca volta a `draft`. `OpenEmail::FORM_STATUSES` nomeia os três.
urlString
A página alojada do formulário publicado, para partilhar como ligação.
subscribeUrlString
Para onde um formulário HTML simples, ou um script no navegador, envia as respostas.
documentHash
O rascunho: os `fields` por ordem, os textos de `copy` à sua volta e o `style`.
publishedDocumentHash or nil
O que os visitantes veem agora, ou nil até à primeira publicação.
settingsHash
Para onde vão as inscrições e o que acontece depois de cada uma: `audienceIds`, `doubleOptIn`, `senderAddress`, o email de confirmação, `successAction`, `redirectUrl` e `notifyAddresses`.
hasUnpublishedChangesBoolean
True quando o rascunho difere do que os visitantes veem. Sempre false antes da primeira publicação.
senderIssueString or nil
Porque é que um formulário com dupla confirmação não pode enviar os seus emails de confirmação neste momento: `missing`, `not_sendable` ou `not_allowed`. É nil quando pode. `OpenEmail::FORM_SENDER_ISSUES` nomeia os três.
statsHash
`views`, `submissions`, `added`, `pending` e `lastSubmittedAt`, contados no momento da leitura.

Submissões

list_submissions devolve páginas das mais recentes para as mais antigas, com q: para pesquisar endereços de email e status: para pending ou added, e list_all_submissions e iterate_submissions percorrem todas as páginas. OpenEmail::FORM_SUBMISSION_STATUSES nomeia os dois estados. Cada submissão é um Hash que guarda as respostas tal como foram enviadas, etiquetas incluídas, para que continue a ler-se corretamente depois de o formulário mudar.

resend_confirmation devolve a submissão com confirmationSent. É false quando nada saiu: um endereço recebe uma confirmação por formulário a cada dez minutos e cinco por dia em todo o espaço de trabalho, e uma submissão já adicionada não recebe nenhuma. expired assinala uma inscrição pendente cuja ligação mais recente expirou.