← บทความทั้งหมด
บันทึกการเปลี่ยนแปลง

การโทรด้วยเสียงและวิดีโอผ่าน WhatsApp ใน UnifyPort: รุ่นทดสอบแบบจำกัดสิทธิ์

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

ขอบเขตปัจจุบันคือ การโทรออกผ่าน WhatsApp ที่ดำเนินการโดยคน ทีมสนับสนุนทางเทคนิคจะเปิดสิทธิ์ให้เป็นรายพื้นที่ทำงาน (workspace) การสร้าง API key เพียงอย่างเดียวยังไม่เปิดการโทร และรุ่นทดสอบนี้ยังไม่เปิดให้รับสายเข้า

รุ่นทดสอบเพิ่มความสามารถอะไรบ้าง

เอกสารอ้างอิง API การโทร ระบุการทำงานไว้สามรายการ:

  • POST /v1/calls เตรียมการโทรด้วยเสียงหรือวิดีโอ และส่งกลับ join_url ที่มีอายุสั้นและใช้ได้ครั้งเดียว
  • GET /v1/calls/active ดึงการโทรปัจจุบันที่ UnifyPort จัดการให้บัญชีที่เลือก
  • POST /v1/calls/{call_id}/hangup จบการโทรที่ระบุ

อีเวนต์ Webhook สองรายการช่วยให้แอปติดตามการโทรได้: call.answered แจ้งเมื่อเชื่อมต่อแล้ว และ call.ended แจ้งเมื่อจบการโทรพร้อมเหตุผลและระยะเวลาที่เชื่อมต่อ นักพัฒนาจึงมีส่วนประกอบสำหรับเพิ่มขั้นตอนที่เจ้าหน้าที่โทรคุยกับลูกค้าในกระบวนการบริการที่ใช้อยู่

คำขอ API มีหน้าที่เตรียมการโทร เจ้าหน้าที่ต้องเปิดลิงก์ที่ได้รับแล้วคลิก Start call จึงจะเริ่มโทรออก แสดงขั้นตอนนี้ให้ชัดในหน้าจอ เพื่อให้เจ้าหน้าที่ตรวจสอบลูกค้าที่เลือกก่อนเริ่มโทร

เมื่อแชตต้องเปลี่ยนเป็นการพูดคุย

ลองพิจารณาสถานการณ์บริการลูกค้าสมมติเหล่านี้:

  • ยืนยันคำสั่งซื้อ: เจ้าหน้าที่และลูกค้าคุยเรื่องรูปแบบการจัดส่งที่อธิบายด้วยข้อความสั้นได้ยาก
  • แก้ปัญหาการใช้งาน: เจ้าหน้าที่แนะนำลูกค้าให้ตรวจสอบทีละขั้นผ่านการโทรด้วยเสียง
  • ช่วยเหลือผ่านภาพ: วิดีโอคอลช่วยให้ลูกค้าแสดงปัญหาของสินค้าหรือการติดตั้งให้เจ้าหน้าที่ดู

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

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

เตรียมการโทร แล้วให้เจ้าหน้าที่เริ่มโทร

ก่อนอื่น ให้ขอสิทธิ์รุ่นทดสอบสำหรับ workspace และเชื่อมต่อบัญชีรับส่งข้อความ WhatsApp ที่ผ่านการยืนยันสิทธิ์แล้ว หากยังอยู่ระหว่างตั้งค่าการเข้าถึงบัญชี คู่มือการยืนยันสิทธิ์ด้วย QR และ Passkey อธิบายขั้นตอนเชื่อมต่อบัญชีซึ่งเป็นอีกขั้นตอนหนึ่ง

ส่งคำขอสร้างจาก backend โดยใช้ X-Api-Key ของ workspace ตัวอย่าง JSON ต่อไปนี้แสดง body ตามเอกสาร ให้แทน acc_example และ <conversation_id> ด้วยบัญชีที่เลือกและรหัสบทสนทนาจริงของบัญชีนั้น ก่อนส่งไปยัง POST /v1/calls:

{
  "account_id": "acc_example",
  "to": {
    "id": "<conversation_id>",
    "type": "user"
  },
  "media_type": "video"
}

ใช้ voice สำหรับการโทรด้วยเสียง หรือ video สำหรับการโทรที่รองรับวิดีโอ เก็บ API key ไว้บนเซิร์ฟเวอร์ และส่ง join_url ที่ได้รับเป็นการส่วนตัวให้เฉพาะเจ้าหน้าที่ที่จะโทร

การสร้างจะตอบกลับ 201 Created พร้อม call_id, state: preparing, join_url และ expires_at การตอบกลับนี้ยังไม่ได้แสดงว่าโทรออกหาลูกค้าแล้วหรือลูกค้ารับสายแล้ว

ช่วงเวลาเตรียมการมีค่าเริ่มต้นเป็น สองนาทีนับจากการสร้าง ใช้ expires_at ที่ตอบกลับเป็นเวลาหมดอายุจริง เพราะเซิร์ฟเวอร์อาจปรับเวลาได้ เจ้าหน้าที่ต้องเปิดลิงก์และคลิก Start call ก่อนเวลานั้น กำหนดเวลาเตรียมการนี้ไม่จำกัดระยะเวลาของการโทรที่เชื่อมต่อแล้ว

