API'ler aracılığıyla diğer hizmetlerle etkileşime giren botlar oluşturabilirsiniz. Örneğin, botlar belirli bir tarih için müsaitlik durumunu kontrol etmek veya çevrimiçi bir mağazada bir ürün bulmak için isteklerde bulunabilir.
Dadata örneğini kullanarak üçüncü taraf API'lerle nasıl etkileşime geçilir
Örnek olarak bir adres öneri API'sini ele alalım: https://dadata.ru/api/suggest/address/ bağlantı farklı olacak
Üçüncü taraf API'lerin dokümantasyonunu dikkatlice okuyun.
Lütfen dikkat! Üçüncü taraf API'ler, isteklerin gönderileceği IP adreslerini gerektirir: 158.160.49.208 – web sitesi.
"İstek URL'si" alanına https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address girin.
"İstek başlığı" alanına, başlığı JSON formatında girin: {"Content-Type": "application/json", "Accept": "application/json", "Authorization": "Token " + token}.
"JSON parametreleri" alanına, isteğin kendisini girin: {"query": "#{CurrencyType}"}.
İstek sonucunu almak için "Kaydedilen değerler" alanını doldurun.
İsteğin bir örneği aşağıdaki resimde gösterilmiştir.
Değişkenlerden değerler nasıl kaydedilir
İlk seferde tam olarak anlaşılmayabilir—gerçekten kendiniz denemeniz gerekir.
İlk olarak, "Yanıt" alanına #{custom_answer} girin. (#{custom_answer} değişkeni, "Yanıt URL'si" 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 ve ondan hangi değişkenlerin çıkarılacağını ayarlamanız gerekir. Bunun için "Kaydedilen Değerler" alanını kullanın.
Yukarıda açıklanan örneği inceleyelim.
JSON'daki verilere nasıl erişileceğini anlamanın en iyi yolu örnek üzerindedir. İsteğimiz sonucunda #{custom_answer} içinde alınan yanıt şöyle görünür:
{ "suggestions": [ { "value": "US Dollar", "unrestricted_value": "US Dollar", "data": { "code": "840", "strcode": "USD", "name": "US Dollar", "country": "United States" } } ] }
"Kaydedilen değerler" alanına DEĞER -> DEĞİŞKEN 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 elemanı 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
Anahtarlar dikey çubuk (|) ile ayrılır. Bir JSON öğesi bir dizi ise, öğelerine 0'dan başlayarak indeksle erişirsiniz ve bu da dikey çubuk kullanılarak yazılır.
Tüm iç içe geçmeyi tekrarlamanız gerekir. Kolaylık olması için, bir JSON görüntüleyici uygulaması kullanarak JSON'u görselleştirebilirsiniz.
İç içe geçme seviyesi dikey çubukla ayrılır. Yani, değere ulaşmak için tüm anahtarları listelemeli ve bunları dikey çubukla ayırmalısınız.
JSON bir dizi içeriyorsa, anahtar yerine sıfırdan başlayarak öğenin indeksini kullanın.
Değişkenlerimizi elde etmek için ifadeleri noktalı virgül ; ile ayırın.
Her ifade, yanıttaki verilere giden yol ve bunu kaydedecek değişkenin adından oluşur ve -> ile ayrılır.
Arama sorgusu, JSON'da gerekli değere giden yolu temsil eder.
Botlar için API geliştirme
Bot, çoğu genel API'de kullanılan ana türler olan GET ve POST isteklerini destekler.
GET, bir bağlantıya tıkladığınızda veya bir tarayıcıda URL açtığınızda gerçekleşen istektir. Bu istekte parametreler URL'de 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:
Burada, "good music" değerine sahip tek bir q parametresi 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, çoğunlukla bir web sitesinde bir form gönderirken gönderilen istektir. Parametreler isteğin gövdesinde gönderilir. GET isteklerinde olduğu gibi URL'de de gönderilebilseler de, 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ğunlukla, veri formatını ve erişim anahtarlarını belirtir. Genellikle bu alan boş bırakılır, ancak nadir durumlarda bir API belirteci veya istek türü eklemeniz gerekir, örn., "Content-Type": "application/json".
JSON (JavaScript Object Notation, genellikle /ˈdʒeɪsən/ JAY-sən olarak telaffuz edilir), JavaScript'e dayalı metin tabanlı bir veri değişim formatıdır. Diğer birçok metin formatı gibi, JSON da insanlar tarafından okunması kolaydır. Botta API'lerle çalışmak için bu formatı anlamanız gerekir, çünkü tüm etkileşimlerin temelini 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:
Pratik
İstekler bloklar ve koşullar tarafından yürütülebilir. Koşullu istekler, bir diyaloğun sitede belirli bir dala gidip gidemeyeceğini kontrol etmek için tasarlanmıştır. Bu durumda, istek dal koşulu her değerlendirildiğinde gönderilir. Bloklardaki istekler ise yalnızca diyalog bu duruma girdiğinde yürütülür.
Bir istek oluşturmadan önce, türünü seçmeniz gerekir:
POST-veri ve POST-JSON, daha önce belirtildiği gibi parametrelerin nasıl gönderildiği konusunda farklılık gösterir (JSON formatında veya anahtar-değer çiftleri olarak). JSON'u seçerseniz, parametreler yalnızca istek 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 yazma konusunda zaten pratik yaptınız.
Sunucudan gelen yanıt ayrıştırılabilir ve değişkenlere kaydedilebilir.
Bir yanıtı yalnızca JSON formatındaysa ayrıştırabilirsiniz.
Kaydedilen değişkenler, doldurulmamış son forma kaydedilir. Form kırmızı bir blok aracılığıyla gönderilirse, değişkenler atılır. Bu nedenle, bu verileri kaydetmeniz gerekiyorsa, değişkenleri sarı bir blok aracılığıyla CRM sistemine iletin.
Botun değişkenlere ne kaydettiğini "Müşteri Adayları" bölümünde de görebilirsiniz.
Değişkenleri dize olarak değil, iletme
Varsayılan olarak, değişken değerleri "#{}" biçiminde dizeler olmalıdır, ancak bu durumda değişken bir dize 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:

Ardından, değişken adını kullanabilirsiniz, örneğin: {"key": #{variable_name}}, burada variable_name değişkenin kendisidir—tırnak işaretleri olmadan.
Parametreleri ayarladıktan sonra biçim kontrolünü tekrar etkinleştirmeniz önerilir.


