Referans

Hata kodları

Akıştaki tipli hatalar ve bunlar karşısında yapılması gerekenler.

Hatalar, retryable bayrağı içeren tipli bir error olayı olarak gelir; SDK bunların her birini temalı bir duruma eşler. Akış açılmadan önceki HTTP düzeyindeki başarısızlıklar bir JSON gövdesinde aynı kodları kullanır.

KodAnlamıYapılması gereken
invalid_keyBilinmeyen veya iptal edilmiş yayınlanabilir anahtarAnahtarı ve ortamı kontrol edin. rd_pk_… (veya yeniden adlandırmadan önceki haliyle nc_pk_…) olmayan bir anahtar başlatma sırasında Rendel'i devre dışı bırakır ve RendelLauncher başlatılmadığı sürece hiçbir şey oluşturmaz.
quota_exceededBu ay organizasyonun kullanımı tükendi veya uygulama askıya alındıYönetim panelinde Settings → Plan & usage altından kullanım bakiyesi ekleyin veya planı değiştirin.
rate_limitedCihaz veya kullanıcı başına mesaj sınırına ulaşıldıİstekleri yavaşlatın; sınırlar uygulama başına yapılandırılabilir.
model_busyYukarı akış modeli kısa süreliğine kapasite aşımındaGeri çekilme ile tekrar deneyin. Yanıt sayfası tek dokunuşla Tekrar dene seçeneği gösterir; hiçbir şey otomatik olarak yeniden gönderilmez.
manifest_unknownSunucu bu manifest özetini (manifest hash) görmediManifesti yeniden senkronize etmek için Rendel.registerAction metodunu tekrar çağırın veya uygulamayı yeniden başlatın.
upgrade_requiredBu derleme, sunucunun hizmet vereceği minimum SDK sürümünün altındaKullanıcıya uygulamayı güncellemesini söyleyin. Alt sınır varsayılan olarak boştur ve geriye dönük uyumsuz bir protokol değişikliği eski bir istemciyi etkin biçimde hatalı hale getirmedikçe boş kalır; bkz. Changelog and versioning.
(device-side)SDK'nın iletim hattı üzerinden size bildiremediği herhangi bir durumRendelConfig(onLog: ...) parametresini iletin; her işleyici hatası, işleyici zaman aşımı, bağlam sağlayıcı zaman aşımı, manifest reddi ve aktarım hatası kararlı bir code değeriyle RendelLogRecord olarak gelir. Bunu kilitlenme raporlayıcınıza yönlendirin.
invalid_requestHatalı biçimlendirilmiş istek. Akışta ayrıca bloğuna artık uymayan (zaten yanıtlanmış veya daha yeni bir revizyonla değiştirilmiş) bir selection ya da doğrulanmış ve oturum açmış bir kullanıcı gerektiren bir uygulamadan gelen bir tur. /v1/identify (HTTP 403) üzerinde reddedilen bir doğrulama.Hatalı biçimlendirilmiş bir gövde için istemcinizi kontrol edin. Güncelliğini yitirmiş bir seçim için kullanıcı en son bloktan tekrar seçim yapar. Oturum açma için geçerli bir hmac ile user gönderin. Kimlik tespiti (identify) için HMAC'in küçük harfli bir onaltılık HMAC_SHA256(userId, secret) olduğunu kontrol edin.
internalBeklenmeyen sunucu hatasıTekrar deneyin; kalıcı arızalar temalı bir kullanılamıyor durumu gösterir.

Tekrar deneme, turn_id dahil olmak üzere orijinal isteği değiştirmeden yeniden gönderir; böylece sunucu isteği tanır ve kullanıcının mesajını ne iki kez yazar ne de iki kez faturalandırır. Kesilen bir akış, tek dokunuşla Tekrar dene seçeneği sunan yeniden denenebilir bir hata olarak görünür, ve sunucunun duyurduğu ancak hiçbir zaman tamamlamadığı herhangi bir blok, sonsuza kadar yanıp sönmek yerine fallback_text değerine yerleşir. Bağlanan ve ardından duraklayan bir tur, oluşturucunun (composer) hiçbir zaman devre dışı kalmaması için RendelConfig.streamIdleTimeout (varsayılan olarak 45 saniye) sonrasında terk edilir. Bağlanan, tamamlanan ve hiçbir blok üretmeyen bir tur da aynı şekilde raporlanır (“Yanıt gelmedi. Tekrar deneyin.”), çünkü boş bir yanıt sayfası hâlâ düşünen bir sayfadan ayırt edilemez. Boşluk algılama yoktur: SDK'nın ayrıştıramadığı bir kare atlanır ve hiçbir şey onu yeniden getirmez, bu nedenle geçmişin yakınsaması henüz otomatik değildir.

Yalnızca HTTP kodları

Bunlar akışta hiçbir zaman gelmez. Herhangi bir tur başlamadan önce, reddedilen bir isteğin JSON gövdesi olarak geri dönerler.

KodDurumAnlamı
app_not_live403Uygulama henüz canlıya geçmeden önce kullanılan canlı anahtar (kurulum dört kontrolü geçtiğinde bunu kendiliğinden yapar). SDK başlatıcıyı gizler ve tek bir uyarı günlüğe kaydeder; kullanıcı hiçbir şey görmez. O zamana kadar test anahtarını kullanın. Bkz. Go live.
app_suspended403Uygulama askıya alındı. Config, logo ve yüklemeler gönderir; sohbet, onay ve eşleştirme bunun yerine quota_exceeded bildirir.
origin_not_allowed403Settings → Security → Allowed domains altında listelenmeyen bir alan adındaki tarayıcı. Test anahtarı localhost üzerinde de yanıt verir.
unsupported_media_type415Modelin okuyamadığı türde bir yükleme.
payload_too_large41320 MB üzerindeki bir yükleme.
upload_failed502Depolama yüklemeyi reddetti. Tekrar deneyin.
uploads_unavailable503Yüklemeler şu anda sunulamıyor.
no_logo404GET /v1/apps/logo: yapılandırma hiçbir logo belirtmiyor.
logo_unavailable503GET /v1/apps/logo: logo şu anda sunulamıyor.
pairing_test_only403Canlı anahtar üzerinde POST /v1/pairings/claim.
pairing_not_found404Yanlış, kullanılmış veya süresi dolmuş bir kod ile POST /v1/pairings/claim.

İstek kimliği

Her tur bir tane taşır. turn.start üzerinde request_id olarak gelir, yanıtta X-Request-Id başlığı olarak geri döner ve o turun her sunucu günlüğü satırının başına eklenir. SDK en güncel olanı denetleyicide tutar ve RendelConfig.onLog'a gönderdiği kayıtlara dahil eder, böylece bir kilitlenme raporu bunu zaten taşır.

Tek bir tura karşılık gelir: ne sorulduğu, neyin oluşturulduğu, hangi aksiyonların çalıştığı ve sunucunun o sırada ne yaptığı. Yönetim panelinde Users altındaki aramaya yapıştırın ve o sohbete doğrudan kendiniz ulaşın; bize gönderin, biz de aynısını görelim. Kendi teknoloji yığınınız istekleri zaten izliyorsa, sohbet çağrısında X-Request-Id gönderin; biz de yeni bir tane üretmek yerine sizinkini kullanalım.