# Üçüncü taraf API’lerle entegrasyon

API'ler aracılığıyla diğer hizmetlerle etkileşime giren botlar oluşturabilirsiniz. Örneğin, botlar belirli bir tarih için uygunluğu kontrol etmek veya çevrimiçi bir mağazada bir ürün bulmak için istek gönderebilir.

## Dadata'yı örnek olarak kullanarak üçüncü taraf API'lerle nasıl etkileşime geçilir

Bir örnek olarak adres öneri API'sini ele alalım: <https://dadata.ru/api/suggest/address/> <mark style="color:kırmızı;">**link farklı olacak**</mark>

{% hint style="info" %}
Üçüncü taraf API'lerin belgelerini dikkatlice okuyun.
{% endhint %}

{% hint style="warning" %}
Lütfen dikkat! Üçüncü taraf API'ler, isteklerin gönderileceği IP adreslerini gerektirir: 158.160.49.208 – web sitesi.
{% endhint %}

"Request URL" alanına şunu girin `https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address`.

içinde **"Request header"** alanına, başlığı JSON formatında girin: `{"Content-Type": "application/json", "Accept": "application/json", "Authorization": "Token " + token}`.

içinde **"JSON parameters"** alanına, isteğin kendisini girin: `{"query": "#{CurrencyType}"}`.

İstek sonucunu almak için şunu doldurun: **"Saved values"** alanına yapıştırın.

İsteğin bir örneği aşağıdaki görselde gösterilmiştir.

![](/files/ee586720266054213889e6aa054f1575fcb7b2dd)

### Değerler değişkenlerden nasıl kaydedilir

İlk başta tamamen net olmayabilir — bunu gerçekten kendiniz denemeniz gerekir.

Önce "Answer" alanına #{custom\_answer} girin. (#{custom\_answer} değişkeni, "Response URL" alanında belirtilen sunucudan alınan yanıtı içerir.)

İsteği göndermek ve yanıtı almak için istek bloğunu çalıştırın. Alınan yanıtın analiz edilmesi gerekir ve ondan hangi değişkenlerin çıkarılacağını ayarlamanız gerekir. Bunun için "Saved Values" alanını kullanın.

Yukarıda açıklanan örneği inceleyelim.

JSON'da verilere nasıl erişileceğini anlamanın en iyi yolu örnektir. İsteğimizin sonucu olarak, #{custom\_answer} içinde alınan yanıt şu şekilde görünür:

`{"suggestions": [{"value": "US Dollar","unrestricted_value": "US Dollar","data": {"code": "840","strcode": "USD","name": "US Dollar","country": "United States"}}]}`

"Saved values" alanına VALUE -> VARIABLE girin:

`suggestions|0|value->CurrencyType;` \
`suggestions|0|data|code->CurrencyDigCode;` \
`suggestions|0|data|strcode->CurrencyStrCode;` \
`suggestions|0|data|country->CurrencyCountry`

**suggestions -** dizi için anahtar \[{"value": "US Dollar", "unrestricted\_value": "US Dollar", "data": {"code": "840", "strcode": "USD", "name": "US Dollar", "country": "United States"}}]

**suggestions|0** - dizinin ilk öğesi için anahtar {"value": "US Dollar", "unrestricted\_value": "US Dollar", "data": {"code": "840", "strcode": "USD", "name": "US Dollar", "country": "United States"}}

**suggestions|0|value** - "US Dollar" değeri için anahtar

Bu JSON’daki en uzun anahtar:

**suggestions|0|data|strcode** - "USD" değeri için anahtar

{% hint style="success" %}
Anahtarlar dikey çizgi (|) ile ayrılır. Bir JSON öğesi bir dizi ise, öğelerine 0'dan başlayarak indeksle erişirsiniz ve bu da dikey çizgi kullanılarak yazılır.
{% endhint %}

{% hint style="info" %}
Tüm iç içeliği tekrarlamanız gerekir. Kolaylık olması için JSON'u bir JSON görüntüleyici uygulamasıyla görselleştirebilirsiniz.
{% endhint %}

İç içe geçme seviyesi dikey çizgi ile ayrılır. Yani, değere ulaşmak için tüm anahtarları listeleyip bunları dikey çizgiyle ayırmanız gerekir.

{% hint style="info" %}
JSON bir dizi içeriyorsa, anahtar yerine öğenin indeksini kullanın; sıfırdan başlayın.
{% endhint %}

Değişkenlerimizi elde etmeye yönelik ifadeleri noktalı virgül ; ile ayırın.

Her ifade, yanıt içindeki verilere giden yol ve onu kaydedeceğiniz değişkenin adından oluşur; bunlar -> ile ayrılır.

Arama sorgusu, JSON içinde gerekli değere giden yolu temsil eder.

### Botlar için API geliştirme

Bot, çoğu genel API'de kullanılan ana istek türleri olan GET ve POST isteklerini destekler.

**GET** bir bağlantıya tıkladığınızda veya tarayıcıda bir URL açtığınızda gerçekleşen bir istektir. Bu istekteki parametreler URL içinde iletilir.

