การแทนที่และสูตร
การแทนที่คือตัวแปรในรูปแบบ {{...}} ที่แทรกในข้อความ ฟิลด์การดำเนินการ และเทมเพลตปุ่มเมื่อรีแอคชันทำงาน การแทนที่ที่ไม่รู้จักจะถูกเก็บไว้ตามเดิม นอกจากตัวแปรแล้วยังมี สูตร สำหรับการคำนวณ ปุ่ม «การแทนที่» ใน editor ข้อความช่วยแทรกตัวแปร
ข้อมูลผู้ส่ง
{{first_name}},{{last_name}}— ชื่อและนามสกุล{{username}}—@usernameของผู้ใช้{{user_id}}— Telegram ID ตัวเลข
ข้อมูล event และแชท
{{text}}(หรือ{{received_message}}) — ข้อความของข้อความขาเข้า{{message_id}}(หรือ{{received_message_id}}) — ID ของข้อความขาเข้า{{chat_id}},{{chat_title}}(หรือ{{chat_name}}) — แชทที่เกิด event{{topic_id}},{{topic_url}}— topic (สำหรับ forum)
วันที่และเวลา
{{date}}— วันที่ (YYYY-MM-DD),{{time}}— เวลา (HH:MM),{{datetime}}— วันที่และเวลา- การจัดรูปแบบ:
{{date:DD.MM.YYYY HH:mm}}— tokenYYYY,YY,MM,DD,HH,mm,ss
พารามิเตอร์ผู้ใช้
{{param.key}}(หรือ{{params.key}}หรือ{{recipient.key}}) — ค่าพารามิเตอร์ของผู้ติดตาม พารามิเตอร์ถูกเติมด้วยการดำเนินการ «เปลี่ยนพารามิเตอร์», «บันทึกข้อความ» และการตอบกลับในไดอะล็อก
Context ของการดำเนินการ (ctx)
{{ctx.key}}(หรือ{{context.key}}) — ค่าชั่วคราวของการรันปัจจุบัน: ข้อมูลของ webhook ขาเข้า ผลลัพธ์การดำเนินการ (web request, คำขอไปยังแหล่งข้อมูล, AI), ข้อมูลปุ่มที่กู้คืน (Carry), element ของ loop- ใน loop ตามรายการ element เข้าถึงได้ด้วย alias ของตัวเอง เช่น
{{item.name}}
สูตร
โครงสร้าง {{= expression}} คำนวณ expression โดยตรงในข้อความ engine เดียวกันทำงานในการดำเนินการ «การคำนวณ» และในเงื่อนไขของตาราง decision ใน expression สามารถอ้างอิงพารามิเตอร์และค่า ctx ตามชื่อ ใช้เลขคณิต การเปรียบเทียบ logic และฟังก์ชันหลายสิบรายการ (ROUND, IF, CONCAT และอื่นๆ)
ตัวอย่าง: {{= ROUND(param.total * 0.9) }} — ส่วนลด 10% จากยอดรวมในพารามิเตอร์
Syntax และรายการฟังก์ชันทั้งหมด — ในส่วน สูตร
HTML ในการแทนที่
ข้อความถูกส่งด้วยมาร์กอัป HTML เพื่อไม่ให้ค่าที่แทนที่ทำให้เลย์เอาต์เสีย (เช่น เมื่อชื่อผู้ใช้มี <) ค่าที่แทนที่จะถูก escape โดยค่าเริ่มต้น: อักขระ HTML จะกลายเป็นข้อความที่ปลอดภัย ส่วนแท็กที่คุณเขียนโดยตรงในข้อความรีแอคชัน (<b>, <a>, …) จะไม่ถูกแตะต้อง
หากค่านั้นมีมาร์กอัปสำเร็จรูปอยู่แล้ว (เช่น ประกาศที่บันทึกไว้ในพารามิเตอร์ที่มี <b>...</b>) และคุณต้องการแทรกมัน ตามเดิม ให้ใส่นำหน้าการแทนที่ด้วย &:
{{& key}}— การแทรกแบบ raw สำหรับการแทนที่{{...}}{&user:key},{&recipient:key},{&global:key}— การแทรกแบบ raw สำหรับการแทนที่ namespace
คำนำหน้า & จะปิด escaping เฉพาะการแทนที่นั้นเท่านั้น — คุณเป็นผู้รับรองความน่าเชื่อถือของแหล่งที่มาของค่า ส่วนโทเค็นที่ผู้ติดตามควบคุม ({{first_name}}, …) ควรปล่อยให้ถูก escape ไว้
เมื่อ นำเข้าบอทจากเครื่องมือสร้างอื่น การแทนที่ namespace {user:…}/{recipient:…}/{global:…} จะถูกย้ายไปยังรูปแบบ raw {&…} โดยอัตโนมัติ — โดยทั่วไปค่าเหล่านั้นมีมาร์กอัปสำเร็จรูป ตามที่เครื่องมือสร้างต้นทางทำงาน
หมายเหตุเกี่ยวกับรูปแบบ
การแทนที่ {{...}} ทำงานในข้อความ คำบรรยาย เนื้อหาคำขอ และเทมเพลตปุ่ม ตั้งชื่อพารามิเตอร์และ key ของ ctx สั้นและเป็นภาษาละติน (email, total, order_id) — ง่ายต่อการแทรก
ขั้นตอนถัดไป
- สูตร — syntax DSL และรายการฟังก์ชันทั้งหมด
- ข้อความและปุ่ม — ที่ที่ใช้การแทนที่
- การดำเนินการ — การดำเนินการที่เติมพารามิเตอร์และ
ctx - คอลเลกชันและข้อมูล — การจัดเก็บข้อมูลระหว่างการรัน