Müşteri destek yazılımı · Yeni Kaynak

Zendesk Garden Tasarım Sistemi.

Gerçek tema takma adları, tipografi ve köşe yarıçapı ölçekleri, eksiksiz bir yanıt oluşturucu, görünürlüğü gözeten yerel taslaklar ve alan kurtarma özellikleri içeren bir Garden destek çalışması kılavuzu.

OpenDesign Kılavuzu8 Bölüm42 Referans KaydıÖzgün Uygulama Kılavuzu
01

Zendesk Garden Tasarım Sistemi Arayüz Önizlemesi

Yanıt görünürlüğünü değiştirin, kısa bir taslağı doğrulayın, yerel anlık görüntüyü kaydedin ve sonraki taslağa geçin.

Müşteri bağlamını görüntülerken yanıt taslağı hazırlayınÖrneğin Tamamını Aç
Yerel taslak iş akışı özgündür; yerel bileşen stilleri için Garden 9.16.1 React ThemeProvider, Buttons ve Forms kullanılır. · Uygulama başvurusu
02

Zendesk Garden Tasarım Sistemi Tasarım Referansı

Yerel taslak iş akışı özgündür; yerel bileşen stilleri için Garden 9.16.1 React ThemeProvider, Buttons ve Forms kullanılır.

Köşe yarıçapını denetleme

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
borderRadii.sm2pxŞekli bileşenin rolüne göre seçin; varsayılan orta köşe kapsül biçiminde değildir.
borderRadii.md4pxŞekli bileşenin rolüne göre seçin; varsayılan orta köşe kapsül biçiminde değildir.
borderRadii.lg8pxŞekli bileşenin rolüne göre seçin; varsayılan orta köşe kapsül biçiminde değildir.

Duyarlı kırılma noktaları

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
breakpoints.xs0pxTema kırılma noktalarıdır; uygulamanın her bölgesinin her adımda değişeceği anlamına gelmez.
breakpoints.sm576pxTema kırılma noktalarıdır; uygulamanın her bölgesinin her adımda değişeceği anlamına gelmez.
breakpoints.md768pxTema kırılma noktalarıdır; uygulamanın her bölgesinin her adımda değişeceği anlamına gelmez.
breakpoints.lg992pxTema kırılma noktalarıdır; uygulamanın her bölgesinin her adımda değişeceği anlamına gelmez.
breakpoints.xl1200pxTema kırılma noktalarıdır; uygulamanın her bölgesinin her adımda değişeceği anlamına gelmez.

Yazı boyutları

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
fontSizes.xs10pxGövde metni, etiket, meta veri ve başlık rollerini birbirinden ayrı tutun.
fontSizes.sm12pxGövde metni, etiket, meta veri ve başlık rollerini birbirinden ayrı tutun.
fontSizes.md14pxGövde metni, etiket, meta veri ve başlık rollerini birbirinden ayrı tutun.
fontSizes.lg18pxGövde metni, etiket, meta veri ve başlık rollerini birbirinden ayrı tutun.
fontSizes.xl22pxGövde metni, etiket, meta veri ve başlık rollerini birbirinden ayrı tutun.
fontSizes.xxl26pxGövde metni, etiket, meta veri ve başlık rollerini birbirinden ayrı tutun.
fontSizes.xxxl36pxGövde metni, etiket, meta veri ve başlık rollerini birbirinden ayrı tutun.

Satır yükseklikleri

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
lineHeights.sm16pxMetin rolüyle birlikte kullanın; tüm satır yüksekliklerini yazı tipi boyutundan türetmeyin.
lineHeights.md20pxMetin rolüyle birlikte kullanın; tüm satır yüksekliklerini yazı tipi boyutundan türetmeyin.
lineHeights.lg24pxMetin rolüyle birlikte kullanın; tüm satır yüksekliklerini yazı tipi boyutundan türetmeyin.
lineHeights.xl28pxMetin rolüyle birlikte kullanın; tüm satır yüksekliklerini yazı tipi boyutundan türetmeyin.
lineHeights.xxl32pxMetin rolüyle birlikte kullanın; tüm satır yüksekliklerini yazı tipi boyutundan türetmeyin.
lineHeights.xxxl44pxMetin rolüyle birlikte kullanın; tüm satır yüksekliklerini yazı tipi boyutundan türetmeyin.

