Automações
`automations->list`, `get`, `create`, `update`, `publish`, `pause`, `resume`, `archive`, `duplicate`, `delete`, `sendTest`, `stats`, `listVersions`, `restoreVersion`, `listStarters`, `listEnrollments`, `getEnrollment`, `enroll` e `exitEnrollment`, com `events->send`, `sendBatch` e `listNames`.
Todos os métodos
use OpenEmail\Constants\AutomationEnrollmentStatuses;use OpenEmail\Constants\AutomationTriggerKinds; $automation = $client->automations->create([ 'name' => 'Welcome series', 'starter' => 'welcome-series', 'settings' => ['timezone' => 'Europe/London'],]); $definition = $automation['definition'];$definition['trigger'] = ['kind' => AutomationTriggerKinds::EVENT, 'eventName' => 'trial.started', 'filters' => []]; $saved = $client->automations->update($automation['id'], [ 'definition' => $definition, 'expectedUpdatedAt' => $automation['updatedAt'],]); foreach ($saved['problems'] as $problem) { if ($problem['blocking']) { throw new \RuntimeException($problem['message']); }} $client->automations->sendTest($saved['id'], ['stepKey' => $saved['definition']['entry'] ?? '']);$live = $client->automations->publish($saved['id']); $sent = $client->events->send([ 'name' => 'trial.started', 'email' => '[email protected]', 'properties' => ['plan' => 'starter'], 'createContact' => true,], idempotencyKey: 'trial:[email protected]'); foreach ($client->automations->iterateEnrollments($live['id'], status: AutomationEnrollmentStatuses::ACTIVE) as $enrollment) { if ($enrollment['heldFor'] !== null) { echo $enrollment['contact']['email'], ' ', $enrollment['heldFor'], PHP_EOL; }} $stats = $client->automations->stats($live['id']);$history = $client->contacts->listEvents('[email protected]', name: 'trial.started'); $client->automations->pause($live['id']);$client->automations->resume($live['id']); echo count($sent['enrolled']), ' ', $stats['totals']['entered'], ' ', count($history->items), PHP_EOL;Uma automação mantém uma definition de rascunho e a versão published que é executada. update altera o rascunho e as definições, e publish fixa o rascunho como a versão seguinte e ativa a automação. problems diz o que ainda impede um rascunho de ser publicado, e expectedUpdatedAt recusa com 409 version_conflict uma gravação que sobreporia a de outra pessoa.
Ler requer automations:read e alterar requer automations:write. publish, resume e sendTest requerem também emails:send. events->send e events->sendBatch requerem contacts:write, e contacts->listEvents requer contacts:read. delete pede um código de verificação a um token de acesso OAuth, e nunca a uma chave de API.
events->sendBatch aceita até 100 eventos e nunca lança uma exceção por um evento inválido: a resposta lista accepted e failed, cada um com o index do evento no array que enviou.
attributes num contacto guarda os seus campos personalizados, e uma automação lê um deles como attributes.<key>.