การแจ้งเตือนแบบ Direct - คีย์ API ส่วนตัวสำหรับแจ้งเตือนทันที

ส่งการแจ้งเตือนโดยตรงด้วยคีย์ API ส่วนตัว ไม่ต้องตั้งค่าช่อง สร้างคีย์ Direct แล้วยิงการแจ้งเตือนทันทีพร้อมหัวข้อ เนื้อหา และลิงก์


การแจ้งเตือนแบบ Direct ช่วยให้คุณส่งการแจ้งเตือนส่วนตัวผ่าน webhook URL ง่าย ๆ โดยไม่ต้องตั้งค่าช่อง ไม่ต้องมีเทมเพลต และไม่ต้องมีผู้ติดตาม แค่สร้างคีย์ เรียก URL แล้วคุณก็ได้รับการแจ้งเตือนบนเครื่องทันที

Direct คืออะไร

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

ด้วย Direct คุณจะได้คีย์ API ส่วนตัวที่ผูกกับ webhook URL เฉพาะตัว เมื่อคุณเรียก URL นั้นพร้อมหัวข้อและเนื้อหา ระบบจะส่งการแจ้งเตือนถึงคุณโดยตรง ไม่ต้องตั้งค่าช่องใด ๆ

ควรใช้ Direct หรือช่องเมื่อใด

Directช่อง
การตั้งค่าสร้างคีย์แล้วใช้ URLสร้างช่องแล้วตั้งค่าเทมเพลต
ผู้รับคุณคนเดียวทุกคนที่ติดตาม
เทมเพลตไม่มี — คุณระบุหัวข้อ/เนื้อหาในแต่ละคำขอตั้งค่าเทมเพลตพร้อมตัวแปรได้
เงื่อนไขไม่มีรองรับการส่งแบบมีเงื่อนไข
เหมาะกับสคริปต์ส่วนตัว แจ้งเตือนเร็ว ๆ งานอัตโนมัติการแจ้งเตือนที่แชร์กัน เวิร์กโฟลว์ที่มีโครงสร้าง

เริ่มต้นใช้งาน

1. สร้างคีย์ Direct

ในแอป Echobell ให้แตะ Direct ที่ด้านบนของรายการช่อง จากนั้นแตะ Create เพื่อสร้างคีย์ Direct ใหม่ ตั้งชื่อที่สื่อความหมาย (เช่น "Build Server", "Home Lab", "Trading Bot")

2. คัดลอก Webhook URL

คีย์ Direct แต่ละอันมี webhook URL เฉพาะตัวในรูปแบบนี้:

https://hook.echobell.one/d/{your-key-token}

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

3. ส่งการแจ้งเตือน

เรียก webhook URL พร้อมส่ง JSON body ที่มี title และ body:

POST https://hook.echobell.one/d/YOUR_KEY_TOKEN
Content-Type: application/json

{
  "title": "Build Complete",
  "body": "Project X built successfully in 3m 42s"
}

เท่านี้เอง คุณจะได้รับการแจ้งเตือนทันที

การส่งคำขอ

คำขอแบบ POST (แนะนำ)

ส่ง JSON body ที่บรรจุเนื้อหาการแจ้งเตือนของคุณ:

POST https://hook.echobell.one/d/YOUR_KEY_TOKEN
Content-Type: application/json

{
  "title": "Deployment Status",
  "body": "v2.1.0 deployed to production",
  "externalLink": "https://dashboard.example.com/deploys/latest"
}

คำขอแบบ GET

คุณส่งพารามิเตอร์ผ่าน query string ก็ได้เช่นกัน:

GET https://hook.echobell.one/d/YOUR_KEY_TOKEN?title=Alert&body=CPU+at+95%25

POST Only

คีย์ Direct แต่ละอันมีการตั้งค่า POST Only ของตัวเองในแอป Echobell ซึ่งปิดอยู่โดยค่าเริ่มต้น

เมื่อเปิดใช้งาน จะมีเพียง POST เท่านั้นที่ทริกเกอร์คีย์นั้นได้ ส่วนคำขอ GET ไปยัง webhook URL ของคีย์จะถูกปฏิเสธด้วย 405 Method Not Allowed และจะไม่มีการส่งการแจ้งเตือน:

{
  "success": false,
  "notificationTriggered": false,
  "message": "This trigger only accepts POST requests; GET triggering is disabled in its settings."
}

คำขอ HEAD ไม่ได้รับผลกระทบ โดยจะตอบกลับ 200 และไม่ทริกเกอร์การแจ้งเตือนเสมอ ไม่ว่า POST Only จะเปิดหรือปิดอยู่

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

ฟิลด์ของคำขอ