Aralık adımları

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
space.base4Tutarlı bir ritim için tema aralığı değerleri.
space.xxs4pxTutarlı bir ritim için tema aralığı değerleri.
space.xs8pxTutarlı bir ritim için tema aralığı değerleri.
space.sm12pxTutarlı bir ritim için tema aralığı değerleri.
space.md20pxTutarlı bir ritim için tema aralığı değerleri.
space.lg32pxTutarlı bir ritim için tema aralığı değerleri.
space.xl40pxTutarlı bir ritim için tema aralığı değerleri.
space.xxl48pxTutarlı bir ritim için tema aralığı değerleri.

Açık tema anlamsal rol eşlemesi

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
colors.variables.light.background.defaultpalette.whiteTema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
colors.variables.light.background.subtleneutralHue.100Tema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
colors.variables.light.background.dangerdangerHue.100Tema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
colors.variables.light.background.primaryEmphasisprimaryHue.700Tema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
colors.variables.light.foreground.defaultneutralHue.900Tema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
colors.variables.light.foreground.subtleneutralHue.700Tema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
colors.variables.light.foreground.onEmphasispalette.whiteTema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
colors.variables.light.foreground.primaryprimaryHue.700Tema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
colors.variables.light.foreground.dangerdangerHue.700Tema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
colors.variables.light.border.defaultneutralHue.300Tema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
colors.variables.light.border.subtleneutralHue.200Tema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
colors.variables.light.border.dangerdangerHue.300Tema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
colors.variables.light.border.primaryEmphasisprimaryHue.700Tema rolü takma adı; takma adı CSS renk olarak değerlendirmek yerine seçili renk tonu ve palet üzerinden çözümleyin.
03

Zendesk Garden Tasarım Sistemi Kapsamlı Kılavuzu

Bu sistemi gerçek bir arayüz için seçmeye, uygulamaya ve gözden geçirmeye yönelik pratik bir kılavuz.

DESIGN-zendesk-garden.md

Eksiksiz yönlendirme, uygulama için başlangıç noktası ve kaynak bağlantıları.

Kılavuzu İndir

Zendesk Garden Tasarım Sistemi Destek Çalışma Alanı Yapısı

Müşteri talebini görünür tutun

Destek yanıtı hazırlama alanı, özenle yazılmış ancak alakasız bir yanıtı önlemek için yeterli bağlam sunmalıdır. Bu örnekte müşteri talebi, taslağın üzerinde; talep sahibi, kuruluş ve konuyla birlikte gösterilir. Arayüz, ekranlar arasında geçiş yapmadan yeni metni özgün soruyla karşılaştırmaya yetecek kadar yoğundur.

Bu OpenDesign kılavuzundan

Geçmişi etkin taslaktan ayırın

Kaydedilen yerel kayıtlar, açık bir görünürlük etiketiyle yazma alanının üzerinde gösterilir. Etkin taslak yerel Textarea içinde kalır. Kaydetme işlemi bir anlık görüntü ekleyip alanı temizler; böylece sonraki düzenlemeler daha önce kaydedilmiş bir notu fark edilmeden değiştiremez.

Zendesk Garden Tasarım Sistemi Tema Rolleri ve Paleti

Renkleri kopyalamadan önce takma adları inceleyin

Garden 9 DEFAULT_THEME, anlamsal rolleri renk tonu ailelerine ve numaralı palet değerlerine eşler. background.primaryEmphasis gibi bir rol, sabit bir onaltılık değer değildir. Referans tablosu bu takma adları korur; böylece özel bir tema, yerel denetimlerde sabit kodlanmış mavi parçalar bırakmadan ana renk tonunu değiştirebilir.

