Kişiler
`contacts->list`, `get`, `create`, `save`, `update`, `setAudiences`, `delete`, `deleteMany`, `listPeople`, `setPhoto`, `removePhoto`, `block`, `unblock`, `listThreads` ve `activity`.
Her yöntem
$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 en son görülen kişileri önce, hiç posta gönderilmemiş kişileri ise en sona koyar. Satır, bir üye uygulamanın yazma ekranından o adrese bir ileti gönderdiği için yazıldıysa source değeri auto olur; bu, birinin onu kaydetmiş olmasından esaslı biçimde farklı bir iddiadır. Bir adresten gelen posta hiçbir şey yazmaz, bu API üzerinden yapılan bir gönderim de yazmaz.
Defter tek bir kişiye değil çalışma alanına aittir; bu yüzden herhangi bir üyenin kaydettiği kişi, her üyenin ve her anahtarın gördüğü kişidir. create, source değerini manual olarak yazar ve kişiyi yazıldığı anda varsayılan kitleye koyar. Aynı çağrıda kendi listelerinize katmak için onları audienceIds içinde belirtin (bu, audiences:write de gerektirir) ya da kişiyi daha sonra Kitleler sayfasında anlatılan audiences->addContact ile ekleyin. setAudiences bir kişinin hangi listelerde olduğunu tek bir çağrıda tam olarak belirler.
Adresler küçük harfle saklanır ve istemci geçirdiğiniz adresi kodlar; bu yüzden [email protected] doğru satıra ulaşır. Boş bir adres, hiçbir şey gönderilmeden önce InvalidArgumentException fırlatır. Adres kimliğin kendisidir, bu yüzden update onu değiştiremez: bir kişiyi taşımak, bir delete ve bir create demektir.
Parametreler: contacts->list
limitint- Sayfa başına döndürülecek kişi sayısı: 1 ile 200 arasında bir tam sayı, varsayılanı 50. Aralık dışındaki bir değer kırpılmaz, 422 verir. Argümanın türü `int` olduğundan, bir sorgu dizesinden okunan bir değeri önce `(int)` ile dönüştürün.
cursorstring- Önceki sayfanın `nextCursor` değeri. Asla kendiniz oluşturmayın: artık var olmayan bir kişiyi belirten bir cursor, `InvalidRequestException` olarak fırlatılan bir 400 `invalid_cursor` verir; bu, sayfalama durumunuzun eskidiği ve dolaşmanın cursor olmadan yeniden başlaması gerektiği anlamına gelir.
sourcestring- Birinin bilerek kaydettiği kişiler için `manual`, uygulamanın yazma ekranının kaydettikleri için `auto`. Defterin tamamı için belirtmeyin.
qstring- Adı ve adresi arar, en fazla 200 karakter. İlk sayfada hiçbir şey tam eşleşmezse bunun yerine yakın yazımlar döner ve sonraki sayfalar da aynı şekilde eşleşmeye devam eder.
Yanıt: bir kişi
contacts->list bir OpenEmail\Result\Page döndürür; satırlar $page->items içindedir ve dolaşma, $page->hasMore true olduğu sürece $page->nextCursor değerini izler. listAll tüm satırları tek bir dizi olarak döndürür, iterate ise onları birer birer veren bir Generator döndürür. get, create, update, save ve setAudiences her biri tek bir kişiyi camelCase anahtarlı bir dizi olarak döndürür: aynı satır ve ek olarak audiences. Adres defterinin bir sınırı yoktur; bu rotanın sessizce 200'de duran bir dizi döndürmek yerine sayfalamasının nedeni budur.
objectstring- Hem liste satırlarında hem de `get` yanıtında her zaman `contact` dizgesi.
emailstring- Adres; yazarken küçük harfe çevrilir, böylece `[email protected]` ile `[email protected]` tek bir kişidir. Hiçbir kişi id'si dışarı verilmediği için her contacts metodunun aldığı anahtar da budur. Satırlar, onları yazan üyeye veya anahtara değil çalışma alanına aittir; dolayısıyla çalışma alanındaki her üye ve her anahtar tek bir adres defterini okur ve yazar.
namestring or null- Görünen ad; adres için hiç ad kaydedilmemişse null. Otomatik bir yazma, ancak başlık adresin kendisi dışında bir şey sağladığında bir ad taşır ve kullanıcının yazdığı bir adın üzerine asla yazamaz.
sourcestring- `auto`, satırın kullanıcı o adrese posta gönderdiği için yazıldığı anlamına gelir. `manual`, birinin onu elle girdiği anlamına gelir; bu esaslı biçimde farklı bir iddiadır ve bir upsert `manual` değerini asla `auto` değerine düşürmez. Bir adresten gelen posta bilerek hiç satır yazmaz; bu yüzden size yalnızca yazmış biri burada yoktur. Değeri açık bir dize olarak ele alın, çünkü sütun varsayılanı `manual` olan serbest metindir.
notesstring or null- Birinin bu kişi hakkında uygulamada ya da `update` üzerinden yazdığı serbest metin; asla otomatik üretilmez. Kimse bir şey yazmadıysa null'dır ve `update` üzerinde `'notes' => null` onu temizler.
lastSeenAtstring or null- Bir ISO 8601 UTC dizesi; bir üye uygulamanın yazma ekranından o adrese her gönderim yaptığında güncellenir, o adresten posta geldiğinde değil (bu hiçbir şey yazmaz). `create` ile kaydedilmiş ve hiç posta gönderilmemiş bir kişide null'dır ve bu kişiler, bu rotanın döndürdüğü azalan `lastSeenAt` sırasında en sona düşer.
audiencesarray- Yalnızca `get`, `create`, `update`, `save` ve `setAudiences` üzerinde bulunur, liste satırlarında asla. Kişinin içinde bulunduğu, varsayılan kitle dahil her kitle, `id`, `name` ve `builtin` içeren bir dizi olarak. `builtin`, her kişinin ait olduğu kitlede `default`, birinin oluşturduğu bir kitlede ise null'dır; bu yüzden dallanmayı herkesin değiştirebileceği ada göre değil, buna göre yapın.
photoUrlstring or null- Kişi fotoğrafının sunulduğu yer, kişinin fotoğrafı yoksa null. `setPhoto` onu ayarlar ve her yükleme yeni bir URL alır.
Bir kişinin kitlelerini ayarlama
setAudiences($email, ['audienceIds' => [...]]), tek bir kişinin hangi kitlelerde olduğunu tek bir istekte tam olarak belirler. Kişi, listelenen ve henüz içinde olmadığı her kitleye katılır ve diğer her kitleden ayrılır; çağrı da değişiklikten sonraki kişiyi audiences ile birlikte döndürür. Kişiyi değil üyelikleri yazdığı için audiences:write gerektirir; tekrarlanması hiçbir şeyi değiştirmez, bu yüzden istemci bir ağ hatasından sonra onu yeniden dener.
Varsayılan kitle her zaman korunur; bu yüzden 'audienceIds' => [] kişiyi yalnızca varsayılan kitlede bırakır. En fazla 100 kimlik alır. Bu çalışma alanında hiçbir kitleyi belirtmeyen bir kimlik 404 audience_not_found verir ve hiçbir şey değişmez; kişi olmayan bir adres ise 404 contact_not_found verir. İkisi de NotFoundException fırlatır.
Kişiler sayfasındaki herkes
listPeople, uygulamadaki Kişiler sayfasının gösterdiği kişileri listeler: kayıtlı kişiler ve postada görülen her adres; her birinde saved, threads ve lastAt bulunur. Bir OpenEmail\Result\PeoplePage döndürür; bu da items, hasMore ve nextCursor alanlarına seen ekler. list ise yalnızca kayıtlı kişileri döndürür. Postada görülen adresler yalnızca anahtar threads:read iznine de sahipse gelir ve gelip gelmediklerini $page->seen söyler. sort: değeri recent, name ya da threads olur ve OpenEmail\Constants\PeopleSorts bunları adlandırır. q: adlarda, adreslerde ve notlarda arar; blocked: true ise tüm alan adını kapsayan kurallar dahil, çalışma alanının engel listesinin engellediği kişileri tutar. blockedBy her satırda kuralı belirtir.
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 tüm sayfaları tek bir dizi olarak döndürür, iteratePeople ise her kişiyi veren bir Generator döndürür. Hiçbiri seen bildirmez; bunu öğrenmek için listPeople ile bir sayfa okuyun. Cursor opaktır; bu yüzden nextCursor değerini geldiği gibi, aynı sort:, q: ve blocked: ile cursor: olarak geri geçirin.
Kaydetme, silme ve fotoğraflar
İsteğe bağlı bir name ve notes dizisiyle save($email), Kişilere ekle ve Kişilerde tut işlemlerine karşılık gelir: henüz kişi olmayan bir adresi kaydeder, bir gönderimden kaydedilmiş olanı elle kaydedilmiş olarak tutar ve silinmiş olanı geri getirir. delete, Sil işlemine karşılık gelir: kayıtlı kişiyi kaldırır ve adresi gizler, böylece yazma ekranı onu yeniden kaydetmez; yalnızca postada görülmüş bir adresi de kabul eder. Döndürdüğü dizideki wasSaved hangisi olduğunu söyler. deleteMany tek çağrıda en fazla 200 tanesini siler.
$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 görsel baytlarını olduğu gibi gönderir: 5 MB'a kadar PNG, JPEG, WebP ya da GIF, 512 piksellik bir kareye sığdırılır. Baytlar bir dize, fopen ile açılmış bir akış kaynağı, bir SplFileInfo ya da bir PSR-7 akışı veya yüklenmiş dosyadır. contentType: geçirin ya da kendi türünü taşıyan baytlar verin: medya türüyle birlikte bir PSR-7 yüklenmiş dosyası ya da bir Symfony veya Laravel yüklemesi, ya da adı .png, .jpg, .jpeg, .webp veya .gif ile biten bir dosya veya akış. Tür olmadan baytlar application/octet-stream olarak gider ve sunucu bunu 422 invalid_image ile reddeder. OpenEmail\Constants\ContactPhotoTypes dört türü adlandırır. Adresin önce kayıtlı bir kişi olması gerekir.
Engelleme
block($email) adresi çalışma alanının engel listesine koyar, böylece ondan gelen posta reddedilir, artı etiketini de atar; unblock($email) ise onu engelleyen her kuralı kaldırır. İkisi de settings:write gerektirir, çünkü kişiyi değil engel listesini değiştirirler, ve hiçbiri adresin kişi olmasını gerektirmez.
unblock tüm alan adını kapsayan bir kuralı kaldırdığında, removed onu list değeri blockedDomains olacak şekilde listeler ve o alan adındaki herkesin engeli de onunla birlikte kalkar. OpenEmail\Constants\ContactBlockLists iki listeyi de adlandırır.
Yazışmalar ve etkinlik
listThreads($email), adresin her klasörde yazdığı ya da kendisine yazılan konuşma dizilerini sayfalar; listAllThreads ve iterateThreads bunları dolaşır. activity($email), bir kişinin Etkinlik sekmesinin arkasındaki sayıları döndürür: aralık başına alınan ve gönderilen iletiler, yanıtınızı bekleyen konuşma dizileri ve her iki yöndeki medyan yanıt süresi. İkisi de threads:read gerektirir.
$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 adlandırılmış argümanlar alır. minutes: pencereyi ayarlar; belirtilmezse 90 gündür. grain: aralık genişliğini ayarlar: minute, hour ya da day. offsetMinutes: günlerin bölündüğü, UTC'nin doğusundaki dakika sayısını ayarlar; intdiv((int) date('Z'), 60) ise PHP'nin ayarlı olduğu saat diliminin ofsetidir.