ชื่อฟิลด์ทั้งหมดไม่แยกตัวพิมพ์ใหญ่เล็ก โดย title, Title และ TITLE ถือว่าเหมือนกันทั้งหมด ไม่ว่าจะส่งผ่าน JSON body หรือ query string

ฟิลด์ชนิดจำเป็นคำอธิบาย
titlestringไม่หัวข้อการแจ้งเตือน หากไม่ระบุจะใช้ค่าเริ่มต้นเป็น "Direct Notification"
bodystringไม่ข้อความเนื้อหาของการแจ้งเตือน
externalLinkstringไม่ลิงก์ที่คลิกได้ซึ่งแสดงในบันทึกการแจ้งเตือน
notificationTypestringไม่ระดับความเร่งด่วนของการแจ้งเตือน รับค่า active, time-sensitive หรือ calling ค่าเริ่มต้นคือ active ดู ประเภทการแจ้งเตือน

ประเภทการแจ้งเตือน

คุณควบคุมระดับความเร่งด่วนของการแจ้งเตือนแบบ Direct ได้ด้วยฟิลด์ notificationType:

ประเภทคำอธิบาย
activeการแจ้งเตือนมาตรฐาน ส่งตามปกติ เป็นค่าเริ่มต้น
time-sensitiveการแจ้งเตือนความสำคัญสูงที่ทะลุโหมดโฟกัสได้
callingการแจ้งเตือนแบบสายโทรเข้าสำหรับสถานการณ์วิกฤต ต้องมีการสมัครสมาชิก premium ที่ใช้งานอยู่ หากไม่มี premium ระบบจะลดระดับลงเป็น time-sensitive

ตัวอย่างการระบุประเภทการแจ้งเตือน:

POST https://hook.echobell.one/d/YOUR_KEY_TOKEN
Content-Type: application/json

{
  "title": "Server Down",
  "body": "Production server is unresponsive",
  "notificationType": "calling"
}

รูปแบบการตอบกลับ

คำขอที่สำเร็จจะได้รับการตอบกลับดังนี้:

{
  "success": true,
  "message": "Notification triggered successfully."
}

หากคีย์ไม่ถูกต้องหรือไม่พบ (สังเกตว่ายังคงตอบกลับด้วย HTTP 200):

{
  "success": false,
  "message": "Direct key not found."
}

การจัดการคีย์ Direct

หลายคีย์

คุณสร้างคีย์ Direct หลายอันสำหรับวัตถุประสงค์ต่างกันได้:

  • "CI Server" — สำหรับการแจ้งเตือนเรื่องบิลด์และการดีพลอย
  • "Home Automation" — สำหรับการแจ้งเตือนจากเซ็นเซอร์ IoT
  • "Cron Jobs" — สำหรับผลของงานตามตารางเวลา
  • "Trading Bot" — สำหรับการแจ้งเตือนตลาด

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

รีเซ็ตโทเคน

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

ลบคีย์

การลบคีย์ Direct จะทำให้ webhook URL ของคีย์นั้นใช้ไม่ได้อย่างถาวร คำขอใด ๆ ที่ส่งไปยัง URL เดิมจะล้มเหลว

กรณีใช้งานที่พบบ่อย

สคริปต์เชลล์

# แจ้งเตือนเมื่องานที่ใช้เวลานานทำงานเสร็จ
./run-migration.sh && \
curl -X POST https://hook.echobell.one/d/YOUR_KEY_TOKEN \
  -H "Content-Type: application/json" \
  -d '{"title": "Migration Complete", "body": "Database migration finished successfully"}'

Cron Job

# ใน crontab: แจ้งเตือนเมื่อสำรองข้อมูลเสร็จ
0 2 * * * /usr/local/bin/backup.sh && curl -s -X POST https://hook.echobell.one/d/YOUR_KEY_TOKEN -H "Content-Type: application/json" -d '{"title": "Backup Done", "body": "Nightly backup completed"}'

Python

import requests

requests.post(
    "https://hook.echobell.one/d/YOUR_KEY_TOKEN",
    json={
        "title": "Training Complete",
        "body": f"Model accuracy: {accuracy:.2%}",
        "externalLink": "https://wandb.ai/runs/abc123"
    }
)

Node.js

await fetch("https://hook.echobell.one/d/YOUR_KEY_TOKEN", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    title: "Deploy Complete",
    body: `Version ${version} deployed to production`,
  }),
});

GitHub Actions

- name: Notify via Echobell Direct
  if: always()
  env:
    ECHOBELL_DIRECT_URL: ${{ secrets.ECHOBELL_DIRECT_URL }}
  run: |
    curl -X POST "$ECHOBELL_DIRECT_URL" \
      -H "Content-Type: application/json" \
      -d '{"title": "Build ${{ job.status }}", "body": "${{ github.repository }} @ ${{ github.sha }}"}'