Yazar tarafından oluşturulan bölgeleri sağlayıcıyla uyumlu tutun

ThemeProvider yerel bileşen stillerini sağlar. Bu örnekte DEFAULT_THEME ve buna uygun açık temalı özel bir çalışma alanı kullanılır; yalnızca çevreleyen arka planı değiştiren sahte bir koyu mod düğmesi eklenmez. Renk şeması desteği ekliyorsanız özel mesaj ve kenar çubuğu renklerini de sağlayıcıyla uyumlu hâle getirin.

Zendesk Garden Tasarım Sistemi Tipografi ve Yoğunluk

14px çalışma metnini okunaklı tutun

Varsayılan tema; 14px orta ağırlık rolü ve 20px orta satır yüksekliğinin yanı sıra ayrı 12px destekleyici metin ve 18px başlık rolleri sunar. Örnekte 26px destek talebi başlığı ve daha küçük bağlam meta verileri kullanılır. Özgün müşteri mesajı ve kaydedilen notlar, sıkıştırılmış etiketler yerine normal gövde metni olarak kalır.

Uzun yanıtların doğal biçimde satıra kaymasını sağlayın

Kaydedilen metin satır sonlarını korur ve uzun sözcükleri satıra sığdırır. Böylece dar bir mobil ekranda yatay kaydırma gerekmeksizin notun tamamı görüntülenir. Oluşturma alanı metin alanıyla dikey olarak büyür; tüm mesaj geçmişi dahili bir kaydırma kutusuna dönüşmez.

Zendesk Garden Tasarım Sistemi Alan ve Düğme Bileşimi

Etiketi, ipucunu ve hatayı birbiriyle ilişkilendirin

Yerel Field; Label, Hint, Textarea ve koşullu Message öğelerini bir arada gruplar. Doğrulama özelliği, yazılmış asgari uzunluk kuralı karşılanmadığında metin alanının görünümünü değiştirir. Bu yaklaşım, hata rengini alanın dışındaki ilgisiz bir paragrafa uygulamak yerine bileşen bileşimini izler.

Görünürlük için ayrı bir denetim kullanın

Zendesk Garden Tasarım Sistemi Taslak Durumu ve Yerel Geçmiş

Mesaj eklemeden önce doğrulayın

Uygulama, boşlukları kırpılmış metnin en az on iki karakter olmasını gerektirir. Gönderim başarısız olursa taslak olduğu gibi kalır, alanla ilgili bir ileti gösterilir ve metin alanına odaklanılır. Düzenleme yapıldığında eski hata temizlenir; sonraki gönderimde güncel metin yeniden denetlenir. Bu kural uygulama davranışıdır, belgelenmemiş bir Garden varsayılanı değildir.

Dahili notları görsel olarak ayırt edin

Dahili kayıtlarda sıcak tonlu, yazara özgü bir arka plan ve yazıyla belirtilmiş Dahili not taslağı etiketi bulunur. Herkese açık kayıtlar normal yüzey rengini kullanır. Her ikisinde de gönderilmediği açıkça belirtilir. Bu ayrım, gerçek bir Zendesk görüşmesini taklit etmeden veya başka bir kişinin bir ileti aldığını ima etmeden görünürlük bağlamını gösterir.

Zendesk Garden Tasarım Sistemi Duyarlı Çalışma Alanları

Bağlamı ana görevin altına taşıyın

Uygulamanın kırılma noktasında destek talebi bağlamı, konuşma ve yanıt hazırlama alanının altına taşınır. Temel belgedeki sıralama değişmez. Telefonda görünürlük denetimi kullanılabilir genişliğin tamamını kaplar, işlem satırı ise düğme etiketlerinin sıkışmaması için satır kaydırır.

