การแทนที่และสูตร

การแทนที่คือตัวแปรในรูปแบบ {{...}} ที่แทรกในข้อความ ฟิลด์การดำเนินการ และเทมเพลตปุ่มเมื่อรีแอคชันทำงาน การแทนที่ที่ไม่รู้จักจะถูกเก็บไว้ตามเดิม นอกจากตัวแปรแล้วยังมี สูตร สำหรับการคำนวณ ปุ่ม «การแทนที่» ใน 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}} — token YYYY, 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) — ง่ายต่อการแทรก

ขั้นตอนถัดไป