Automatizaciones
`automations->list`, `get`, `create`, `update`, `publish`, `pause`, `resume`, `archive`, `duplicate`, `delete`, `sendTest`, `stats`, `listVersions`, `restoreVersion`, `listStarters`, `listEnrollments`, `getEnrollment`, `enroll` y `exitEnrollment`, con `events->send`, `sendBatch` y `listNames`.
Todos los 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;Una automatización guarda un borrador definition y la versión published que se ejecuta. update cambia el borrador y los ajustes, y publish congela el borrador como la siguiente versión y activa la automatización. problems dice qué impide todavía publicar un borrador, y expectedUpdatedAt rechaza con 409 version_conflict un guardado que sobrescribiría el de otra persona.
Leer requiere automations:read y cambiar requiere automations:write. publish, resume y sendTest también requieren emails:send. events->send y events->sendBatch requieren contacts:write, y contacts->listEvents requiere contacts:read. delete pide un código de verificación a un token de acceso OAuth, y a una clave de API nunca.
events->sendBatch acepta hasta 100 eventos y nunca lanza un error por un solo evento incorrecto: la respuesta lista accepted y failed, cada uno con el index del evento en el array que enviaste.
attributes en un contacto guarda sus campos personalizados, y una automatización lee uno como attributes.<key>.