Ölçülü köşe yarıçapları ve ince ayırıcılar kullanın

Yerel denetimlerde 2px, 4px ve 8px köşe yarıçapı ölçeğinden yararlanılır. Özgün mesaj panellerinde 4px köşeler ve ince kenarlıklar kullanılır. Daha güçlü görsel vurgu, her mesajın etrafındaki gölgelere değil, etkin işleme ve doğrulama durumuna ayrılmalıdır.

Zendesk Garden Tasarım Sistemi Doğrulaması ve Klavyeyle Kurtarma

Taslak akışının tamamını sınayın

Yararlı bir denetim, geçersiz bir gönderimle başlar; ardından yazma, görünürlüğü değiştirme, kaydetme ve temizleme işlemlerinin arayüzün anlaşılır kalmasını sağladığını doğrular. Kaynakta, hata veya temizleme işleminden sonra odağı geri yüklemek için React ref kullanılır. Sonuç sayısı bir durum bölgesinde duyurulur.

  1. Kısa bir taslak gönderip alan hatasını kontrol edin.
  2. Dahili not'u seçin, yararlı bir not yazın ve kaydedin.
  3. Daha sonra başka bir taslağı temizleyin ve kaydedilen yerel anlık görüntünün durduğunu doğrulayın.

Kararlı bir okuma sırasını koruyun

Talep, taslaktan önce gelir; yeni kaydedilen yerel anlık görüntüler kronolojik sırada tutulur. Yerel düğmeler yaptıkları işlemi metinle belirtir. Yanıt hazırlama alanında gizli klavye kısayolları veya otomatik gönderme davranışı bulunmaz ve görünürlük seçeneği etiketli bir seçim alanı olarak kalır.

Zendesk Garden Tasarım Sistemi React Entegrasyonu

Birbiriyle uyumlu paket nesillerini yükleyin

Örnekte tema, düğme ve form paketleri 9.16.1 sürümüne sabitlenmiştir; React 18 ve styled-components kullanılır. Daha eski Garden paket nesillerini karıştırmak, tema beklentilerinin uyuşmamasına yol açabilir. Tam JSX girişi sağlayıcıyı, alan bileşimini ve yerel durumu içerirken CSS dosyası yalnızca yazara özgü düzeni içerir.

  • @zendeskgarden/react-theming 9.16.1
  • @zendeskgarden/react-buttons 9.16.1
  • @zendeskgarden/react-forms 9.16.1

Yalnızca eksik hizmet katmanını genişletin

Zendesk Garden Tasarım Sistemi Bileşen Örnekleri

main.jsx — eksiksiz çalışan örnek

Müşteri bağlamını görüntülerken yanıt taslağı hazırlayın. Aşağıdaki kaynak, tüm durum ve doğrulama mantığını içeren eksiksiz React girişidir.

