Ajan Hook'ları
Yerel bir ajan, ne yaptığını NEXUS'a uygulamanın yerel hook uç noktalarına gönderim yaparak bildirir. Room yanındaki canlı etkinlik akışını dolduran şey bu gönderimlerdir; bir oturumun kendi işine dair anlatısının, NEXUS'un kendi başına ayrıştırdığı terminal çıktısının yanında durmasını sağlayan da budur.
Atıf — bir olayın hangi ajana ait olduğu — bu sayfadaki sözleşmenin tamamıdır.
Kısa özet
| Atfı belirleyen şey | İstekle birlikte sunulan ajana özel kimlik bilgisi; başka hiçbir şey değil |
| İstek gövdesinden atıf | Kabul edilmez |
| Atıf yoksa varsayılan ajan | Yok — geri düşülecek bir yol bulunmaz |
| Kimlik bilgisi yok ya da yalnızca ortak başlatma kimlik bilgisi var | Reddedilir, 401 |
| Gövde geçerli JSON ama bir JSON nesnesi değil | Reddedilir, 400 |
| Sağlanma | İlgili ajanın oturumu başladığında otomatik olarak verilir |
Ajanı kimlik bilgisi belirler
Her hook gönderimi, raporladığı ajana özel olarak verilmiş kimlik bilgisini sunmak zorundadır. Atıf yalnızca buna dayanır: NEXUS olayı, kimlik bilgisinin ait olduğu ajanın hesabına yazar ve istek gövdesindeki hiçbir şey başka bir ajanı adlandıramaz, geçersiz kılamaz veya ima edemez.
Bilinçli olarak ikinci bir yol yoktur. Hiç kimlik bilgisi sunmayan ya da yalnızca ortak başlatma kimlik bilgisini — tek tek ajanları değil, başlatmanın kendisini tanımlayan kimlik bilgisini — sunan bir istek reddedilir. Varsayılan bir ajana atfedilmez, en olası görünen ajana atfedilmez ve sonradan çözülmek üzere atıfsız bir olay olarak da kaydedilmez. Bir hook gönderimi ya hangi ajan adına konuştuğunun kanıtıyla gelir ya da hiç gelmez.
Ajana özel bir kimlik bilgisini herhangi bir bearer token gibi ele alın: yalnızca sahibinin erişebileceği izinlere sahip bir dosyada durmalıdır, hiçbir zaman bir ortam değişkeninde ve hiçbir zaman paylaşılan geçmişte değil. Onu bir commit'in dışında tutan adlandırma kuralı için bkz. Yollar ve Kimlik Bilgileri.
Reddetmeler
| Koşul | Sonuç |
|---|---|
| Ajanın kendi kimlik bilgisini sunar | Kabul edilir ve o ajana atfedilir |
| Yalnızca ortak başlatma kimlik bilgisini sunar | 401 — reddedilir, hiçbir ajana atfedilmez |
| Hiç kimlik bilgisi sunmaz | 401 — reddedilir, hiçbir ajana atfedilmez |
| Gövde geçerli JSON ama bir JSON nesnesi değil — bir dizi, bir metin, bir sayı | 400 — reddedilir |
Buradaki bir 401, geçici bir arıza değil bir yapılandırma gerçeğidir: aynı istek değiştirilmeden tekrarlandığında aynı biçimde başarısız olur. Yeniden deneme mantığı bunu döngüye sokmak yerine yüzeye çıkarmalıdır.
Her reddetme yerel olarak kaydedilir; böylece yanlış yapılandırılmış bir entegrasyon veriyi sessizce düşürmek yerine teşhis edilebilir olur. Akışta beklediğiniz bir etkinlik görünmüyorsa, önce onu düşüren reddetmeye bakın — doğru kimlik bilgisi olmadan gönderim yapan bir entegrasyon, dışarıdan tıpkı boşta duran bir ajan gibi görünür.
Kırıcı değişiklik: gövde temelli atıf kaldırıldı
Önceki sürümler istek gövdesinde taşınan bir ajan tanımlayıcısını kabul ediyor ve yalnızca ortak başlatma kimlik bilgisini sunan bir gönderimi de atfediyordu. Bu davranışların ikisi de kaldırıldı. Bunlardan birine dayanan bir entegrasyon artık 401 ile reddedilir ve etkinlik akışına hiçbir katkı yapmaz.
Kendi yazdığınız bir entegrasyonu taşımak için:
- Her istekte, gönderimin raporladığı ajana ait kimlik bilgisini sunun.
- Ajanı adlandıran alanı istek gövdesinden çıkarın. Artık bir ajan seçmez ve yerinde bırakılması isteği atıflı hale getirmez.
- Bir JSON nesnesi gönderin. Geçerli JSON olarak ayrıştırılan ama nesne olmayan bir gövde
400ile reddedilir. 401durumunu yeniden denenecek değil, raporlanacak bir hata olarak ele alın.
Mevcut ajanlar kendiliğinden yükselir
Bu değişiklikten önce oluşturulmuş ajanlar için elle onarım gerekmez. Ajana özel kimlik bilgisi, o ajanın oturumu bir sonraki başlayışında verilir ve gönderim o andan itibaren çalışır. Yeniden oluşturulacak, yeniden sağlanacak veya yeniden kaydedilecek bir şey ve elle düzenlenecek bir yapılandırma dosyası yoktur.
Sırada ne var
- Yollar ve Kimlik Bilgileri — yerel kimlik bilgisi dosyalarının nasıl adlandırıldığı, nerede durduğu ve bir anahtarın neden hiçbir zaman ortamda taşınmadığı.
- Çalıştırma ve İzleme — çalışan bir ajanın bildirdiği canlı durum sözlüğü ve NEXUS'un çıkarım yapmayı reddettiği şeyler.
- Room — hook olaylarının canlı bir akış olarak göründüğü yer.