คุณสามารถสร้างบอทที่โต้ตอบกับทรัพยากรอื่นๆ ผ่าน API ได้ ตัวอย่างเช่น บอทสามารถตอบสนองต่อคำขอโดยมีความสามารถในการตรวจสอบว่าสามารถนัดหมายในวันที่กำหนดได้หรือไม่ หรือค้นหาสินค้าในร้านค้าออนไลน์

วิธีจัดการกับ API ของบุคคลที่สามจากตัวอย่างของ DaData

ลองใช้เคล็ดลับ API จาก https://dadata.ru/api/suggest/address เป็นตัวอย่าง

อ่านเอกสารของ API บุคคลที่สามอย่างละเอียด

เปิดโปรเจกต์ของคุณใน Salebot และเปิดการตั้งค่าขั้นสูงในการตั้งค่าของบล็อก ที่นั่นคุณต้องเปลี่ยนประเภทคำขอเป็น POST-json

ในช่อง “URL request” ให้ป้อน URL ต่อไปนี้: https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address

ในช่อง “Request header” ให้พิมพ์ส่วนหัวในรูปแบบ JSON:

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

ใน “JSON parameters” ให้ใส่คำขอเอง - { "query": "#{CurrencyType}" }

เพื่อให้ได้ผลลัพธ์ คุณจะต้องกรอกแท็บ “Stored values” ด้วย

ตัวอย่างของคำขออยู่ด้านล่าง:

วิธีบันทึกค่าจากตัวแปร

ไม่ใช่ทุกคนที่จะเข้าใจได้ทันที จนกว่าคุณจะลองทำด้วยตัวเอง

ในการเริ่มต้น ให้พิมพ์ #{custom_answer} ในช่องคำตอบ (ตัวแปร #{custom_answer} เก็บคำตอบที่ได้รับจากเซิร์ฟเวอร์ที่กล่าวถึงในช่อง “URL for an answer from the server”)

เปิดบล็อกที่มีคำขอเพื่อส่งคำขอและรับคำตอบ คุณต้องวิเคราะห์คำตอบและตั้งค่าการเข้าถึงตัวแปรในนั้น สำหรับสิ่งนี้ คุณต้องทำงานกับแท็บ “Stored values”

มาดูตัวอย่างเพื่อทำความเข้าใจกระบวนการให้ดีขึ้น

จากผลลัพธ์ของคำขอ #{custom_answer} ของเรา ได้รับคำตอบในรูปแบบ:

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

ตอนนี้เรามาเขียนในช่อง “Stored values” ค่า->ตัวแปรของเรา

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

suggestions - คีย์ของอาร์เรย์ [{"value": "British pound", "unrestricted_value": "British pound", "data": {"code": "826", "strcode": "GBP", "name": "British pound", "country": "The UK"}}]

suggestions|0 - คีย์ขององค์ประกอบแรกในอาร์เรย์ {"value": "British pound", "unrestricted_value": "British pound", "data": {"code": "826", "strcode": "GBP", "name": "British pound", "country": "The UK"}}

suggestions|0|value - คีย์ของค่า “British pound”

คีย์ที่ยาวที่สุดใน JSON นี้:

suggestions|0|data|strcode - คีย์ของค่า “GBP”

คีย์จะถูกคั่นด้วยเส้นแนวตั้ง (|) หากมีอาร์เรย์ใน JSON การเข้าถึงองค์ประกอบจะถูกกำหนดหมายเลขโดยเริ่มจาก 0 และเขียนด้วยเส้นแนวตั้งเช่นกัน

จำเป็นต้องทำซ้ำการซ้อนทั้งหมด เพื่อความสะดวก คุณสามารถแสดง JSON ในแอป JSON-viewer

ระดับการซ้อนจะถูกคั่นด้วยเส้นแนวตั้ง ดังนั้นคุณต้องแสดงรายการคีย์ทั้งหมดที่คั่นด้วยเส้นเพื่อไปยังค่า

หากมีอาร์เรย์ใน JSON ให้ระบุหมายเลขขององค์ประกอบโดยเริ่มจาก 0 แทนคีย์

แยกวลีของการรับตัวแปรด้วยเครื่องหมายอัฒภาค (;) วลีประกอบด้วยลิงก์ไปยังข้อมูลในคำตอบและชื่อของตัวแปรที่จะบันทึก ซึ่งคั่นด้วยสัญลักษณ์ -> (ขีดกลาง + วงเล็บมุม)

คำค้นหาเป็นเส้นทางใน JSON ไปยังค่าที่ต้องการ

การพัฒนา API สำหรับบอท

ในการพัฒนา API คุณจะต้องมีโฮสติ้งที่ใช้เป็นฐาน หากคุณไม่มีหรือคุณไม่ใช่ผู้เชี่ยวชาญด้านการเขียนโปรแกรม คุณสามารถติดต่อเราและเราจะพัฒนา API สำหรับบอทของคุณและใช้โฮสติ้งของเรา โฮสติ้งนั้นฟรี คุณจะจ่ายเฉพาะค่าพัฒนาเท่านั้น

แต่ตอนนี้ขอทฤษฎีเล็กน้อย

บอทรองรับคำขอ GET และ POST ซึ่งเป็นประเภทหลักที่ใช้ใน API สาธารณะส่วนใหญ่

GET คือคำขอที่เกิดขึ้นเมื่อคลิกลิงก์หรือเปิดลิงก์ในเบราว์เซอร์ พารามิเตอร์ในคำขอดังกล่าวจะถูกโอนไปยัง URL-requests