jsx
import React, { useState, useRef } from "react";
import { createRoot } from "react-dom/client";
import { ThemeProvider, DEFAULT_THEME } from "@zendeskgarden/react-theming";
import { Button } from "@zendeskgarden/react-buttons";
import {
  Field,
  Label,
  Textarea,
  Hint,
  Message,
  Select,
} from "@zendeskgarden/react-forms";
import "./garden.css";
function App() {
  const [mode, setMode] = useState("public"),
    [text, setText] = useState(""),
    [error, setError] = useState(false),
    [items, setItems] = useState([]);
  const ref = useRef();
  function submit(e) {
    e.preventDefault();
    if (text.trim().length < 12) {
      setError(true);
      ref.current.focus();
      return;
    }
    setItems([...items, { mode, text: text.trim() }]);
    setText("");
    setError(false);
  }
  return (
    <ThemeProvider theme={DEFAULT_THEME}>
      <main className="garden-workspace">
        <header>
          <span>SUPPORT WORKSPACE / FICTIONAL TICKET</span>
          <h1>Help with an invoice address</h1>
          <p>Ticket #1028 · Nadia Walker · Email channel</p>
        </header>
        <div className="garden-grid">
          <section>
            <div className="message customer">
              <strong>Nadia Walker</strong>
              <small>Customer · example message</small>
              <p>
                Could you update the company address on our next invoice? The
                billing contact has changed.
              </p>
            </div>
            {items.map((i, n) => (
              <article className={"message " + i.mode} key={n}>
                <strong>
                  {i.mode === "public"
                    ? "Public reply draft"
                    : "Internal note draft"}
                </strong>
                <small>Saved locally · not sent</small>
                <p>{i.text}</p>
              </article>
            ))}
            <form onSubmit={submit} noValidate>
              <div className="composer-head">
                <h2>Compose a draft</h2>
                <Field>
                  <Label>Visibility</Label>
                  <Select
                    value={mode}
                    onChange={(e) => setMode(e.target.value)}
                  >
                    <option value="public">Public reply</option>
                    <option value="internal">Internal note</option>
                  </Select>
                </Field>
              </div>
              <Field>
                <Label>
                  {mode === "public" ? "Reply text" : "Internal note"}
                </Label>
                <Hint>
                  {mode === "public"
                    ? "Prepared for the customer; this demo will not send it."
                    : "Internal context for the support team; saved only in this page."}
                </Hint>
                <Textarea
                  ref={ref}
                  value={text}
                  rows={5}
                  validation={error ? "error" : undefined}
                  onChange={(e) => {
                    setText(e.target.value);
                    setError(false);
                  }}
                />
                {error && (
                  <Message validation="error">
                    Write at least 12 characters.
                  </Message>
                )}
              </Field>
              <div className="composer-actions">
                <span>{text.length} characters</span>
                <Button
                  type="button"
                  onClick={() => {
                    setText("");
                    setError(false);
                    ref.current.focus();
                  }}
                >
                  Clear draft
                </Button>
                <Button isPrimary type="submit">
                  Save local draft
                </Button>
              </div>
            </form>
            <p role="status">
              {items.length > 0
                ? `${items.length} draft${items.length === 1 ? "" : "s"} saved locally. No message sent.`
                : ""}
            </p>
          </section>
          <aside>
            <h2>Ticket context</h2>
            <dl>
              <dt>Requester</dt>
              <dd>Nadia Walker</dd>
              <dt>Organization</dt>
              <dd>Northstar Studio</dd>
              <dt>Priority</dt>
              <dd>Normal</dd>
              <dt>Topic</dt>
              <dd>Billing details</dd>
            </dl>
            <div className="context-note">
              <h3>Before replying</h3>
              <ul>
                <li>Confirm the billing contact.</li>
                <li>Keep invoice identifiers out of public examples.</li>
                <li>State whether the change affects future invoices.</li>
              </ul>
            </div>
          </aside>
        </div>
        <footer>
          Native Garden 9.16.1 React components. Original local drafting
          workflow; no Zendesk connection.
        </footer>
      </main>
    </ThemeProvider>
  );
}
createRoot(document.getElementById("root")).render(<App />);

Kod referansı

  • Bir Vite React projesi oluşturun, <div id="root"></div> öğesini koruyun ve bunu src/main.jsx dosyası olarak yükleyin.

garden.css — özgün duyarlı bileşim

Yerel bileşenlerin üzerine katmanlanan uygulama düzeni.