Parametreleri iletme sözdizimi: URL'den sonra bir soru işareti ? koyun, ardından her parametreyi bir ve işareti & ile ayırın. Her parametre, ardından = ve değeri gelen bir addan oluşur.

Parametreli bir URL örneği:

![Şekil 3](/files/a688fe20db32dabf5349d9507094c05edea2f889)

Burada, tek bir q parametresi "good music" değeriyle iletilir. %20 bir boşluğu temsil eder.

Oluşturucu ile çalışırken sadece bir boşluk kullanabilirsiniz — bot bunu otomatik olarak değiştirecektir.

**POST** bir formu bir web sitesinde gönderirken çoğunlukla yollanan bir istektir. Parametreler isteğin gövdesinde gönderilir. GET isteklerindeki gibi URL içinde de gönderilebilirler, ancak bu yaygın değildir. Gövdedeki parametreler JSON formatında veya anahtar-değer çiftleri olarak olabilir. Formlar genellikle anahtar-değer çiftleri gönderirken, API'ler çoğunlukla JSON kullanır.

**İstek başlığı** - her isteğe bir başlık ekleyebilirsiniz. Çoğu zaman veri formatını ve erişim anahtarlarını belirtir. Genellikle bu alan boş bırakılır, ancak nadir durumlarda bir API belirteci veya bir istek türü eklemeniz gerekir; örneğin, "Content-Type": "application/json".

**JSON** (JavaScript Object Notation, genellikle /ˈdʒeɪsən/ JAY-sən olarak telaffuz edilir) JavaScript tabanlı, metin tabanlı bir veri alışverişi formatıdır. Diğer birçok metin formatı gibi JSON da insanlar tarafından kolayca okunabilir. Botta API'lerle çalışmak için bu formatı anlamanız gerekir, çünkü tüm etkileşimlerin temelini o oluşturur.

Devam etmeden önce aşağıdaki makaleleri okuyun:

<https://www.json.org/json-ru.html>\
<https://developer.mozilla.org/ru/docs/Learn/JavaScript/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B/JSON>

Ayrıca, bu web sitesinde kendi JSON dosyanızı oluşturmayı deneyin:

<https://jsoneditoronline.org/>

**Pratik**&#x20;

İstekler bloklar ve koşullar tarafından yürütülebilir. Koşullu istekler, bir diyaloğun sitede belirli bir yolu takip edip edemeyeceğini kontrol etmek için tasarlanmıştır. Bu durumda, isteği, dal koşulu değerlendirildiğinde her seferinde gönderilir. Öte yandan, bloklardaki istekler yalnızca diyalog o duruma girdiğinde yürütülür.

Bir istek oluşturmadan önce türünü seçmeniz gerekir:

![](/files/5f95767aed3db5e4cf9c3a3253847ae241cf0cce)

POST-data ve POST-JSON, parametrelerin nasıl gönderildiği açısından farklıdır; daha önce de belirtildiği gibi (ya JSON formatında ya da anahtar-değer çiftleri olarak). JSON seçerseniz, parametreler yalnızca isteğin gövdesinde gönderilebilir. JSON POST parametreleri için ek bir alan görünecektir.

**Önemli!** Parametreler yalnızca JSON formatında yazılmalıdır, çünkü bot yalnızca onunla çalışır. JSON yazmayı zaten pratik ettiniz.

Sunucudan gelen yanıt ayrıştırılabilir ve değişkenlere kaydedilebilir.&#x20;

{% hint style="info" %}
Bir yanıtı yalnızca JSON formatındaysa ayrıştırabilirsiniz.
{% endhint %}

Kaydedilen değişkenler son doldurulmayan formda kaydedilir. Form kırmızı bir blok üzerinden gönderilirse, değişkenler atılır. Bu nedenle, bu veriyi kaydetmeniz gerekiyorsa, değişkenleri sarı bir blok aracılığıyla CRM sistemine iletin.

Botun değişkenlere kaydettiği şeyleri "Leads" bölümünde de görebilirsiniz.

![Şek. 8](/files/cb37a81cf604f83839bc44ada34eedca4d95f280)

### Değişkenleri string olarak değil iletme

Varsayılan olarak, değişken değerleri "#{}" biçiminde string olmalıdır, ancak bu durumda değişken string olarak gönderilir. Bir değişkeni sayı olarak iletmek için proje ayarlarında parametre biçimi kontrolünü devre dışı bırakmanız gerekir:

<figure><img src="/files/249c141feefdfd5cd9632b10405f578b4a3b5620" alt=""><figcaption></figcaption></figure>

Sonra değişken adını doğrudan kullanabilirsiniz, örneğin: `{"key": #{variable_name}}`burada variable\_name değişkenin kendisidir — etrafında tırnak işareti olmadan.

{% hint style="warning" %}
Parametreleri ayarladıktan sonra biçim kontrolünü yeniden etkinleştirmeniz önerilir.
{% 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/api-ile-calisma/ucuncu-taraf-apilerle-entegrasyon.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.
