Kontaktet
`contacts.list`, `get`, `create`, `save`, `update`, `set_audiences`, `delete`, `delete_many`, `list_people`, `set_photo`, `remove_photo`, `block`, `unblock`, `list_threads` 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: nil)client.contacts.set_audiences("[email protected]", audienceIds: ["aud_4c1b8e2a7d9f05c36b4e8a71"])client.contacts.delete("[email protected]") puts page.items.size, page.has_more?, contact[:source], contact[:lastSeenAt], saved[:source]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.add_contact, që trajtohet te faqja e audiencave. set_audiences thotë saktësisht në cilat lista është një kontakt, me një thirrje.
Adresat ruhen me shkronja të vogla dhe gem-i e kodon atë që jepni, ndaj [email protected] arrin te rreshti i duhur. Një adresë nil ose bosh ngre ArgumentError 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
limitInteger- Sa kontakte të kthehen për faqe: një numër i plotë nga 1 deri në 200, me 50 si parazgjedhje. Konvertohet, ndaj një String si `"100"` i lexuar nga një query string është në rregull, dhe një vlerë jashtë diapazonit jep një 422 në vend që të kufizohet.
cursorString- `next_cursor` 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ë ngritur si `OpenEmail::InvalidRequestError`, 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::Page, ndaj rreshtat janë te page.items dhe përshkimi ndjek page.next_cursor sa kohë që page.has_more? është true. list_all i kthen të gjithë rreshtat si një Array të vetëm, dhe iterate i jep një nga një. get, create, update, save dhe set_audiences kthejnë secili një kontakt si Hash me çelësa Symbol, 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 nil- Emri i shfaqur, ose nil 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 nil- Tekst i lirë që dikush shkroi për këtë person, në aplikacion ose përmes `update`, kurrë i gjeneruar. Është nil kur askush nuk ka shkruar gjë, dhe `notes: nil` te `update` e pastron.
lastSeenAtString or nil- 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ë nil 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<Hash>- Vetëm te `get`, `create`, `update`, `save` dhe `set_audiences`, kurrë te rreshtat e listës. Çdo audiencë ku është kontakti, përfshirë atë të parazgjedhurën, si Hash me `id`, `name` dhe `builtin`. `builtin` është `default` te audienca së cilës i përket çdo kontakt dhe nil te një audiencë që e krijoi dikush, ndaj degëzoni sipas tij dhe jo sipas emrit, të cilin mund ta ndryshojë kushdo.
photoUrlString or nil- Ku shërbehet fotoja e kontaktit, ose nil kur kontakti nuk ka foto. `set_photo` e vendos atë, dhe çdo ngarkim merr një URL të re.
Caktimi i audiencave të një kontakti
set_audiences(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 gem-i 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 ngrenë OpenEmail::NotFoundError.
Të gjithë në faqen Kontaktet
list_people 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::PeoplePage, e cila i shton seen te items, has_more? dhe next_cursor. 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::PEOPLE_SORTS 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.
page = client.contacts.list_people(sort: "threads", limit: 50) page.items.each do |person| client.contacts.save(person[:email]) if !person[:saved] && person[:threads].to_i > 5end blocked = client.contacts.list_all_people(blocked: true)puts page.seen, blocked.sizelist_all_people i kthen të gjitha faqet si një Array të vetëm, dhe iterate_people ia jep çdo person një blloku, ose kthen një Enumerator kur nuk ka bllok. Asnjëra nuk raporton seen, ndaj lexoni një faqe me list_people për ta mësuar. Cursor-i është i errët, ndaj jepeni next_cursor prapa si cursor: saktësisht ashtu siç erdhi, me të njëjtat sort:, q: dhe blocked:.
Ruajtja, fshirja dhe fotot
save(email), me name: dhe notes: opsionale, ë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ë Hash-in që kthen thotë cili rast ishte. delete_many fshin deri në 200 në një thirrje.
client.contacts.save("[email protected]", name: "Grace Hopper") contact = client.contacts.set_photo("[email protected]", File.binread("photo.jpg"), content_type: "image/jpeg")puts contact[:photoUrl] client.contacts.set_photo("[email protected]", Pathname("photo.png")) client.contacts.remove_photo("[email protected]")client.contacts.delete_many(["[email protected]", "[email protected]"])set_photo 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 binar, një IO ose një Pathname. Jepni content_type:, ose bajte që mbartin llojin e tyre: një objekt që i përgjigjet content_type, si një ngarkim i Rails, ose një File a Pathname 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::CONTACT_PHOTO_TYPES 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::CONTACT_BLOCK_LISTS i emërton të dyja listat.
Bisedat dhe veprimtaria
list_threads(email) faqos nëpër thread-et ku adresa shkroi ose ku iu shkrua, në çdo dosje, dhe list_all_threads e iterate_threads 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.list_threads("[email protected]", q: "invoice") activity = client.contacts.activity( "[email protected]", minutes: 30 * 24 * 60, grain: "day", offset_minutes: Time.now.utc_offset / 60) puts threads.items.size, activity.dig(:totals, :waiting)activity merr fjalë kyçe në snake_case. minutes: cakton dritaren, e cila është 90 ditë kur lihet jashtë. grain: cakton gjerësinë e intervalit: minute, hour ose day. offset_minutes: cakton minutat në lindje të UTC ku ndahen ditët. Time.now.utc_offset / 60 është zhvendosja lokale, dhe gem-i e dërgon si offsetMinutes të API-së.