Korat

ติดปุ่มทักแชทลงเว็บไซต์ร้าน

แปะโค้ดบรรทัดเดียวลงเว็บร้านของคุณ (ไม่ว่าจะสร้างด้วย Wix, Webflow, Shopify, เขียนเอง หรือจ้างคนอื่นเขียน) ได้ปุ่มลอยที่พาลูกค้าไปทักแชทกับร้านใน Korat ทันที พร้อม QR ให้คนที่มีแอปอยู่แล้วสแกนจากมือถือ

ปุ่มนี้คืออะไร

สคริปต์ไฟล์เดียวที่คุณแปะลงหน้าเว็บของร้าน แล้วมันจะวาดปุ่มลอยมุมจอ (เลือกได้ว่าซ้ายล่างหรือขวาล่าง) — เมื่อลูกค้ากด จะเปิดหน้า https://koratland.com/m/<สลักร้านของคุณ> ในแท็บใหม่ พร้อมแนบ URL หน้าเว็บปัจจุบันไปด้วยเสมอ (พารามิเตอร์ src) เพื่อให้ร้านเห็นว่าลูกค้าทักมาจากหน้าไหน

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

เพราะเหตุนี้ ปุ่มจึงมี QR code ในตัวด้วย (วาดจากเซิร์ฟเวอร์ของ Korat เอง ไม่ใช่สคริปต์ตัวนี้): ลูกค้าที่มีแอป Korat อยู่ในมือถืออยู่แล้ว (และล็อกอินค้างไว้) สแกนแล้วเข้าห้องแชทได้ทันทีโดยไม่ต้องพิมพ์อะไรบนคอมพิวเตอร์ — บนมือถือ Android ที่ลงแอปไว้ ลิงก์เดียวกันนี้เปิดแอปตรง ๆ ด้วย

ไม่ใช่เครื่องมือติดตามผู้เข้าชม (ไม่ใช่ tracker)

สคริปต์นี้ไม่ยิงคำขออะไรทั้งสิ้นตอนโหลดหน้า ไม่เก็บพฤติกรรมการเข้าชม ไม่ตั้งคุกกี้ และไม่อ่านอะไรเกี่ยวกับผู้เข้าชมเลย — สิ่งเดียวที่เกิดขึ้นคือเมื่อลูกค้ากดปุ่มเอง แผง QR จึงเพิ่งจะโหลดรูป QR จากเซิร์ฟเวอร์ Korat (คำขอเดียว ไม่มีคุกกี้ ไม่มี query อื่นนอกจาก src) และถ้ากดลิงก์ "เปิดแชทใน Korat" เบราว์เซอร์จะเปิดลิงก์ปกติหนึ่งลิงก์ไปที่ koratland.com — ไม่มีอะไรทำงานอยู่เบื้องหลังก่อนกดปุ่ม

เริ่มยังไง — คัดลอกแปะ 1 บรรทัด

แปะโค้ดนี้ไว้ก่อนปิด </body> (หรือที่ไหนก็ได้ในหน้า) แทน somtam-lardprao-42 ด้วยสลักหน้าร้านของคุณ (ตัวอักษร/ตัวเลข ไม่ใช่ชื่อร้านภาษาไทย) — ดูวิธีหาสลักที่หัวข้อถัดไป:

<script src="https://koratland.com/embed/korat-message.js"
        data-korat="somtam-lardprao-42" defer></script>

เท่านี้จบ — ไม่ต้องติดตั้งอะไรเพิ่ม ไม่มี dependency ไม่กระทบความเร็วเว็บร้านคุณ (ไฟล์เดียว ขนาดเล็ก โหลดแบบ defer ไม่บล็อกหน้าเว็บ)

หาสลักร้านของคุณได้จากไหน

  • เปิดหน้าร้านของคุณบน Korat ที่ https://koratland.com/b/<สลัก> — สลักคือส่วนที่อยู่หลัง /b/ ใน URL แถบที่อยู่นั่นเอง
  • สลักเดียวกันนี้ใช้กับทั้งปุ่มแชทและ QR

