Kontaktet
`contacts->list`, `get`, `create`, `save`, `update`, `setAudiences`, `delete`, `deleteMany`, `listPeople`, `setPhoto`, `removePhoto`, `block`, `unblock`, `listThreads` dhe `activity`.
Çdo metodë
$page = $client->contacts->list(limit: 100);$contact = $client->contacts->get('[email protected]'); $saved = $client->contacts->create([ 'email' => '[email protected]', 'name' => 'Grace Hopper', 'notes' => 'Met at the compiler workshop',]); $client->contacts->update('[email protected]', ['notes' => null]);$client->contacts->setAudiences('[email protected]', ['audienceIds' => ['aud_4c1b8e2a7d9f05c36b4e8a71']]);$client->contacts->delete('[email protected]'); echo count($page), ' ', $page->hasMore ? 'more to come' : 'that is all', PHP_EOL;echo $contact['source'], ' ', $contact['lastSeenAt'] ?? 'never mailed', ' ', $saved['source'], PHP_EOL;list kthen së pari kontaktet e para më së fundi, dhe në fund kontaktet të cilave nuk u është dërguar kurrë postë. source është auto kur rreshti u shkrua sepse një anëtar i dërgoi asaj adrese një mesazh nga kompozuesi i aplikacionit, që është një pohim thelbësisht i ndryshëm nga fakti që dikush e ka ruajtur. Posta që mbërrin nga një adresë nuk shkruan asgjë, as një dërgim përmes kësaj API-je.
Libri i adresave i përket hapësirës së punës dhe jo një personi, ndaj një kontakt i ruajtur nga cilido anëtar është kontakti që sheh çdo anëtar dhe çdo çelës. create e shkruan source si manual dhe e vendos kontaktin te audienca e parazgjedhur në çastin që shkruhet. Emërtoni listat tuaja te audienceIds që kontakti të hyjë në to në të njëjtën thirrje, gjë që kërkon edhe audiences:write, ose shtojeni kontaktin më vonë me audiences->addContact, që trajtohet te faqja e audiencave. setAudiences thotë saktësisht në cilat lista është një kontakt, me një thirrje.
Adresat ruhen me shkronja të vogla dhe klienti e kodon atë që jepni, ndaj [email protected] arrin te rreshti i duhur. Një adresë bosh hedh InvalidArgumentException para se të dërgohet ndonjë gjë. Adresa është identiteti, ndaj update nuk mund ta ndryshojë: zhvendosja e një kontakti është një delete dhe një create.
Parametrat: contacts->list
limitint- Sa kontakte të kthehen për faqe: një numër i plotë nga 1 deri në 200, me 50 si parazgjedhje. Një vlerë jashtë diapazonit jep një 422 në vend që të kufizohet. Argumenti është i tipit `int`, ndaj një vlerë të lexuar nga një query string shndërrojeni fillimisht me `(int)`.
cursorstring- `nextCursor` nga faqja e mëparshme. Mos e ndërtoni kurrë vetë: një cursor që emërton një kontakt që nuk ekziston më jep një 400 `invalid_cursor`, të hedhur si `InvalidRequestException`, që do të thotë se gjendja juaj e faqosjes është e vjetruar dhe përshkimi duhet të nisë nga e para pa cursor.
sourcestring- `manual` për kontaktet që dikush i ruajti qëllimisht, `auto` për ato që regjistroi kompozuesi i aplikacionit. Lëreni jashtë për gjithë librin e adresave.
qstring- Kërkon në emër dhe në adresë, deri në 200 karaktere. Kur asgjë nuk përputhet saktësisht në faqen e parë, kthehen në vend të kësaj shkrime të afërta, dhe faqet që vijojnë vazhdojnë të kërkojnë në të njëjtën mënyrë.
Përgjigjja: një kontakt
contacts->list kthen një OpenEmail\Result\Page, ndaj rreshtat janë te $page->items dhe përshkimi ndjek $page->nextCursor sa kohë që $page->hasMore është true. listAll i kthen të gjithë rreshtat si një array të vetëm, dhe iterate kthen një Generator që i jep një nga një. get, create, update, save dhe setAudiences kthejnë secili një kontakt si array me çelësa në camelCase, të njëjtin rresht plus audiences. Libri i adresave nuk ka kufi, prandaj kjo rrugë faqos në vend që të kthejë një array që ndalet në heshtje te 200.
objectstring- Gjithmonë stringu `contact`, si te rreshtat e listës ashtu edhe te `get`.
emailstring- Adresa, e ruajtur me shkronja të vogla, kështu që `[email protected]` dhe `[email protected]` janë një kontakt i vetëm, dhe çelësi që merr çdo metodë e contacts, meqë nuk ekspozohet asnjë id kontakti. Rreshtat i përkasin hapësirës së punës dhe jo anëtarit apo çelësit që i shkroi, pra çdo anëtar dhe çdo çelës i hapësirës lexon e shkruan një libër të vetëm adresash.
namestring or null- Emri i shfaqur, ose null kur nuk është regjistruar kurrë një emër për adresën. Një shkrim automatik mbart një emër vetëm kur header-i dha diçka tjetër përveç vetë adresës, dhe nuk mund ta mbishkruajë kurrë një emër që e shkroi përdoruesi.
sourcestring- `auto` do të thotë se rreshti u shkrua sepse përdoruesi i dërgoi postë asaj adrese. `manual` do të thotë se dikush e futi me dorë, një pohim thelbësisht i ndryshëm, dhe një upsert nuk e ul kurrë `manual` prapë në `auto`. Posta që mbërrin nga një adresë nuk shkruan fare rresht, qëllimisht, ndaj dikush që vetëm ju ka shkruar nuk gjendet këtu. Trajtojeni vlerën si një string të hapur, sepse kolona është tekst i lirë me parazgjedhje `manual`.
notesstring or null- Tekst i lirë që dikush shkroi për këtë person, në aplikacion ose përmes `update`, kurrë i gjeneruar. Është null kur askush nuk ka shkruar gjë, dhe `'notes' => null` te `update` e pastron.
lastSeenAtstring or null- Një string ISO 8601 UTC, që rifreskohet sa herë që një anëtar i dërgon asaj adrese nga kompozuesi i aplikacionit, jo kur mbërrin postë prej saj, gjë që nuk shkruan asgjë. Është null te një kontakt i ruajtur përmes `create`, të cilit nuk i është dërguar kurrë postë, dhe këta renditen të fundit në renditjen zbritëse sipas `lastSeenAt` që kthen kjo rrugë.
audiencesarray- Vetëm te `get`, `create`, `update`, `save` dhe `setAudiences`, kurrë te rreshtat e listës. Çdo audiencë ku është kontakti, përfshirë atë të parazgjedhurën, si array me `id`, `name` dhe `builtin`. `builtin` është `default` te audienca së cilës i përket çdo kontakt dhe null te një audiencë që e krijoi dikush, ndaj degëzoni sipas tij dhe jo sipas emrit, të cilin mund ta ndryshojë kushdo.
photoUrlstring or null- Ku shërbehet fotoja e kontaktit, ose null kur kontakti nuk ka. `setPhoto` e vendos dhe çdo ngarkim merr një URL të re.
Caktimi i audiencave të një kontakti
setAudiences($email, ['audienceIds' => [...]]) thotë saktësisht në cilat audienca është një kontakt, me një kërkesë. Kontakti hyn në çdo audiencë të listuar ku ende nuk është dhe del nga çdo tjetër, dhe thirrja kthen kontaktin pas ndryshimit, me audiences e tij. Kërkon audiences:write, sepse shkruan anëtarësime dhe jo kontaktin, dhe përsëritja e saj nuk ndryshon asgjë, ndaj klienti e riprovon pas një dështimi të rrjetit.
Audienca e parazgjedhur ruhet gjithmonë, prandaj 'audienceIds' => [] e lë kontaktin vetëm në audiencën e parazgjedhur. Pranon deri në 100 id. Një id që nuk emërton asnjë audiencë në këtë hapësirë pune jep një 404 audience_not_found dhe asgjë nuk ndryshon, ndërsa një adresë që nuk është kontakt jep një 404 contact_not_found. Të dyja hedhin NotFoundException.
Të gjithë në faqen Kontaktet
listPeople liston personat që shfaq faqja Kontaktet në aplikacion: kontaktet e ruajtura dhe çdo adresë e parë në postë, secila me saved, threads dhe lastAt. list janë vetëm kontaktet e ruajtura. Kthen një OpenEmail\Result\PeoplePage, e cila i shton seen te items, hasMore dhe nextCursor. Adresat e para në postë vijnë vetëm kur çelësi mban edhe threads:read, dhe $page->seen thotë nëse erdhën. sort: është recent, name ose threads, dhe OpenEmail\Constants\PeopleSorts i emërton. q: kërkon te emrat, adresat dhe shënimet, dhe blocked: true mban personat që i bllokon lista e bllokimit e hapësirës së punës, përfshirë rregullat për domene të tëra. blockedBy emërton rregullin në çdo rresht.
use OpenEmail\Constants\PeopleSorts; $page = $client->contacts->listPeople(sort: PeopleSorts::THREADS, limit: 50); foreach ($page as $person) { if (!$person['saved'] && $person['threads'] > 5) { $client->contacts->save($person['email']); }} $blocked = $client->contacts->listAllPeople(blocked: true);echo $page->seen ? 'saved and seen' : 'saved only', ', ', count($blocked), ' blocked', PHP_EOL;listAllPeople i kthen të gjitha faqet si një array të vetëm, dhe iteratePeople kthen një Generator që jep çdo person. Asnjëra nuk raporton seen, ndaj lexoni një faqe me listPeople për ta mësuar. Cursor-i është i errët, ndaj jepeni nextCursor prapa si cursor: saktësisht ashtu siç erdhi, me të njëjtat sort:, q: dhe blocked:.
Ruajtja, fshirja dhe fotot
save($email), me një array opsional me name dhe notes, është Shto te kontaktet dhe Mbaje te kontaktet: ruan një adresë që ende nuk është kontakt, mban si të ruajtur me dorë një të regjistruar nga një dërgim dhe kthen një të fshirë. delete është Fshi: heq kontaktin e ruajtur dhe fsheh adresën, që kompozuesi të mos e regjistrojë sërish, dhe pranon edhe një adresë të parë vetëm në postë. wasSaved në array-in që kthen thotë cili rast ishte. deleteMany fshin deri në 200 në një thirrje.
$client->contacts->save('[email protected]', ['name' => 'Grace Hopper']); $contact = $client->contacts->setPhoto('[email protected]', file_get_contents('photo.jpg'), contentType: 'image/jpeg');echo $contact['photoUrl'], PHP_EOL; $client->contacts->setPhoto('[email protected]', new \SplFileInfo('avatar.png')); $client->contacts->removePhoto('[email protected]');$client->contacts->deleteMany(['[email protected]', '[email protected]']);setPhoto i dërgon bajtet e imazhit ashtu siç janë: PNG, JPEG, WebP ose GIF deri në 5 MB, të përshtatura në një katror 512 piksel. Bajtet janë një string, një burim stream-i nga fopen, një SplFileInfo, ose një stream PSR-7 apo skedar i ngarkuar. Jepni contentType:, ose bajte që mbartin llojin e tyre: një skedar i ngarkuar PSR-7, ose një ngarkim Symfony apo Laravel, me llojin e tij të medias, ose një skedar a stream emri i të cilit mbaron me .png, .jpg, .jpeg, .webp ose .gif. Pa lloj, bajtet dërgohen si application/octet-stream, të cilin serveri e refuzon me një 422 invalid_image. OpenEmail\Constants\ContactPhotoTypes i emërton katër llojet. Adresa duhet të jetë fillimisht një kontakt i ruajtur.
Bllokimi
block($email) vendos adresën në listën e bllokimit të hapësirës së punës që posta prej saj të refuzohet, duke hedhur çdo etiketë me plus, dhe unblock($email) heq çdo rregull që e bllokon. Të dyja kërkojnë settings:write, sepse ndryshojnë listën e bllokimit dhe jo kontaktin, dhe asnjëra nuk kërkon që adresa të jetë kontakt.
Kur unblock heq një rregull për një domen të tërë, removed e liston atë me list të vendosur në blockedDomains, dhe bashkë me të zhbllokohen të gjithë në atë domen. OpenEmail\Constants\ContactBlockLists i emërton të dyja listat.
Bisedat dhe veprimtaria
listThreads($email) faqos nëpër thread-et ku adresa shkroi ose ku iu shkrua, në çdo dosje, dhe listAllThreads e iterateThreads i përshkojnë ato. activity($email) kthen numrat pas skedës Aktiviteti të një kontakti: të marrat dhe të dërguarat për çdo interval, thread-et që presin përgjigjen tuaj dhe kohën mediane të përgjigjes në secilin drejtim. Të dyja kërkojnë threads:read.
$threads = $client->contacts->listThreads('[email protected]', q: 'invoice'); $activity = $client->contacts->activity( '[email protected]', minutes: 30 * 24 * 60, grain: 'day', offsetMinutes: intdiv((int) date('Z'), 60),); echo count($threads), ' threads, ', $activity['totals']['waiting'], ' waiting on you', PHP_EOL;activity merr argumente me emër. minutes: cakton dritaren, e cila është 90 ditë kur lihet jashtë. grain: cakton gjerësinë e intervalit: minute, hour ose day. offsetMinutes: cakton minutat në lindje të UTC ku ndahen ditët, dhe intdiv((int) date('Z'), 60) është zhvendosja e zonës kohore në të cilën është vendosur PHP-ja.