แนวปฏิบัติที่ดี

ความปลอดภัย

  • ถือว่า URL ของคีย์ Direct เป็นความลับ — ใครก็ตามที่มี URL นี้ส่งการแจ้งเตือนถึงคุณได้
  • ใช้ตัวแปรสภาพแวดล้อม ในการเก็บโทเคนของคีย์ในสคริปต์และ CI/CD
  • รีเซ็ตโทเคน ทันทีหากสงสัยว่าคีย์รั่วไหล
  • สร้างคีย์แยกกัน สำหรับแต่ละบริการ เพื่อให้เพิกถอนได้ทีละอัน

การจัดระเบียบ

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

การจัดการข้อผิดพลาด

เมื่อนำ Direct ไปใช้ในสคริปต์ของคุณ ให้แยกเงื่อนไขจากฟิลด์ success ใน JSON แทนที่จะดูจากสถานะ HTTP:

  • 200 OK: ระบบได้รับคำขอแล้ว ให้ตรวจสอบ JSON body โดย success: true หมายถึงทริกเกอร์การแจ้งเตือนแล้ว ส่วน success: false หมายถึงยังไม่ได้ทริกเกอร์ คีย์ Direct ที่ไม่รู้จักหรือถูกรีเซ็ตจะตอบกลับด้วย HTTP 200 พร้อม { "success": false, "message": "Direct key not found." } ซึ่งไม่ใช่ 404
  • 400 Bad Request: โทเคนของคีย์มีความยาวไม่ถูกต้อง ให้แก้ไข URL
  • 405 Method Not Allowed: คีย์นั้นเปิด POST Only ไว้ แต่คำขอไม่ใช่ POST ให้เปลี่ยนฝั่งผู้เรียกเป็น POST หรือปิดการตั้งค่านี้

Echobell ไม่จำกัดอัตราการเรียก Direct จึงไม่มีการตอบกลับด้วย 429

ความเป็นส่วนตัวและความปลอดภัย

ข้อมูลที่ถูกจัดเก็บ

  • บนเซิร์ฟเวอร์ของเรา:

    • ข้อมูลเมตาของคีย์ Direct (ชื่อ โทเคนที่ผ่านการแฮช เจ้าของ)
    • payload ของคำขอถูกประมวลผลและเก็บไว้ชั่วคราวเพื่อการส่ง
  • บนเครื่องของคุณ:

    • เนื้อหาการแจ้งเตือน (หัวข้อ เนื้อหา)
    • ประวัติการทริกเกอร์และเวลาที่เกิดขึ้น
    • ลิงก์ภายนอก

ข้อมูลที่ไม่ถูกจัดเก็บ

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

การแก้ปัญหา

ไม่ได้รับการแจ้งเตือน

  1. ตรวจสอบ webhook URL — คัดลอกมาจากแอปโดยตรง และดูว่ามีช่องว่างเกินหรือไม่
  2. ตรวจสอบว่าคีย์ยังอยู่ — คีย์อาจถูกลบหรือโทเคนถูกรีเซ็ตไปแล้ว
  3. ตรวจสอบสิทธิ์การแจ้งเตือน — แอป Echobell ต้องได้รับสิทธิ์แจ้งเตือนบนเครื่องของคุณ
  4. ทดสอบด้วย curl — เพื่อตัดปัญหาจากไคลเอนต์ HTTP ของคุณออกไป:
    curl -X POST https://hook.echobell.one/d/YOUR_KEY_TOKEN \
      -H "Content-Type: application/json" \
      -d '{"title": "Test", "body": "Hello from Direct"}'

ข้อผิดพลาดของคำขอ

  • แจงส่วน JSON ไม่สำเร็จ: ตรวจสอบว่าตั้งเฮดเดอร์ Content-Type: application/json ไว้แล้ว และ body เป็น JSON ที่ถูกต้อง
  • ไม่พบคีย์: body ที่มี "success": false พร้อมข้อความ "Direct key not found." หมายความว่าโทเคนถูกรีเซ็ตหรือคีย์ถูกลบ (สถานะ HTTP ยังคงเป็น 200)

ยังแก้ปัญหาไม่ได้ใช่ไหม

  • เยี่ยมชม ศูนย์ช่วยเหลือ ของเราเพื่อขอความช่วยเหลือเพิ่มเติม
  • ติดต่อเราที่ echobell@weelone.com พร้อมแจ้ง:
    • คำอธิบายปัญหา
    • ตัวอย่างคำขอ (ปิดบังโทเคนไว้)
    • พฤติกรรมที่คาดหวังเทียบกับที่เกิดขึ้นจริง

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