# Değişkenler

## Değişkenler nasıl kullanılır

Değişkenlerin ne olduğunu ve MaviBot'ta chatbotlar oluştururken bunları etkili bir şekilde nasıl kullanacağımızı inceleyelim.

{% hint style="danger" %}
**Lütfen tek bir projede değişkenler ve sabitler için aşağıdaki sistem sınırlarına dikkat edin:**

**Şablon Değişkenleri:**

* **Maksimum miktar:** 100 değişken
* **Maksimum ad uzunluğu:** 100 karakter

**Proje sabitleri:**

* **Maksimum miktar:** 50 sabit
* **Maksimum ad uzunluğu:** 100 karakter
* **Maksimum değer uzunluğu:** 5.000 karakter
  {% endhint %}

Değişken, benzersiz bir metin etiketiyle tanımlanan, veri için adlandırılmış bir depolama alanıdır.

<div data-with-frame="true"><figure><img src="/files/1f30dcc5db06f34ca2c4a67e0b52ff8d1340c740" alt=""><figcaption></figcaption></figure></div>

&#x20;                                          *Şekil 1: Adlı bir değişken `total`, bir ödeme tutarını saklıyor*.

MaviBot çeşitli değişken türleri sağlar:

1. [Yerleşik değişkenler ](#built-in-variables)
2. [Sistem değişkenleri](#system-variables)&#x20;
3. Kullanıcı tanımlı değişkenler — bunlar proje içinde kendiniz oluşturduğunuz değişkenlerdir.

**Bir değişken tanımlamak** adı verilen bir kapsayıcıya bir değer atamak anlamına gelir. Başka bir deyişle, şu gibi bir ifade: ***a=0*** değişkeninin tanımıdır ***a***. Builder'a, değişkeninde bir sayı saklayacağımızı yeni söyledik (tanımladık) ***a***, ve şimdilik bu değer ***0***.

**Bir değişkene değer atamak** aynı anlama gelir.

İfadeler **"bir değişkene bir fonksiyonun değerini atamak"** veya **"bir değişkeni bir fonksiyona eşit olarak ayarlamak"** de yaygın olarak kullanılır. Prensip aynıdır: belirli bir değer atamak yerine, bir fonksiyonun sonucunu atarsınız. Örneğin: **s\_id = tg\_send\_message(platform\_id, "Merhaba!")** Bu durumda, fonksiyonun sonucu değişkende saklanacaktır.

**Bir değişkeni sıfırlamak** ona şu değeri atamak anlamına gelir **0**.

[**Fonksiyonlar ve metodlar**](/doc/tr/chatbot/functions/degiskenler.md#functions-for-working-with-variables)  MaviBot tarafından önceden yapılandırılmış komut kümeleridir. Çoğu fonksiyon parametreler gerektirir - fonksiyonun veya metodun anlayabildiği değerler. Bot gerekli parametreleri aldığında belirli bir komutu yürütür.

**`tg_send_message(platform_id, "Merhaba!")` —** bu fonksiyon Telegram'da "Merhaba!" mesajını gönderir.

<div data-with-frame="true"><figure><img src="/files/c62d85cea62892803582f0f88f5eb3b5d7fda9e6" alt=""><figcaption></figcaption></figure></div>

<p align="center"><em>Şek. 2. text1 adlı ve bir fonksiyona atanmış değişken örneği.</em></p>

### <mark style="color:kırmızı;">**DEĞİŞKENLERLE ÇALIŞMA KURALLARI:**</mark>

1. Bir değişken adı yalnızca **bir harf**ile başlayabilir; bir sayı ile başlayamaz.

   **Age1 - ✅ doğru**  &#x20;

   1Age - ❌ <mark style="color:kırmızı;">yanlış</mark>

   **age1 -** **✅ doğru**   <mark style="color:mavi;">- önerilen seçenek</mark> <br>
2. Bir değişken, alt çizgi (\_) dışında boşluk veya özel karakter içeremez.

   **Name\_Surname - ✅ doğru** &#x20;

   Name Surname - ❌ <mark style="color:kırmızı;">yanlış</mark>

   **nameSurname** **- ✅ doğru**   <mark style="color:mavi;">- önerilen seçenek</mark><br>

   Programlama dillerindeki ayrılmış kelimeler değişken adı olarak kullanılamaz; örneğin: print, true, false, count, sum vb.<br>
3. <mark style="color:$primary;">Bu</mark> <mark style="color:kırmızı;">**kesinlikle yasaktır**</mark> <mark style="color:$primary;">kullanmak</mark> yerleşik ve sistem değişkenlerinin adlarını kullanıcı tanımlı değişkenler için kullanmak. Bu tür değişkenlerin listesini burada bulabilirsiniz. <mark style="color:kırmızı;">**bağlantı**</mark>
4. <mark style="color:mavi;">**Şunu öneriyoruz:**</mark>
   * Değişkenler için Latin (İngilizce) adlar kullanın.
   * Kısa ama anlamlı değişken adları kullanın, örneğin: totalSum, pay\_name, <mark style="color:kırmızı;">**ns**</mark>, name\_client vb.

### Bir değişkenin değeri nasıl alınır

Değişken adını süslü parantezlerin içine yerleştirin **#{}**. Mesaj metni alanında değerine bu şekilde başvurabilirsiniz. Ancak "Hesaplayıcı" alanında, değişkenin değerine ek bir sözdizimi olmadan, yalnızca adıyla başvurmalısınız.

{% hint style="danger" %}
Düğmenin **#{}** yapısı, bir değişkenin değerini almanızı sağlar. Bu yapı, değişkenin değerini metne eklemek için "Mesaj metni" alanında kullanılır.
{% endhint %}

Örnek:

<div data-with-frame="true"><figure><img src="/files/4a274aeca542d26b4445676b3e7d349c4ca3d79d" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="success" %}
Sistem, bir değişkenin değerinin başka bir değişkenin adının parçası olduğu iç içe değişkenleri destekler. Örneğin: **#{q#{test#{i}}}**
{% endhint %}

"Hesaplayıcı" alanında, değişkenlere #{} gösterimini kullanmadan adlarıyla başvurun.\r Örneğin, elimizde iki değişken varsa: price (toplam) ve quantity (adet).

`num = 10`

`sum = 1500`

<div data-with-frame="true"><figure><img src="/files/401606c414c705e65c9b99f97a72123e28a87037" alt=""><figcaption></figcaption></figure></div>

### Toplam tutar nasıl gösterilir&#xD;

Hesaplayıcıya şunu girin:

`total_sum = sum1 * num2` **✅ doğru**

<div data-with-frame="true"><figure><img src="/files/f99cd8bcd1e6a3e819a94880505e327cc328c572" alt=""><figcaption></figcaption></figure></div>

**Nasıl&#x20;*****yapılmaz*****&#x20;denir:**

`total_sum = #{sum1} * #{num2}` - ❌ <mark style="color:kırmızı;">yanlış</mark>

### Bir değişken bot'tan nasıl silinir

Bir değişkeni silmek (temizlemek) için, "Hesaplayıcı" alanına aşağıdakilerden birini girin:\r\nYourVariableName =\r\nveya\r\nYourVariableName = ""

Eşittir işaretinden sonra ya bir boşluk bırakın ya da çift (veya tek) tırnak işareti kullanın.

{% hint style="warning" %} <mark style="color:kırmızı;">**Lütfen dikkat edin!**</mark> Değişkenin hangi alana ait olduğunu belirtmek için doğru öneki kullanmak önemlidir.

Proje düzeyindeki değişkenler için (proje ayarlarında saklananlar), şu öneki kullanın **project:**\
Örnek:&#x20;*project.YourVariableName =*&#x20;veya&#x20;*project.YourVariableName = ""*

İstemci düzeyindeki değişkenler için şu öneki kullanın **client**:\r\nÖrnek:&#x20;*client.YourVariableName =* veya&#x20;*client.YourVariableName = ""*

İşlem düzeyindeki değişkenler için önek gerekmez.
{% endhint %}

## Yerleşik değişkenler

Yerleşik değişkenlerin listesi:

**#{none}** - mesajı yoksay

**#{api\_key}** - Salebot API çağrılarında kullanılan API belirteci

**#{attachment\_url}** - ekin bağlantısını içerir

**#{attachments}** - kullanıcının mesajındaki ek URL'lerinin JSON dizisi

**#{avatar}** - kullanıcının avatarına bağlantı ("Müşteriler" bölümünde gösterilir)

**#{client\_id}** - oluşturucudaki istemci ID'si, API isteklerinde de kullanılır

**#{client\_type}** - istemcinin geldiği mesajlaşma uygulaması türü (değerler \[burada] açıklanmıştır)

**#{current\_date}** - projenin saat dilimine göre dd.mm.yyyy biçiminde geçerli tarih

**#{current\_time}** - projenin saat dilimine göre hh:mm biçiminde geçerli saat

**#{custom\_answer}** - "Sunucu yanıt URL'si" alanında belirtilen sunucudan alınan yanıt

**#{message\_from\_outside}** - gelen mesaj türü. Olası değerler:\
\&#xNAN;*normal mesaj = 0\nAPI üzerinden gönderilen mesaj = 1\ncallback bildirimi (diyalogda sarı arka plan) = 3\ntelefon bildirimi (diyalogda açık mavi arka plan) = 5 \nBu değişken her gelen mesajla birlikte oluşturulur, ancak müşteri kartında görünmez.\r\nBlok tetikleyicileri ve bağlantıları için koşullar kurmak üzere bunu "Karşılaştırma değişkeni" alanında kullanabilirsiniz.*

**#{date\_of\_creation}** - kullanıcının bot'a eklendiği veya ilk kez mesaj gönderdiği tarih

**#{full\_name}** - kullanıcının tam adı (ad ve soyad)

**#{group}** - istemcinin bağlı olduğu bot (müşteri kartında "Bot'a bağlı" olarak gösterilir)

**#{main\_client\_id}** - bağlı müşteri kartları grubundaki ana müşterinin ID'si

**#{message\_id}** - müşteriyle mevcut konuşma durumunun ID'si (varsayılan: NONE)

**#{messenger}** - kullanıcının geldiği mesajlaşma uygulamasının adı

\#{name} - kullanıcının adı

\#{next\_day} - yarının tarihi dd.mm.yyyy formatında (mesaj planlama için kullanışlıdır)

**#{order\_id}** - sipariş kimliği (müşteri ID'si ve dahili sipariş ID'si kısa çizgi ile ayrılmış)

**#{order}** - kullanıcı tarafından gönderilen siparişin içeriği

**#{platform\_id}** - mesajlaşma platformundaki müşteri ID'si

**#{question}** - kullanıcı tarafından gönderilen mesaj

**#{timestamp}** - milisaniyeler dahil geçerli zaman damgası

**#{time\_of\_creation}** - kullanıcının bot'a eklendiği veya ilk kez mesaj gönderdiği zaman

**#{wa\_bot}** - kullanıcının mesaj gönderdiği WhatsApp numarası (CRM alanlarına aktarmak ve potansiyel müşterileri yöneticiler arasında dağıtmak için kullanışlıdır)

**#{weekday}** - haftanın günü sayı olarak (Pazartesi = 1, Salı = 2 vb.)

#### **client\_type değerleri**

<table><thead><tr><th width="195.3359375">Değer</th><th width="211.8125">Mesajlaşma uygulaması</th></tr></thead><tbody><tr><td>1  </td><td>Telegram için </td></tr><tr><td>2  </td><td>Viber için</td></tr><tr><td>3  </td><td>Facebook için</td></tr><tr><td>5  </td><td>çevrimiçi sohbet için</td></tr><tr><td>10</td><td>Instagram için</td></tr><tr><td>14 </td><td>e-posta </td></tr><tr><td>16</td><td>Telegram Business Hesabı </td></tr><tr><td>21</td><td>Telegram hesabı</td></tr><tr><td>22</td><td>TikTok</td></tr></tbody></table>

## Sistem değişkenleri

Sistem, bir botun çalışması sırasında çeşitli çalışma zamanı değişkenleri otomatik olarak oluşturur. Botunuzu oluştururken bu değişkenleri kullanabilirsiniz. İşinize yarayabilecek olanların listesi aşağıdadır.

{% hint style="info" %}
Ek sistem değişkenlerini belgelerde bulabilirsiniz. Bunlar, kullanım alanlarıyla ilgili bölümlerde yer alır.
{% endhint %}

**phone** - telefon numarası

**notSubscribed** - değişken 1'e eşitse, müşteri mesaj aboneliğinden çıkmıştır ve hiçbir mesaj almayacaktır

**clientBlocked** - müşteri engellenmiştir ve bot onlar için çalışmaz

**story\_url** - müşterinin yanıt verdiği Instagram hikâyesinin tanımlayıcısı

**viewed\_page** - kullanıcının çevrimiçi sohbette yazdığı sayfa

**wa\_bot** - WhatsApp botunun telefon numarası

{% hint style="info" %}
Ödeme sırasında hangi değişkenlerin oluşturulabileceğini öğrenmek için, "[Ödeme sistemi](/doc/tr/odeme.md)" bölümündeki ödeme hizmetleri entegrasyon kılavuzlarına bakın.
{% endhint %}

## Özel değişkenler

Özel değişkenler şu şekilde ayrılır:

* Proje değişkenleri (ortak değişkenler olarak da adlandırılır)
* [İstemci değişkenleri](#custom-variables)&#x20;
* [İşlem değişkenleri](#key-deal-variables) (düzenli değişkenler olarak da adlandırılır)
* [Sabitler](#how-to-set-constant-variables)&#x20;

Her değişken türü aşağıda açıklanacaktır.

{% hint style="info" %}
Builder beklediğinizden farklı bir değer gösterdiğinde veya kullandığında karışıklığı önlemek için farklı değişken türleri için aynı adları kullanmaktan kaçının.
{% endhint %}

{% hint style="info" %}
Bir değişkene değer atarken, uygun öneki kullanarak türünü belirtmek önemlidir:

**client.** (istemci değişkenleri için) ve **project.** (proje değişkenleri için). İşlem değişkenleri için önek kullanılmaz.

Bir değişkenin değeri alınırken önek kullanılmaz.

Örnek:\r Şimdi, müşterilerinizden gelen beğeniler için sayaç görevi görecek like adlı bir proje değişkeni oluşturmak istediğinizi varsayalım.

**project.like = 0 - tanım, bir kez yapılır**

Beğenileri saymanız gereken blokta şunu yazın:&#x20;**project.like = like + 1**
{% endhint %}

{% hint style="info" %}
Değişken öncelik sırası:\r işlem değişkenleri en yüksek önceliğe sahiptir, ardından istemci değişkenleri ve sonra proje değişkenleri gelir.
{% endhint %}

#### **Messenger ID (platform\_id)**

**Messenger ID (platform\_id)** - mesajlaşma uygulamasındaki kullanıcı/sohbet/kanal tanımlayıcısıdır. Bunu bulmak için, "Müşteriler" bölümünde istediğiniz müşteriyle olan görüşmeyi açın. Sohbet penceresinin sağ tarafında, "**Müşteri hakkında** - **Sistem değişkenleri"** sekmesine veya "**Tümü"** sekmesine gidin.

Düğmenin **`platform_id`** - kullanıcının benzersiz mesajlaşma uygulaması ID'sini temsil eden, kalıcı ve sistem tarafından oluşturulan bir değişkendir.

* **Kalıcılık:** Bu ID bir kullanıcı için sabit kalır. Kayıtlarını builder'dan silseniz bile, `platform_id` yeniden kayıt sırasında aynı olacaktır.
* **Kaynak:** ID, kullanıcı bot ile ilk etkileşime girdiğinde mesajlaşma platformu (ör. Telegram, WhatsApp) tarafından atanır.

Aşağıdaki örnek, `platform_id` ifadesinin müşteri kartında nasıl göründüğünü gösterir.

<div data-with-frame="true"><figure><img src="/files/fbf60e6a1afba48574ea12d1982a7f9f920857bb" alt="" width="563"><figcaption></figcaption></figure></div>

platform\_id değişkeni, topluluklar, kanallar ve sohbetler için olduğu gibi normal kullanıcılar için de mevcuttur.

bunu elde etmek için **platform\_id** Telegram kanalının (botun yönetici olduğu)

(mesajlaşma ID'si) değerini kopyalamak için, kişisel hesabınızdan kanala bir mesaj gönderin. Bu, bot ile kanal arasında otomatik olarak bir diyalog oluşturacaktır. **platform\_id** Kanalın

değerini "Müşteri hakkında" bölümünden kopyalayabilirsiniz.&#x20;

## Değişkenler nasıl kullanılır

Telegram'da kanallar için mesajlaşma ID'si her zaman eksi işareti (-) ile başlar. Fonksiyonları kullanırken, eksi işareti dahil tüm değeri eklediğinizden emin olun.

Değişkenler tetikleyicilerde, siparişlerde, kullanıcı yanıtlarında, bloklarda ve daha fazlasında kullanılabilir. Bir emlak ajansı için bir huni oluştururken somut bir örneğe bakalım.

<div data-with-frame="true"><figure><img src="/files/57c7e67147823edab26d90fc386a603fcc096554" alt=""><figcaption></figcaption></figure></div>

**Öyleyse, bir Başlangıç bloğu oluşturalım:**

1\. Adım: "Teşekkür" bloğunu oluşturun

**Kullanıcının girdisi için teşekkür eden bir mesaj içeren yeni bir blok oluşturun.**

2\. Adım: Geçişi yapılandırın

1. Bu bloğa giden bağlantı üzerinde aşağıdaki tetikleyiciyi yapılandırın: **"Kullanıcı veri girer"** anahtarını etkinleştirin.
2. içinde **"Girdi verisi"** alanına değişken adını girin: **`name`**.

<div data-with-frame="true"><figure><img src="/files/d5a7862b9e60fa06c63c536251f29a8619ece4a9" alt=""><figcaption></figcaption></figure></div>

Kullanıcının girdisi **`Name`** değişkeninde saklanır. Bu değer, değişkeni `#{Name}` sözdizimiyle çağırarak sonraki herhangi bir blokta yeniden kullanılabilir; örneğin: `Hoş geldin, #{Name}!`.

<div data-with-frame="true"><figure><img src="/files/1a4172ab858bb8c17de5678e43683d01651197d7" alt=""><figcaption></figcaption></figure></div>

Bot şu şekilde çalışacaktır:

<div data-with-frame="true"><figure><img src="/files/122a687e15875524b08c8d9fb0b0c3bb32bef31a" alt="" width="563"><figcaption></figcaption></figure></div>

Şimdi görevi biraz daha karmaşık hale getirelim.&#x20;

Aynı blokta, kullanıcıya birincil (yeni) mi yoksa ikincil (ikinci el) konut mu istediğini soracağız:

<div data-with-frame="true"><figure><img src="/files/53e10b85b058cf09f210c34840c4983edd312b9f" alt=""><figcaption></figcaption></figure></div>

Sonraki olarak, "Sohbet" bloğundaki "Birincil konut" ve "İkincil konut" düğmelerinden bağlantılar oluşturun.

<div data-with-frame="true"><figure><img src="/files/57c27054b3b99ccc22884190dd38657af0af39f7" alt=""><figcaption></figcaption></figure></div>

Şimdi bloklar içinde değişkenleri kullanmanın ikinci yoluna bakalım.

Sağ bloğu seçin ve "Hesaplayıcı" alanına aşağıdaki metni girin:&#x20;**client\_interest = Birincil konut**. Sol blokta şunu girin:&#x20;**client\_interest = İkincil konut**.

<div data-with-frame="true"><figure><img src="/files/ffb3ceb9a76ccbcfafcb2da66128c5bdeb2c90fd" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/faa24bd868ccec9831d13e1126002c7c55312a3b" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Kullanıcı bu bloklardan herhangi birine geçtiğinde ona bir değişken atanır. Bunu daha sonra sipariş oluştururken kullanabiliriz.
{% endhint %}

Sonraki olarak, bu bloklarda müşteriye gayrimenkul satın alma bütçesini soracağız ve müşterinin yanıt tetikleyicilerine göre bunlara yönlendiren iki blok daha oluşturacağız.

<div data-with-frame="true"><figure><img src="/files/b463bf5038f36ef6a72469de88e7734acee3c49f" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/e504853e62fb19ac2e3b46c4780a3c84d8a3f89d" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/cd2622703eee6053814613d7954cba321a40656a" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/fda87ca59381e699f02eba7f7c91bf420ad683bd" alt=""><figcaption></figcaption></figure></div>

Bloğundan **"Bütçeniz nedir?"**&#x62;ir bağlantı oluşturun ve kullanıcıları girdilerine göre segmente etmek için bir tetikleyici koşulu ayarlayın.

1. Bağlantı ayarlarında, için onay kutusunu etkinleştirin **"Kullanıcı veri girer"**.
2. Değişken adını atayın (örneğin, `budget`) müşteri yanıtını saklamak için.
3. içinde **"Değişken"** alanında, koşul oluşturmak için yerleşik değişkeni kullanın `#{question}` (kullanıcının son mesajını içerir).
   * **Örnek:** `#{question} <= 1000000`

<div data-with-frame="true"><figure><img src="/files/7e1de8a53f5ab4c347b107e22a706f66b3c1a50e" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
Tüm bağlantılar için **"Lead'ler"** blokları için **"Kullanıcı veri girer"** etkinleştirin ve değişkeni tanımlayın.
{% endhint %}

Ek bir değişkeni doğrudan içinde de tanımlayabilirsiniz **"Lead'ler"** daha kapsamlı işlem bilgisi sağlamak için blok.

<div data-with-frame="true"><figure><img src="/files/23941f6d6c2ab064c102c4b38caeb20238b0d49d" alt=""><figcaption></figcaption></figure></div>

Şimdi son iki bloğun türünü "Lead'ler" olarak değiştirin ve sonuçları görün:

Akışı şimdi çalışırken test edelim:

<div data-with-frame="true"><figure><img src="/files/36a5b4564386d2bcb8efc021d1a8abaf78c2604f" alt="" width="375"><figcaption></figcaption></figure></div>

Oluşturulan işlemi ve müşterinin saklanan verilerini görmek için **"Müşteriler"** bölümüne gidip ilgili görüşmeyi açabilirsiniz. İşlem değişkenleri orada görünür olacaktır.

<div data-with-frame="true"><figure><img src="/files/1b0315a8bd18b566a64455599610a4fcfb3e36c7" alt=""><figcaption></figcaption></figure></div>

Artık değişkenleri en az üç farklı şekilde nasıl kullanacağınızı biliyorsunuz:

1. Kullanıcı giriş verilerine değişken adları atama (ör. “Name”, “Budget”)
2. Bir bloğa geçiş sırasında bir değişken değeri atama (ör. client\_interest = Birincil konut)

## Değişkenler nasıl görüntülenir

Bir müşterinin değişkenlerini görüntülemek için **"Müşteriler"** bölümüne gidin ve müşteri kartını açın.

<div data-with-frame="true"><figure><img src="/files/7627795839b4d5eec3de6cfe21502c1d612d204b" alt=""><figcaption></figcaption></figure></div>

Değişkenler müşteri kartında liste biçiminde gösterilir:

* Her değişken kendi satırını kaplar.
* Düğmenin **değişken adı** solda gösterilir.
* Buna karşılık gelen **value** sağda görüntülenir.

**Bir değişkeni değiştirmek için:**

Listede satırının üzerine gelin; bir işlem düğmesi görünür. Bu düğmeye tıklayarak şunları yapabilirsiniz:

* Değişkenin adını düzenleyin.
* Değişkenin değerini düzenleyin.
* Değişkeni tamamen silin.

<div data-with-frame="true"><figure><img src="/files/adf78ae3426c2c5bd860cfe26fca4dd3f266da54" alt="" width="375"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/39632832d21ea846ee4b51f21ce016f416986547" alt="" width="375"><figcaption></figcaption></figure></div>

{% hint style="info" %}
Sistem değişkenleri düzenlenemez!
{% endhint %}

## İstemci değişkenleri nasıl ayarlanır

{% hint style="info" %}
"Veri toplamanın sonu" bloğu (kırmızı blok) kullanıldığında istemci değişkenleri silinmez, sıfırlanmaz veya kaybolmaz.
{% endhint %}

Bir istemci değişkeni iki şekilde ayarlanabilir: açık ve örtük.\r\nBir değişkeni açık şekilde tanımlamanın yolu, onu hunideki bloklardan birinin "Hesaplayıcı" alanında ayarlamaktır.&#x20;

Örnek: `client.age = 28` veya `client.age = 28:`

<div data-with-frame="true"><figure><img src="/files/5f7db428209c39ff6964c96b8d429dcbebe3121a" alt="" width="563"><figcaption></figcaption></figure></div>

Örtük yol, okın veri giriş alanında bir değişken ayarlamaktır.

Örnek:

Müşterinin adını istediğimiz bir blok oluşturalım ve aşağıda da bir blok oluşturalım:

<div data-with-frame="true"><figure><img src="/files/21454f22f98058f4e8337d04c4795a70c22af108" alt="" width="563"><figcaption></figcaption></figure></div>

Sonraki olarak, bağlantı ayarlarına gidin ve "Kullanıcı veri girer" seçeneğini etkinleştirin.

<div data-with-frame="true"><figure><img src="/files/65211de823a810ba9b014443de5d2f8bb8958bc8" alt="" width="563"><figcaption></figcaption></figure></div>

Kullanın `client.` değişkeninizi adlandırırken öneki kullanın (örneğin, `client.name`) kullanıcının girdisini saklamak için. Bu değişkene daha sonra mesajlarda `#{client.name}`.

<div data-with-frame="true"><figure><img src="/files/4f83771b9879793ef5c878e3559327813b06b822" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="success" %}
Builder'da istemci değişkenleri düzenli değişkenler gibi kullanılır, ancak **client** önek olmadan.
{% endhint %}

## Proje değişkenleri nasıl ayarlanır

{% hint style="info" %}
Genel değişkenler, "Lead'ler" bloğu (kırmızı blok) kullanıldığında silinmez, sıfırlanmaz veya kaybolmaz.
{% endhint %}

Genel değişkenler botun tüm kullanıcıları tarafından erişilebilir. Bot davranışını kontrol etmek veya farklı kullanıcılar arasındaki etkileşimleri kolaylaştırmak için idealdir.

**Kullanım senaryosu örneği:**\
Bir kullanıcı, bir pazar yeri kanalında bir öğeyi bir değişken ayarlayarak paylaşabilir (ör., `project.latest_listing`), ve diğer tüm kullanıcılar bunu görüp yanıt verebilir.

#### **Atama sözdizimi**

Bir genel değişken oluşturmak veya güncellemek için `project.` önekini Hesaplayıcı'da kullanın:

**Örnekler:**

* `project.product_shop = 28`
* `project.age = 28`

<div data-with-frame="true"><figure><img src="/files/dfcf4690914a15e66823fc89d1a7994f0e8dab7f" alt=""><figcaption></figcaption></figure></div>

Bunlar herhangi bir önek olmadan kullanılabilir.

Verilerin tabloda nasıl görüntülendiğine bakalım.

<div data-with-frame="true"><figure><img src="/files/e3ce6d9b4cc26bc764a45961b02fc6aeec546de0" alt=""><figcaption></figcaption></figure></div>

Şimdi, "Başlangıç" bloğunu test modunda çalıştırın.

<div data-with-frame="true"><figure><img src="/files/38ff99712fe8bfbe1b6bfd8e2daae015b80f7af9" alt="" width="375"><figcaption></figcaption></figure></div>

Tablodan değişkene yazılan verileri, bot tarafından gönderilen mesajda görebiliriz. Değişkene mesajda `#{}` sözdizimini kullanarak başvurduğumuz için, içindeki veri bot sohbetinde görüntülendi.

{% hint style="info" %}
get\_records\_from\_table() fonksiyonuyla nasıl çalışılacağına dair daha fazla ayrıntı "[MaviBot tablosu ile yapay zekâ asistanı](/doc/tr/chatbot/ai/tables.md)".
{% endhint %}

Düğmenin `project.` önek, fonksiyonun tablo verilerini doğrudan projenin genel değişkenlerine yazmasına izin verdi; bunlara **"Değişkenler"** bölümünde görünecektir.

<div data-with-frame="true"><figure><img src="/files/dde072666278c2927cfdf5996cfafa5b92f430c8" alt=""><figcaption></figcaption></figure></div>

bölümünden erişilebilir.

### Proje değişkenlerini proje ayarlarında düzenleyebilirsiniz.

Örnek: proje değişkenlerinin kullanımı

**Bot'a giren her yeni müşteriye sıralı bir numara atayan bir sistem oluşturun.**

1. Uygulama: **Şuraya gidin**.
2. Proje ayarları `Yeni bir proje değişkeni oluşturun (ör.,`).

<div data-with-frame="true"><figure><img src="/files/c5e9f09b5b533bd44ca9592d19643dc2908962cc" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/fb5abb57ffb32fd6aa44228cbd492d3f95000101" alt=""><figcaption></figcaption></figure></div>

3. project.client\_counter `0`Başlangıç değerini ayarlayın (ör., **"Bot'ta müşteri yok"**:

<div data-with-frame="true"><figure><img src="/files/7b68fbb065935ee73ea3c3f023adcfb4df24ebdc" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/18a9a143d38329e368297d9ab2675000d5c9def9" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/2fb0b9bc1ed23272f934ac4ef416e0e3d9652420" alt="" width="563"><figcaption></figcaption></figure></div>

Bot'un başlangıç bloğunda şu mantığı ekleyin:

1. Proje değişkeninin değerini 1 artırır.
2. Yeni değeri mevcut kullanıcı için müşteri özelinde bir değişkene atar.

<div data-with-frame="true"><figure><img src="/files/bd0e11c2edc1138c0b73c09bfdf32fa09347ad14" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Sayacın aynı müşteri için iki kez artırılamaması için bir kısıtlama ayarlamayı unutmayın.
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/0fcdbf74b3ffef961b14c03c966fd0067615bdd6" alt="" width="563"><figcaption></figcaption></figure></div>

## Sabit değişkenler nasıl ayarlanır

Sabitler, bir projenin yaşam döngüsü boyunca değişmeyen (veya çok nadiren değişen) sabit değerlerdir.

**Genel değişkenlerden temel fark:**

Genel değişkenlerin aksine, sabitler **müşteriye özeldir**. Bir sabitin değeri değiştirilirse, değişiklik yalnızca o müşterinin oturumuna uygulanır.

**Yaygın kullanım alanları:**

Sabitler, aşağıdaki gibi statik verileri saklamak için idealdir:

* Ürün fiyatları ve müşteri indirimleri
* Entegrasyon belirteçleri ve API anahtarları
* Satıcı veya destek iletişim bilgileri
* Diğer tüm sabit yapılandırma değerleri

### Örnek: sabit değişkenlerin kullanımı

Örneğin, bir müşterinin indirimi varsayılan olarak %10 olabilir, ancak bir promosyon kodu girildiğinde %25'e değişebilir.

"Proje ayarları" → "Sabitler" bölümüne şunu girin: Discount : 10

<div data-with-frame="true"><figure><img src="/files/86390e55b61b559c3ff6eefd62590c7d20ea7efc" alt=""><figcaption></figcaption></figure></div>

Bir promosyon kodu girmek için, değişkeni atadığımız bir "Tetikleyici" bloğu ekleyin **discount** 25 değerini.

<div data-with-frame="true"><figure><img src="/files/59102513e41307694e97a2d01df93791ecb89651" alt=""><figcaption></figcaption></figure></div>

İndirim tutarını gösteren değişkeni yeşil blokta görüntüleyin:

<div data-with-frame="true"><figure><img src="/files/85542ddc36a36aba6522c7ee21fd450977ca43f9" alt=""><figcaption></figcaption></figure></div>

**1. Adım: Otomatik geçişi yapılandırın**\
ile bir bağlantı oluşturun **sıfır saniyelik zamanlayıcı** gri bloktan. Bu, indirimin hemen uygulanmasını ve müşterinin başlangıç bloğundaki mesaja devam etmesini sağlar.

**2. Adım: Akışı test edin**\
Şimdi, tüm diziyi tetiklemek ve test etmek için bot'a bir mesaj yazın.

<div data-with-frame="true"><figure><img src="/files/8839c5ed34843d63a5df8755a9d0f51cd5798bb6" alt="" width="563"><figcaption></figcaption></figure></div>

Promosyon kodu olmadan standart indirim %10'dur. Ancak geçerli bir promosyon kodu girmek durumu değiştirir.

<div data-with-frame="true"><figure><img src="/files/dde8097bf18acc6579230d3563deb6141006e5b4" alt="" width="563"><figcaption></figcaption></figure></div>

Böylece, promosyon kodunu girdikten sonra, bu müşteri için "discount" değişkeni 25 oldu. <br>

Bunun nedeni, discount = 25 gibi bir atamanın aynı adlı sabitin değerini değiştirmek yerine işlem değişkeninin değerini ayarlamasıdır.

## Önemli işlem değişkenleri

**name** - işlem adı. Terim **Name** projenin uluslararası sürümü için kullanılır.

**description** - tişlem açıklaması. **Açıklama** projenin uluslararası sürümünde kullanılır

**budget** - işlem tutarı (sayı).

/set\_order\_vars API isteği kullanarak değişkenleri düzenlemek için, t[bu kılavuzdaki adları tam olarak gösterildiği gibi](#how-to-set-client-variables)kullanmanız gerekir; büyük/küçük harf duyarlılığı ve proje sürümü dahil.

## Sınırlar

{% hint style="warning" %}
Maksimum değişken adı uzunluğu: 500 karakter

Maksimum değişken değeri uzunluğu: 100.000 karakter

Müşteri veya işlem başına maksimum değişken sayısı: 1.000 karakter.
{% endhint %}

## Değişkenlerle doğru şekilde nasıl çalışılır

### *Bir değişkenin değerini ne zaman tırnak içine almalısınız?*

*Örneğin, <mark style="color:sarı;">**client\_id = 1202020202**</mark> veya <mark style="color:yeşil;">**client\_id = '1202020202'**</mark>?*

Her iki sözdizimi seçeneği de işlevsel olarak doğrudur. Bir değerin etrafına tırnak koymak yalnızca hesaplayıcı düzenleyicisindeki görsel vurgulanmasını etkiler.

Ancak, tutarlı kodlama kurallarına uymak okunabilirliği ve bakımı iyileştirir:

* **Tırnakları kaldırın** şunlar için **sayısal** değerler (ör., `discount = 25`).
* **Tırnak kullanın** şunlar için **string** değerler (ör., `status = "active"`).

<div data-with-frame="true"><figure><img src="/files/8cb68495b7df96c4a26539a9cf1df480cfcd5e93" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/057f85240c55cd791ccc9d75ec9b7a46bf222096" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/2d2cca18e9b39756bab8aed6920f04e6b4c627ae" alt=""><figcaption></figcaption></figure></div>

*Client ID, Site ID, Block ID veya Certificate ID gibi tanımlayıcıları fonksiyonlara aktarırken doğru sözdizimi nedir—tırnak içine alınmalı mı?*

<div data-with-frame="true"><figure><img src="/files/35ad76b8f6334b4ea11719d134859c26b69de268" alt="" width="563"><figcaption></figcaption></figure></div>

Bir ID, bir metoda veya fonksiyona aktarılırken tırnak içine alınmamalıdır:

<div data-with-frame="true"><figure><img src="/files/9a6e6678440a57e5b811ab672109a24df20b638c" alt=""><figcaption></figcaption></figure></div>

### Hangisi kullanılmalı: çift tırnak mı tek tırnak mı?

Tek veya çift tırnak kullanımı arasında bir fark yoktur, ancak çift tırnak kullanmanızı öneririz. Bu şekilde, örneğin bir metin içinde bir değişken eklerken, değişken farklı bir renkle vurgulanır ve fark edilmesi daha kolay olur.

<div data-with-frame="true"><figure><img src="/files/645f53caefff5f5d274e7c0acd9abe33098ee044" alt=""><figcaption></figcaption></figure></div>

### Boşluklar nasıl yerleştirilmelidir?&#x20;

Değişken ile eşittir işareti arasında bir boşluk varsa aynı şekilde çalışır mı (örneğin, *<mark style="color:mavi;">ans="yes"</mark>, <mark style="color:mor;">ans = "yes"</mark>, <mark style="color:turuncu;">ans= "yes"</mark>, <mark style="color:kırmızı;">ans ="yes"</mark>?*

<div data-with-frame="true"><figure><img src="/files/61fa0404f35e50109a71e441d589f271b30486df" alt=""><figcaption></figcaption></figure></div>

Boşluklar, yöntemlerin, değişkenlerin veya işlevlerin çalışmasını etkilemez. Ancak, okunabilirliği artırmak için kodda boşluk kullanılması önerilir.

### Hesap makinesinde yorumlar doğru şekilde nasıl yazılır

{% hint style="success" %}
**Hesap Makinesinde yorumların nasıl yazılacağı hakkında daha fazla ayrıntı için lütfen şuraya bakın:** [**bu makale**](/doc/tr/chatbot/functions/hesap-makinesi.md)**.**
{% endhint %}

## Değişkenler nasıl karşılaştırılır

Değişken değerlerini karşılaştırarak sohbet botunun akışını kontrol edebilirsiniz. Bu, yasal uygunluk için kullanıcının yaşını doğrulamak veya kullanıcının mesajlaşma platformuna göre etkileşimleri yönlendirmek gibi koşullu mantık oluşturmanıza olanak tanır.

{% hint style="info" %}
Huniyi burada nasıl böleceğiniz anlatılıyor [farklı mesajlaşma uygulamalarına veya aynı mesajlaşma uygulamasının farklı hesaplarına göre açıklanmıştır.](/doc/tr/faq/sss.md#how-can-i-split-a-funnel-by-messengers)
{% endhint %}

#### **Desteklenen operatörler:**

"**+**": toplama \
"**-**"': çıkarma \
"**\***" *çarpma* \
"**/**": *bölme*\
"**%**'"*: bölme kalanı* \
"**^**" "**\*\***": üs alma \
"**ve**" "**VE**" "**&&**": mantıksal VE \
"**veya**" "**VEYA**" "**||**": mantıksal VEYA

Karşılaştırma operatörleri:\
"**==**" — eşittir\
"**!=**" — eşit değildir\
"**>**" — büyüktür\
"**<**" — küçüktür \
"**>=**" — büyük eşittir\
"**<=**" — küçük eşittir

{% hint style="warning" %}
**ÖNEMLİ!** \
Şunu kontrol etmek için **yerleşik değişken etiketi** (bot başlatma etiketi) müşterinin kartında yoksa, aşağıdaki karşılaştırma yöntemini kullanın:\
\
`tag == "NONE"`
{% endhint %}

Değişkenler, "Variable" alanındaki koşul içinde karşılaştırılmalıdır (hem bağlantı ayarlarında hem de blok ayarlarında):

**Bir tetikleyici bloğunun "Variable" alanında değişken karşılaştırma örneği.**

<div data-with-frame="true"><figure><img src="/files/6af11a54efef50d345e77fe661d0edf43e94f6e1" alt=""><figcaption></figcaption></figure></div>

**Bir blok bağlantısının "Variable" alanında değişken karşılaştırma örneği.**

<div data-with-frame="true"><figure><img src="/files/8e59f0445da1e0b1afc03a3c1aa93e6714b97755" alt=""><figcaption></figcaption></figure></div>

#### **Değişkenler ve tetikleyicilerin birlikte nasıl çalıştığı**

Bir bağlantının etkinleşmesi için, **her iki tetikleyicinin de karşılanması gerekir**:

1. İçindeki koşul **"Tetikleyici"** alanına yapıştırın.
2. İçindeki karşılaştırma mantığı **"Değişken"** alanına yapıştırın.

#### **"Variable" alanını anlamak**

Yalnızca bir değişken adı girerseniz (örneğin, `client_type`) **"Değişken"** alanına bir ifade yazmadan sistem *varlığını* veya *doğruluğunu* değişkenin değerinin. O **yapılmaz** onu kullanıcının ham girdisiyle karşılaştırmaz.

**Örnek:**\
Aşağıdaki yapılandırma, müşterinin WhatsApp'tan olup olmadığını denetler; bunun için `client_type` değişkenin eşit olduğunu doğrular `6` (burada `6` WhatsApp'i temsil eder).

`client_type == 6`

<div data-with-frame="true"><figure><img src="/files/9219e189e59c0951bf5aef8ebadc370a51bb7dab" alt="" width="563"><figcaption></figcaption></figure></div>

Aşağıdaki örnek aynı şekilde çalışır:

<div data-with-frame="true"><figure><img src="/files/6056a6d887103670b50a931bda21f157feb91d36" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
Lütfen dikkat! \
"Trigger" alanında değişken karşılaştırması için birden fazla değer belirleyemezsiniz.

<img src="/files/d4d8e5e18b2d6874aaafcfa15dd97bdf4235693e" alt="" data-size="original">

Bu yanlıştır!

Birden fazla değişkeni karşılaştırmanız gerekiyorsa, değerlerini "Variable" alanında belirtin.

Bu seçenekler doğrudur.

<img src="/files/e7c1e569424367486c966c847d4716cc2a77a9bb" alt="" data-size="original">
{% endhint %}

{% hint style="info" %}
client\_type == 3 değişken değeri eşitse geçiş yap **3**\
attachments != None değişken herhangi bir değer içeriyorsa geçiş yap\
attachments == None değişken ayarlı değilse geçiş yap\
product\_quantity >= 100 ürün miktarı bundan büyük ya da eşitse geçiş yap **100**\
product\_quantity <= 100 ürün miktarı bundan küçük ya da eşitse geçiş yap **100**\
name == "John" değişken adı John'a eşitse geçiş yap

Bir değişkenin boş olup olmadığını kontrol etmek için şu ifadeleri kullanın:\
\&#xNAN;**"#{value}" == ""**  \
**"#{value}" != ""** <br>

(burada **value** değişken adıdır).

Karşılaştırma işleminin sonucu bir boolean değer döndürür: **True** veya **False**.
{% endhint %}

{% hint style="warning" %}
Maksimum ifade uzunluğu: 1000 karakter
{% endhint %}

{% hint style="warning" %}
Farklı türlerdeki değerleri karşılaştırmaya çalışırken varsayılan değer sonuç olarak döndürülür.

"==" - False                       "<" - False\
"!=" - True                          ">=" - False \
">" - False                          "<=" - False
{% endhint %}

{% hint style="warning" %}
**ÖNEMLİ!** \
Şunu kontrol etmek için **yerleşik değişken etiketi** (bot başlatma etiketi) müşterinin kartında yoksa, aşağıdaki karşılaştırma yöntemini kullanın:\
\
`tag == "NONE"`
{% endhint %}

**Örnek:** Bir kullanıcının yaşını kontrol eden bir bot (`yaş`).

* Eğer `age < 18`, reşit olmayanlara bir mesaj gönderir.
* Eğer `age >= 18`, yetişkinlere bir mesaj gönderir.

<div data-with-frame="true"><figure><img src="/files/687aef5c2ba1b4c129089b293950e42da3499318" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/4ceb9e5b6f8486eec1048504a47e19f0cf7534de" alt=""><figcaption></figcaption></figure></div>

Akışın, içinden zamanlanmış bağlantıların çıktığı tetikleyicisi olmayan bir blok içerdiğine dikkat edin.&#x20;

Bu blok, botun kullanıcı eylemlerine değil, hesaplama sonuçlarına tepki verdiği akışların nasıl oluşturulacağını göstermek için bilerek tasarlanmıştır. İlk adımda yanıt bir değişkende saklanır, ardından karşılaştırma yapılır. Oklar üzerindeki gecikme, anında yanıt için 0 olarak ayarlanmıştır.

Karşılaştırma **"Age >= 18"** şu şekilde de ifade edilebilir **"18'e eşit veya büyük."**

<div data-with-frame="true"><figure><img src="/files/a3d06e7b15ad2b7169a4dff865fc9128dc5d5e2e" alt=""><figcaption></figcaption></figure></div>

{% hint style="danger" %}
Lütfen tetikleyicilerdeki hatalara dikkat edin:

<img src="/files/0f96da3dbe80ade1fb1a483b7be64951571817f7" alt="" data-size="original">

<img src="/files/ef86146d01cd7c8da44ac9dd3c3850539855b7a8" alt="" data-size="original">

<img src="/files/1c1aec17d8ec152fd339aa954ef3de4029629b0a" alt="" data-size="original">

**Bir sayı aynı anda 18'den büyük, 18'den küçük ve 18'e eşit olamaz!**

Bu tetikleyicilerin hiçbir anlamı yoktur. Her sayı ya 18'den küçüktür, ya 18'den büyüktür ya da 18'e eşittir.
{% endhint %}

{% hint style="warning" %} <mark style="color:kırmızı;">**Önemli!**</mark>&#x20;

Değişkenli mantıksal tetikleyiciler <mark style="color:kırmızı;">**"Değişken"**</mark> alanında yazılmalıdır, "Trigger" alanında değil!
{% endhint %}

Örneğin, aşağıdaki görselde, blok şu durumda tetiklenecektir: <mark style="color:yeşil;">**phone değişkeni doldurulmuşsa**</mark> (yani, buna eşit değilse **None**):

<div data-with-frame="true"><figure><img src="/files/4cfcd292a7a5721aee44fd0dc9b4690bee902170" alt="" width="563"><figcaption></figcaption></figure></div>

Bir sonraki örnek, operatörlerin nasıl birleştirileceğini gösterir:

<div data-with-frame="true"><figure><img src="/files/ef42dcc8f855abeac59b8b9d339c67e9b4c7b87a" alt=""><figcaption></figcaption></figure></div>

Müşterinin değeri 18 ile 99 arasında olan bir age değişkeni varsa, blok tetiklenecektir. Değişken eksikse veya yaş 18'den küçük ya da 99'dan büyükse, blok etkinleşmeyecektir.

{% hint style="warning" %}
Not!&#x20;

Bir değişkeni tırnak içinde bir değerle karşılaştırıyorsanız, tırnak işaretleri ile değer arasında boşluk olmadığından emin olun; aksi takdirde blok tetiklenmeyebilir veya yanlış davranabilir!

<mark style="color:yeşil;">**Doğru**</mark> (tırnak işaretinden önce <mark style="color:kırmızı;">**boşluk yok**</mark> veya <mark style="color:kırmızı;">**my\_new\_bot değerinden sonra**</mark>):

<img src="/files/6ff5248dbedb21e009f84ae05b6237a6cce7d4c2" alt="" data-size="original">

<mark style="color:kırmızı;">**Yanlış**</mark> (tırnak işaretinden önce boşlukla):

<img src="/files/640f70ff1209cae9a56fa847ef04df104ffd90dd" alt="" data-size="original">
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/tr/chatbot/functions/degiskenler.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