ไวยากรณ์ของพารามิเตอร์ที่โอน: หลังจาก url จะมีเครื่องหมายคำถาม (?) จากนั้นแต่ละพารามิเตอร์จะถูกคั่นด้วยเครื่องหมายแอมเปอร์แซนด์ (&) พารามิเตอร์ประกอบด้วยชื่อและค่าหลังเครื่องหมายเท่ากับ (=) ตัวอย่าง URL ที่มีพารามิเตอร์:

ที่นี่คุณจะเห็นว่ามีการแชร์พารามิเตอร์หนึ่งตัวชื่อ “search_query” และค่าของมันคือ “queen live aid” ‘+’ ที่นี่คือช่องว่างระหว่างคำ เมื่อทำงานกับซอฟต์แวร์แก้ไข คุณสามารถเว้นวรรคได้ – บอทจะเปลี่ยนเอง

POST คือประเภทของคำขอที่มักถูกส่งเมื่อกรอกแบบฟอร์มบนเว็บไซต์ คำขอจะโอนพารามิเตอร์ในเนื้อหา แน่นอนว่าสามารถแชร์ได้เหมือน GET แต่ไม่ค่อยทำแบบนี้ พารามิเตอร์ในเนื้อหาสามารถอยู่ในรูปแบบ JSON หรือเป็นคีย์-ค่า ในรูปแบบคีย์-ค่า พารามิเตอร์จะแชร์ฟอร์ม รูปแบบ JSON เป็นรูปแบบที่ใช้บ่อยที่สุดสำหรับ API

Request header. ทุกคำขอสามารถเพิ่มส่วนหัว/ชื่อเรื่องได้ รูปแบบของข้อมูลที่แชร์และคีย์การเข้าถึงมักจะถูกเขียนไว้ในนั้น โดยปกติเราจะปล่อยแท็บนี้ว่างไว้ แต่จำเป็นต้องใส่ API Token หรือประเภทคำขอ “Content-type”: “application/json” ในบางโอกาส

JSON - (JavaScript Object Notation) เป็นรูปแบบไฟล์มาตรฐานแบบเปิดและรูปแบบการแลกเปลี่ยนข้อมูลที่ใช้ข้อความที่มนุษย์อ่านได้เพื่อจัดเก็บและส่งข้อมูลอ็อบเจ็กต์ที่ประกอบด้วยคู่แอตทริบิวต์-ค่าและอาร์เรย์ ในการทำงานกับ API ในบอท คุณต้องรู้รูปแบบนี้ ทุกอย่างขึ้นอยู่กับมัน

ก่อนดำเนินการต่อ ให้อ่านบทความต่อไปนี้:

https://www.json.org/json-en.html
https://developer.mozilla.org/en-US/docs/learn/javascript/objects/json

และลองสร้างไฟล์ JSON ของคุณเองบนเว็บไซต์นี้:

https://jsoneditoronline.org

การปฏิบัติ

บล็อกและเงื่อนไขสามารถตอบสนองต่อคำขอได้ คำขอเงื่อนไขถูกสร้างขึ้นเพื่อทำความเข้าใจบนเว็บไซต์ว่าบทสนทนาสามารถดำเนินไปตามเส้นทางที่กำหนดได้หรือไม่ คำขอในกรณีนี้จะเกิดขึ้นทุกครั้งที่มีการตรวจสอบเงื่อนไขของเส้นทาง ในทางกลับกัน คำขอของบล็อกจะทำงานเฉพาะเมื่อมีการย้ายไปยังบล็อกเท่านั้น

ก่อนสร้างคำขอ คุณต้องเลือกประเภทของมัน:

POST-data และ POST-json แตกต่างกันตามวิธีการโอนพารามิเตอร์ตามที่กล่าวไว้ข้างต้น (รูปแบบ JSON หรือเป็นคีย์-ค่า) หากคุณเลือก JSON พารามิเตอร์สามารถโอนในคำขอเท่านั้น ฟิลด์เพิ่มเติมจะเปิดขึ้นสำหรับโพสต์: JSON POST-parameters สำคัญ! พารามิเตอร์ต้องเขียนในรูปแบบ JSON เท่านั้น บอททำงานแบบนี้เท่านั้น

คำตอบจากเซิร์ฟเวอร์สามารถแยกวิเคราะห์และบันทึกในตัวแปรได้

คุณสามารถแยกวิเคราะห์คำตอบได้เฉพาะเมื่ออยู่ในรูปแบบ JSON เท่านั้น

ตัวแปรที่บันทึกจะถูกเขียนลงในการส่งครั้งสุดท้ายที่ยังไม่ได้กรอก หากการส่งถูกโอนผ่านบล็อกสีแดง ตัวแปรจะถูกยกเลิก ดังนั้นหากคุณต้องการบันทึกข้อมูล คุณต้องโอนตัวแปรผ่านบล็อกสีเหลือง

อย่างไรก็ตาม คุณสามารถดูสิ่งที่บอทบันทึกไว้ในตัวแปรได้ในส่วน Leads:

การโอนข้อมูลที่ไม่ใช่บรรทัด

ตามค่าเริ่มต้น ค่าตัวแปรจะมาในรูปแบบ #{} แต่จะมาเป็นบรรทัด เพื่อให้ตัวแปรถูกโอนเป็นตัวเลข คุณต้องปิดการตรวจสอบรูปแบบของพารามิเตอร์ post-json

จากนั้นคุณสามารถระบุชื่อของตัวแปรได้ เช่น {"key": #{variable_name}} โดยที่ variable_name คือตัวแปร ดังนั้นโดยไม่ต้องใช้วงเล็บ

หลังจากตั้งค่าพารามิเตอร์แล้ว แนะนำให้เปิดการตรวจสอบอีกครั้ง