แปะยังไงในแต่ละแพลตฟอร์ม

  • Wix — Editor → เพิ่มองค์ประกอบ (Add) → Embed Code → Custom Embeds → HTML iframe → วางโค้ดข้างบน
  • Webflow — Add panel → Embed → Embed an HTML Code → วางโค้ด → Publish
  • Shopify — Online Store → Themes → Edit code → เปิดไฟล์ theme.liquid → วางโค้ดก่อน </body>
  • WordPress — ถ้าเว็บคุณเป็น WordPress ให้ใช้ปลั๊กอิน Korat โดยเฉพาะแทน (ดูที่หน้า เอกสารรวม) ซึ่งมีตัวช่วยตั้งค่าในเมนูแอดมิน ไม่ต้องแก้โค้ดเอง — สคริปต์ในหน้านี้ก็ใช้ได้เหมือนกันถ้าอยากแปะเอง
  • เว็บที่เขียนเอง / จ้างเขียน — วางแท็ก <script> ไว้ในไฟล์ HTML ตรง ๆ ก่อนปิด </body>

ตัวเลือกปรับแต่ง (data-*)

แอตทริบิวต์ค่าเริ่มต้นความหมาย
data-koratบังคับ สลักของหน้าร้าน /b/<สลัก> ที่ใช้สร้างลิงก์แชท
data-nameเท่ากับ data-koratชื่อร้านที่แสดงในแผง QR (ข้อความล้วน ไม่กระทบ URL)
data-positionbrbr = ขวาล่าง, bl = ซ้ายล่าง
data-labelข้อความมาตรฐานตามภาษาข้อความบนปุ่ม เขียนเองได้
data-langthth หรือ en
data-qrแสดงใส่ data-qr="0" เพื่อซ่อนแผง QR (เหลือแค่ลิงก์เปิดแชท)

src ใน URL แชทและ URL รูป QR มาจาก location.href ของหน้าที่ปุ่มถูกฝังอยู่เสมอ — สคริปต์ไม่มีทางให้ตั้งค่าคงที่แทนได้ เพราะจะทำให้ทุกปุ่มดูเหมือนมาจากหน้าเดียวกัน ซึ่งขัดกับจุดประสงค์ของฟีเจอร์นี้

ตัวอย่างปรับแต่งเต็ม:

<script src="https://koratland.com/embed/korat-message.js"
        data-korat="somtam-lardprao-42"
        data-name="ส้มตำลาดพร้าว"
        data-position="bl"
        data-label="ทักแชทเลย"
        data-lang="th"
        defer></script>

การเข้าถึง (Accessibility)

  • ปุ่มเป็นปุ่มจริงที่กด Tab ไปถึงได้และมี aria-label
  • กด Esc เพื่อปิดแผง QR
  • เคารพการตั้งค่า "ลดการเคลื่อนไหว" (prefers-reduced-motion) ของอุปกรณ์ผู้ใช้
  • สีตัดกันพอทั้งพื้นสว่างและมืด และเว้นระยะจากขอบจอตามพื้นที่ปลอดภัย (safe-area) ของมือถือรุ่นใหม่ ไม่บังแถบท่าทางล่างจอ

ทำไมจึงปลอดภัยกับเว็บร้านของคุณ

  • วาด UI ด้วย Shadow DOM ⇒ CSS ของเว็บร้านคุณกับ CSS ของปุ่มไม่ชนกันแน่นอน
  • ไฟล์เดียว ไม่มี dependency ภายนอก ไม่โหลดฟอนต์/ไลบรารีเพิ่ม
  • โหลดซ้ำกี่ครั้งก็ไม่วาดปุ่มซ้อนกัน
  • ค่าที่คุณกรอกใน data-* ถูก escape ก่อนแสดงผลเสมอ