เบราว์เซอร์ต้องได้รับอนุญาตให้ใช้ไมโครโฟน ส่วนการอนุญาตใช้กล้องเป็นทางเลือก ดูแลลิงก์นี้เป็นข้อมูลส่วนตัวที่ใช้ได้ครั้งเดียว อย่าเผยแพร่หรือบันทึก URL เต็มลงใน log

นำสถานะการโทรกลับเข้าสู่กระบวนการทำงาน

บันทึก call_id ที่ได้รับให้เชื่อมโยงกับบัญชี บทสนทนา และงานบริการที่เลือกในระบบของคุณ Endpoint สำหรับดึงการโทรปัจจุบัน สามารถดึงการโทรที่ UnifyPort จัดการเมื่อจำเป็น รวมถึงกรณีที่รหัสการโทรสูญหาย หากไม่มีการโทรที่อยู่ภายใต้การจัดการ จะตอบกลับ data: {} Endpoint นี้ไม่สามารถบอกได้ว่าฝ่ายใดกำลังติดสายอยู่ในแอป WhatsApp บนมือถือหรือไม่

สมัครรับ call.answered และ call.ended เพื่ออัปเดตบันทึกการโทรของแอป หากกำหนดรายการ subscribed_events แบบระบุชื่อ ต้องใส่ชื่ออีเวนต์ทั้งสองนี้ สำหรับ workspace รุ่นทดสอบ การใช้ * รายการว่าง หรือการไม่ส่งรายการ จะรวมอีเวนต์การโทรที่ได้รับอนุญาตด้วย ส่วน workspace ทั่วไปจะไม่ได้รับอีเวนต์เหล่านี้ผ่านการสมัครแบบ wildcard

อีเวนต์จบการโทรมี data.call.id, reason และ duration_seconds ระยะเวลาวัดช่วงที่เชื่อมต่อแล้วและปัดลงเป็นวินาทีเต็ม ดังนั้นค่า 0 เพียงอย่างเดียวจึงไม่ได้พิสูจน์ว่าไม่มีผู้รับสาย ให้ติดตามอีเวนต์รับสายด้วย หากการสร้างล้มเหลวแบบ synchronous อาจไม่มี callback จบการโทร จึงต้องจัดการข้อผิดพลาด HTTP แยกต่างหาก

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

ขอบเขตของรุ่นทดสอบแบบจำกัดสิทธิ์ในปัจจุบัน

รุ่นทดสอบนี้รองรับ การโทรด้วยเสียงและวิดีโอผ่าน WhatsApp แบบหนึ่งต่อหนึ่งที่เริ่มผ่านขั้นตอนในเบราว์เซอร์ การโทรกลุ่ม การโทรในช่อง การโทรบนแพลตฟอร์มรับส่งข้อความอื่น และการจัดการสายเข้าอยู่นอกขอบเขตปัจจุบัน อีเวนต์ call.incoming ที่ปรากฏในเอกสารเป็นสัญญาที่สำรองไว้ การมีชื่ออยู่ในรายการอีเวนต์ไม่ได้เปิดความสามารถรับสาย

การบันทึกเสียง การถอดเสียงเป็นข้อความ การเชื่อมต่อ SIP/PBX และเจ้าหน้าที่เสียงที่ทำงานด้วย AI ไม่ใช่ความสามารถที่รุ่นทดสอบนี้ให้บริการ UnifyPort ให้บริการอินเทอร์เฟซอย่างไม่เป็นทางการ บทความนี้อธิบายสัญญาการโทรของ UnifyPort เอง และไม่ได้ระบุว่าเป็น WhatsApp Business Calling API อย่างเป็นทางการของ Meta

แฟล็ก workspace is_beta เป็นแบบอ่านอย่างเดียวและปิดไว้โดยค่าเริ่มต้น ทีมสนับสนุนทางเทคนิคต้องเปิดสิทธิ์ให้ workspace ที่ยังไม่มีสิทธิ์จะได้รับ 403 beta_feature_not_enabled พร้อมรหัสตัวเลข 41002 เมื่อใช้ API การโทร การตั้งค่า metadata หรือส่ง PATCH สำหรับ workspace ไม่สามารถเปิดสิทธิ์ได้

คำถามก่อนทดลองใช้

เริ่มโทรโดยใช้เพียงหมายเลขโทรศัพท์ได้หรือไม่?

ไม่ได้ ใช้ conversation_id จริงภายใต้บัญชีรับส่งข้อความ WhatsApp ที่เลือก พร้อม to.type: user

API โทรออกทันทีหรือไม่?

ไม่ API เตรียมลิงก์การโทร คนต้องเปิดลิงก์และคลิก Start call ก่อน expires_at เพื่อโทรออก

การโทรถูกจำกัดไว้ที่สองนาทีหรือไม่?

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

สิทธิ์รุ่นทดสอบทำให้ทีมรับสายเข้าได้หรือไม่?

ไม่ได้ รุ่นทดสอบปัจจุบันยังไม่เปิดสายเข้า แม้ workspace จะมี is_beta: true ก็ตาม

ขอสิทธิ์ใช้งานให้ทีมของคุณ

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

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

UnifyPort API

เปลี่ยนการเชื่อมต่อข้อความให้เป็น pipeline ผลิตภัณฑ์ที่เสถียร

เริ่มจากการส่งผ่าน API เดียว แล้วส่งข้อความขาเข้าทั้งหมดกลับสู่ระบบธุรกิจของคุณด้วย event มาตรฐาน