# Üçüncü taraf API’lerle entegrasyon

API ile diğer kaynaklarla etkileşime giren botlar oluşturabilirsiniz. Örneğin botlar, belirli bir tarih için randevu oluşturmanın mümkün olup olmadığını kontrol etme ya da bir çevrimiçi mağazada ürün bulma yeteneğiyle istekleri yerine getirebilir.

## DaData örneği üzerinden üçüncü taraf API nasıl kullanılır

API ipuçlarını şu kaynaktan alalım [https://dadata.ru/api/suggest/address ](https://dadata.ru/api/suggest/address)örnek olarak

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

Projenizi Salebot’ta açın ve bir bloğun ayarlarında gelişmiş ayarları açın; burada istek türünü POST-json olarak değiştirmeniz gerekir.

“**URL isteği**” alanına şu URL’yi girin: h<ttps://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address>

“**İstek başlığı**” kısmına başlığı JSON formatında yazın:

{ "Content-Type": "application/json", "Accept": "application/json", "Authorization": "Token " + token }

“**JSON parametreleri**” kısmına isteğin kendisini yazın - { "query": "#{CurrencyType}" }

Sonuçları almak için ayrıca “**Depolanan değerler**” sekmesini de doldurmanız gerekir.

İsteğin bir örneği aşağıdadır:

![](https://lh3.googleusercontent.com/QV4ldVY9n1AFFCr2jn1NQU_hZe7Iug-Xh5d4KLWtAZNQEyQ9WPLu1mV7mPcFjfjAKaPGO2Wi148J4AAF3kmU0wmhLYwBy6LgDXbFRgteh0Nrtu29LhqSgTg6d14Ts8pvanwWUJQAVTUThYp6Lg)

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

Herkes bunu hemen kavrayamaz; ta ki kendiniz denemeye çalışana kadar.

Başlamak için cevap alanına #{custom\_answer} yazın. (#{custom\_answer} değişkeni, “Sunucudan gelen cevap için URL” alanında belirtilen sunucudan alınan cevabı tutar)

İsteği göndermek ve ona bir cevap almak için istek içeren bloğu başlatın. Yanıtı analiz etmeniz ve içindeki değişkenlere erişim ayarlamanız gerekir. Bunun için “Depolanan değerler” sekmesiyle çalışmanız gerekir.

Süreci daha iyi anlamak için bir örneğe bakalım.

\#{custom\_answer} isteğimizin sonucu olarak şu biçimde bir cevap geldi:

`{"suggestions": [{"value": "British pound", "unrestricted_value": "British pound", "data": {"code": "826", "strcode": "GBP", "name": "British pound", "country": "The UK"}}]}`

Şimdi “Depolanan değerler” alanına VALUE->VARIABLE yazalım

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

**suggestions** - dizinin anahtarı \[{"value": "British pound", "unrestricted\_value": "British pound", "data": {"code": "826", "strcode": "GBP", "name": "British pound", "country": "The UK"}}]

**suggestions|0** - dizideki ilk öğenin anahtarı {"value": "British pound", "unrestricted\_value": "British pound", "data": {"code": "826", "strcode": "GBP", "name": "British pound", "country": "The UK"}}

**suggestions|0|value** - “British pound” değerinin anahtarı

Bu JSON’daki en uzun anahtar:

**suggestions|0|data|strcode** - “GBP” değerinin anahtarı

{% hint style="success" %}
Anahtarlar dikey çizgi (|) ile ayrılır. JSON’da bir dizi varsa, öğeye erişim 0’dan başlayarak numaralandırılır ve o da dikey çizgi ile yazılır.
{% endhint %}

{% hint style="info" %}
Tüm iç içeliği tekrar etmek gerekir. Kolaylık için JSON’u bir JSON-viewer uygulamasında görselleştirebilirsiniz.
{% endhint %}

İç içe seviye dikey çizgilerle ayrılır. Bu yüzden değere ulaşmak için tüm anahtarları çizgiyle ayırarak listelemeniz gerekir.

{% hint style="info" %}
JSON’da bir dizi varsa, anahtar yerine 0’dan başlayarak öğenin numarasını belirtmeniz gerekir.
{% endhint %}

Değer alma ifadelerini noktalı virgül (;) sembolüyle ayırın. İfadeler, yanıttaki veriye bağlantı ve onu kaydedeceğiniz değişkenin adından oluşur; bunlar -> sembolleriyle (tire + büyük işaret) ayrılır.

Arama sorgusu bir bakıma JSON içinde gerekli değere giden bir yoldur.

### Botlar için API geliştirme

Bir API geliştirmek için, bunun üzerinde çalışacağı bir hosting’e ihtiyacınız olacak. Eğer yoksa ya da programlamada çok iyi değilseniz, bize ulaşabilirsiniz; sizin botunuz için API’yi geliştirir ve kendi altyapımız üzerinde barındırırız. Hosting’in kendisi ücretsizdir, yalnızca geliştirme için ödeme yaparsınız.

#### Ama şimdilik biraz teori.

Bot şu istemleri destekler **GET** ve **POST** istekleri, bunlar çoğu genel API’de kullanılan ana türlerdir.

**GET** bağlantıya tıklanınca veya bağlantı tarayıcıda açılınca gerçekleşen bir istektir. Böyle bir istekte parametreler URL isteklerine aktarılır.

Aktarılan parametrelerin sözdizimi: URL’den sonra soru işareti (?) gelir, ardından her parametre & işaretiyle ayrılır. Bir parametre, adından ve eşittir işaretinden (=) sonraki değerinden oluşur. Parametreli bir URL örneği:

![](https://lh6.googleusercontent.com/c4xJMMuFKVsFJW_3nDTzUmhvejIUtIKsg-kEA8_PT05vlmmAfDgritAtxwh_5sq3-YwOuy8dw4LVYbesWa4Yy-QjUx3gIbF-54_omadX1SFFaa8K6HirvD-qycd4D6tjSBpkRLAB)

Burada “search\_query” adlı bir parametrenin paylaşıldığını ve değerinin “queen live aid” olduğunu görebilirsiniz. Buradaki ‘+’ sözcükler arasındaki boşluktur; düzenleme yazılımı ile çalışırken boşlukları olduğu gibi bırakabilirsiniz — bot bunu kendisi değiştirir.

**POST** bir web sitesinde form doldurulurken en sık gönderilen istek türüdür. İstek, parametreleri gövdede aktarır; elbette GET ile olduğu gibi de paylaşılabilir ama bu şekilde nadiren yapılır. Gövdedeki parametre JSON formatında ya da anahtar-değer olarak olabilir. Anahtar-değer olarak parametreler formları paylaşır; API için en sık kullanılan format JSON formatıdır.

**İstek başlığı.** Her isteğe eklenmiş bir başlık/üstbilgi olabilir. Paylaşılan verinin biçimi ve erişim anahtarları çoğunlukla burada yazılır. Genellikle bu sekmeyi boş bırakırız, ancak nadiren API Token’ı ya da “Content-type”: “application/json” istek türünü yazmak gerekir.

**JSON** - (JavaScript Object Notation) insan tarafından okunabilir metin kullanarak öznitelik-değer çiftlerinden ve dizilerden oluşan veri nesnelerini depolamak ve iletmek için kullanılan açık bir standart dosya biçimi ve veri değişim biçimidir. Botlarda API ile çalışmak için bu formatı bilmeniz gerekir; her şey buna dayanır.

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

[https://www.json.org/json-en.html ](<https://www.json.org/json-en.html >)\
<https://developer.mozilla.org/en-US/docs/learn/javascript/objects/json>

Ayrıca bu sitede kendi JSON dosyanızı oluşturmayı deneyin:

<https://jsoneditoronline.org>

#### Pratik

Bloklar ve koşullar istekleri yerine getirebilir. Koşul istekleri, diyalogun belirli bir yolu izleyip izleyemeyeceğini sitede anlamak için oluşturulur. Bu durumda istek, yol koşulu her kontrol edildiğinde gerçekleşir. Buna karşılık blokların istekleri yalnızca bloğa geçiş yapıldığında çalışır.

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

![](https://lh5.googleusercontent.com/jDLVxBLwNSrmSb9t6LTuwuuifA3X-U9PNhLi7YvCrLj36uyDjiP-FymTpUXg1fhSewb63UslJbHhndLsefusieLdYSe4oNWMBGWuceHWWNg5VrRddIHXbGVwqhDMFFUR5Xk4YZLYXfM2hcNP9w)

POST-data ve POST-json, yukarıda belirtildiği gibi parametre aktarma yöntemine göre ayrılır (JSON formatı ya da anahtar-değer olarak). JSON seçerseniz, parametreler yalnızca isteğin içinde aktarılabilir. Post için ek bir alan açılır: JSON POST-parametreleri. **Önemli!** Parametreler yalnızca JSON formatında yazılmalıdır, bot yalnızca bu şekilde çalışır.

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

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

Kaydedilen değişkenler, doldurulmamış son gönderimde yazılır; eğer gönderim kırmızı blok üzerinden aktarılıyorsa değişkenler sıfırlanır. Bu yüzden verileri kaydetmeniz gerekiyorsa, değişkenleri sarı blok üzerinden aktarmanız gerekir.

Bu arada, botun değişkenlere ne yazdığını Leads bölümünde görebilirsiniz:

![](https://lh3.googleusercontent.com/e6mzwKUgxl22YqWNmN3HI0afQKM8gcU2OR_E_7Q3NSEzx0n45QLGXI4_UsaWaK52z7-QnULWmfSqCeZhfStALhung9LpFoK2i9EGhNccUcgo-E-7ONrkb7Aj2GEzd0DMDTxLsviV)

### Veri satır olarak değil

Varsayılan olarak değişken değeri #{} formatında gelir, ancak sonra bir satır olarak gelir. Değişkenin sayı olarak aktarılması için post-json parametrelerinin biçim kontrolünü kapatmanız gerekir.

![](https://lh4.googleusercontent.com/KDDSAYd7NeXu0c7jL45ktnPPeWy7G_YJS-xrf1jvAXf1aKYKGh781E1oGmnS8fw0PbpynqG0lXyqZwK_RfuCC3ezal4-Iu0lo7y5zsNQUT6i21J4C2hb9xw6DF30wReKLorcLliS)

Sonra değişken adını sadece şöyle belirtebilirsiniz: {"key": #{variable\_name}}, variable\_name değişkenin adıdır, yani parantez kullanmadan.

{% hint style="warning" %}
Parametreleri ayarladıktan sonra kontrolü yeniden açmanız ö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/integrations/api/request.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.