css
* {
  box-sizing: border-box;
}
body {
  margin: 0;
  font:
    14px/1.5 system-ui,
    sans-serif;
  color: #293239;
  background: #f8f9f9;
}
.garden-workspace header {
  padding: 24px 32px;
  background: white;
  border-bottom: 1px solid #d8dcde;
}
.garden-workspace header span {
  font-size: 10px;
  letter-spacing: 0.08em;
  color: #5c6970;
}
.garden-workspace h1 {
  font-size: 26px;
  line-height: 1.3;
  margin: 8px 0;
}
.garden-workspace header p {
  color: #5c6970;
  margin: 0;
}
.garden-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 280px;
  gap: 24px;
  padding: 24px 32px;
}
.message {
  padding: 20px;
  background: white;
  border: 1px solid #d8dcde;
  border-radius: 4px;
  margin-bottom: 16px;
}
.message p {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  margin: 12px 0 0;
}
.message small {
  display: block;
  color: #5c6970;
  margin-top: 4px;
}
.message.internal {
  background: #fff8ed;
  border-color: #e7ce99;
}
form {
  padding: 24px;
  background: white;
  border: 1px solid #d8dcde;
  border-radius: 4px;
}
.composer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 24px;
}
.composer-head > div {
  max-width: 220px;
}
.garden-workspace h2 {
  font-size: 18px;
  margin: 0 0 12px;
}
.composer-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  margin-top: 20px;
}
.composer-actions span {
  font-size: 12px;
  color: #5c6970;
  margin-right: auto;
}
.garden-grid aside {
  background: white;
  border: 1px solid #d8dcde;
  border-radius: 4px;
  padding: 20px;
  align-self: start;
}
dl {
  margin: 0;
}
dt {
  font-size: 12px;
  color: #5c6970;
  margin-top: 16px;
}
dd {
  margin: 4px 0 0;
  font-weight: 600;
}
.context-note {
  margin-top: 24px;
  border-top: 1px solid #e8eaec;
  padding-top: 16px;
}
.context-note h3 {
  font-size: 14px;
}
.context-note ul {
  padding-left: 18px;
  font-size: 12px;
}
.context-note li {
  margin: 8px 0;
}
footer {
  padding: 16px 32px;
  font-size: 12px;
  color: #5c6970;
  border-top: 1px solid #d8dcde;
  background: white;
}
@media (max-width: 850px) {
  .garden-grid {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 550px) {
  .garden-grid {
    padding: 16px;
  }
  .garden-workspace header {
    padding: 20px 16px;
  }
  .composer-head {
    display: block;
  }
  .composer-head > div {
    max-width: none;
  }
  .composer-actions {
    flex-wrap: wrap;
    justify-content: flex-start;
  }
  .composer-actions span {
    width: 100%;
  }
  form {
    padding: 16px;
  }
}

Kod referansı

  • main.jsx dosyasının yanına kaydedin. Bu özel düzen kuralları, kitaplığın belirteç başvurusundan ayrı tutulmuştur.
04

Zendesk Garden Tasarım Sistemi Aracı Kurulumu

Uygulamaya Başlangıç Noktası

Sabitlenmiş yerel örnek pakete alındı ve tarayıcıda yerel olarak kontrol edildi. Örnek yalnızca yerel uygulama durumunu kullanır.

sh
npm create vite@latest garden-draft -- --template react
cd garden-draft
npm install
npm install [email protected] [email protected] styled-components @zendeskgarden/[email protected] @zendeskgarden/[email protected] @zendeskgarden/[email protected]
# Replace src/main.jsx and add src/garden.css.
npm run dev

Projeniz İçin Bir İstem

Ajan İstemi
Yerel Field/Label/Hint/Textarea/Message bileşimiyle bir Garden destek mesajı oluşturucu hazırlayın. Her kaydedilen taslak anlık görüntüsünde görünürlüğü koruyun, eklemeden önce doğrulayın, müşteri bağlamını koruyun ve yerel kaydetme ile göndermeyi birbirinden ayırın. Buradaki tema rollerini ve kaynak kodun tamamını aynen kullanın.
05

Zendesk Garden Tasarım Sistemi Kaynakları ve Kapsamı

OpenDesign uygulama kılavuzu. Örnek bileşen, yerel Garden bileşenleriyle oluşturulur; kurmaca destek kaydı içeriği ve yerel taslaklar Zendesk'e bağlanmaz veya mesaj göndermez.