ThunderPhone 2.0 เปิดให้ใช้งานแล้วเริ่มใช้งานได้ด้วยตัวเอง ในราคาเริ่มต้นที่ 2 เซนต์/นาทีอ่านประกาศเปิดตัว

Developer cookbook

ตัวแปรต่อการโทร

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

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

เมื่อไม่ต้องการค่า ให้ละเว้น variables อย่าส่ง null (ระบบจะปฏิเสธด้วย 400)

เพลซโฮลเดอร์และค่าเริ่มต้น

You are calling {{name|Friend}} about account {{account_id}}.
The available appointment is {{ appointment_slot }}.

ชื่อคำนึงถึงตัวพิมพ์เล็กและใหญ่ และเป็นไปตามรูปแบบ [A-Za-z_][A-Za-z0-9_]* อนุญาตให้มีช่องว่างรอบ ชื่อได้ โดยช่องว่างหลัง | ถือเป็นส่วนหนึ่งของค่าเริ่มต้นและจะ คงไว้ {{name|Friend}} จะใช้ Friend เมื่อไม่มี name หรือมีค่าเป็น null; สตริงว่างคือค่าที่ระบุมาอย่างชัดเจน ค่าที่ไม่มีและไม่มี ค่าเริ่มต้นจะกลายเป็นสตริงว่าง และชื่อของค่าเหล่านั้นจะแสดงใน unresolved_variables ข้อความระหว่างวงเล็บปีกกาคู่ที่ไม่ใช่เพลซโฮลเดอร์ที่ถูกต้องจะถูกลบ ข้อความในวงเล็บปีกกาคู่ ภายในค่าที่ระบุแต่ละค่าจะถูกลบแยกกัน โดยค่าหนึ่งไม่สามารถลบ ข้อความพรอมต์โดยรอบหรือค่าอื่นได้ ตัวคั่นวงเล็บปีกกาคู่ที่ไม่เข้าคู่กัน จะถูกลบเช่นกัน ตัวอย่าง JSON ในพรอมต์ต้องไม่ใช้ {{ ค่าเป็นข้อความธรรมดา ไม่เคยถูกประเมินผล เป็นโค้ดหรือขยายซ้ำเป็นเทมเพลต

ตัวแปรยังสามารถปรากฏในพรอมต์ตอบรับ ข้อความวอยซ์เมลขาออก และข้อความประกาศขอความยินยอมเมื่อมีการส่งฟิลด์นั้นสำหรับ การโทร เอเจนต์ไม่มีฟิลด์ first_message แยกต่างหาก: ให้ใส่ คำสั่งเปิดบทสนทนาไว้ในพรอมต์ เพลซโฮลเดอร์วอยซ์เมล {agent_name} และ {org_name} ที่มีอยู่ยังคงใช้งานได้

ค่าสามารถเป็นสตริง ตัวเลข บูลีน หรือ null; บูลีนจะแสดงผลเป็น true และ false อักขระควบคุม Unicode (Cc) ยกเว้นขึ้นบรรทัดใหม่ (\n) แท็บ (\t) และการคืนบรรทัด (\r) อักขระรูปแบบ (Cf) ทั้งหมด และโค้ดพอยต์ ตัวแทน (Cs) จะถูกลบ; \r\n จะถูกปรับให้เป็น \n แต่ละค่า มีความยาวได้ไม่เกิน 2,000 อักขระเมื่อแสดงผล สตริงที่ระบุจะถูกทำความสะอาดและ ตัดทอนก่อนจัดเก็บเช่นกัน ออบเจ็กต์ต้นฉบับต้องมีขนาดไม่เกิน 32 KB ของ JSON แบบ UTF-8; ออบเจ็กต์ที่ใหญ่กว่าจะได้รับ 400 สำหรับคำขอโทร/เซสชัน ขณะที่ การนำเข้าแคมเปญจะรายงานแต่ละแถวที่ไม่ถูกต้องแยกกัน ระบบไม่ ยอมรับอาร์เรย์และออบเจ็กต์ที่ซ้อนกันเป็นค่า คีย์เมทาดาทาที่ไม่ตรงรูปแบบ (เช่น ส่วนหัว CSV ที่มี ช่องว่าง) จะยังคงถูกเก็บและส่งกลับ แต่ไม่สามารถอ้างอิงด้วยเพลซโฮลเดอร์ได้

แหล่งที่มาของค่า

API ขาออก

ส่ง variables พร้อมกับ agent_id ใน POST /v1/call:

{
  "from_number": "+15551234567",
  "to_number": "+14155550199",
  "agent_id": 12,
  "variables": {
    "name": "Ada",
    "account_id": "A-17",
    "appointment_slot": "Tuesday at 10 AM"
  }
}

ใช้งานได้กับ AI เอเจนต์ขาออกเริ่มต้นของหมายเลขโทรศัพท์ หรือกับ config.prompt แบบอินไลน์ คีย์ idempotency ไม่สามารถนำมาใช้ซ้ำกับตัวแปรที่แตกต่างกันได้

CSV แคมเปญ

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

webhook การกำหนดค่าแบบไดนามิก

บนเส้นทาง webhook การกำหนดค่าที่บล็อก ให้ส่งคืน AI เอเจนต์ที่บันทึกไว้ใน องค์กรของคุณ พร้อมค่าต่อการโทร:

{"agent_id": 12, "variables": {"name": "Ada", "account_id": "A-17"}}

คีย์ในคำตอบจะเขียนทับตัวแปรระดับคำขอ ขณะที่คีย์อื่นในคำขอยังคงอยู่ ค่าคำตอบเป็น null จะเลือกค่าเริ่มต้นของตัวยึดตำแหน่ง ออบเจ็กต์ที่ผสานแล้วต้องมีขนาดไม่เกิน 32 KB เช่นกัน คำตอบของ AI เอเจนต์ที่บันทึกไว้รองรับเฉพาะ agent_id และ variables; ให้ส่งคืนการกำหนดค่าแบบอินไลน์เมื่อคุณต้องการ แทนที่พรอมต์หรือการตั้งค่า คำตอบที่มี prompt จะใช้การกำหนดค่าแบบอินไลน์เสมอ: agent_id ใดก็ตามในคำตอบนั้นจะถูกละเว้น รวมถึงข้อมูลเมตาที่เป็น null หรือไม่ใช่จำนวนเต็ม พรอมต์แบบอินไลน์ยังต้องผ่านการตรวจสอบตามปกติ คำตอบ webhook แบบอินไลน์สามารถมี variables ได้เช่นกัน คำตอบ webhook ของ AI เอเจนต์ที่บันทึกไว้ ใช้การแบ่ง A/B ที่ปรับใช้แล้วของเอเจนต์กับทั้งการโทรและวิดเจ็ต; ตัวแปรจะแสดงผลหลังจากเลือกตัวแปรย่อยแล้ว สำหรับสายโทรศัพท์ขาเข้า ให้ใช้หมายเลขที่ไม่มี AI เอเจนต์ขาเข้า ที่กำหนดไว้ และกำหนดค่า webhook ระดับหมายเลขโทรศัพท์หรือระดับองค์กร; คีย์วิดเจ็ตใช้ mode="webhook" การแจ้งเตือนขาเข้าจากระบบปลายทางจะไม่ส่งคำตอบ การกำหนดค่าแบบบล็อก

API เซสชัน Widget และ Realtime

POST /v1/widget/session รองรับออบเจ็กต์ variables ระดับบนสุด คีย์ที่เผยแพร่ได้ของคีย์นี้ จะเลือก AI เอเจนต์ที่บันทึกไว้ คีย์โหมด webhook จะส่งต่อค่าเหล่านี้ไปยัง webhook การกำหนดค่า และผสานคำตอบตามที่อธิบายไว้ข้างต้น variables ของ widget/realtime ที่ส่งมาจากเบราว์เซอร์อยู่ภายใต้การควบคุมของไคลเอนต์ โดยจะถูกส่งต่อ ตามเดิมใน web.incoming หลังจากการตรวจสอบและการล้างสตริงตามที่อธิบายไว้ ข้างต้น และจะถูกส่งกลับใน completion webhook และประวัติการโทร อย่าถือว่าข้อมูลเหล่านี้ เป็นข้อมูลระบุตัวตนหรือข้อมูลการอนุญาตที่เชื่อถือได้

POST /v1/realtime/sessions รองรับ variables พร้อมกับ agent_id (หรือ config แบบอินไลน์) ฟิลด์เหล่านี้เป็นฟิลด์ของ API สร้างเซสชัน Realtime บริดจ์ Realtime WebSocket ไม่ส่งต่อตัวเลือก variables; ให้ระบุโดยตรงใน API สร้างเซสชัน ไคลเอนต์ Widget ต้องรวม variables ในเพย์โหลดเซสชันที่ส่ง ไป; การส่งต่อผ่าน SDK ไม่ได้เป็นส่วนหนึ่งของการเปลี่ยนแปลง API นี้ การทดสอบไมโครโฟนใน Builder และ การโทรทดสอบจำลองจะใช้ค่าเริ่มต้นและตัวยึดตำแหน่งที่ขาดหายไป แต่ไม่มีอินพุต ตัวแปรต่อการโทร

ค่าที่ส่งคืนหลังการโทร

GET /v1/calls, GET /v1/calls/{call_id}, telephony.complete และ web.complete มี variables และ unresolved_variables สุดท้ายที่ผสานแล้ว เพย์โหลด completion แบบเดิม ที่มี data.history จะมีข้อมูลเหล่านี้ด้วย:

{
  "variables": {"name": "Ada", "account_id": "A-17"},
  "unresolved_variables": ["appointment_slot"]
}

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

ความเข้ากันได้กับพรอมต์ที่มีอยู่

การเรนเดอร์ยังใช้กับพรอมต์ของเอเจนต์ที่บันทึกไว้และตัวแปร A/B ที่มีอยู่ การกำหนดค่าแบบอินไลน์สำหรับการโทรออกและแบบเรียลไทม์ รวมถึงพรอมต์ที่ส่งกลับจากเว็บฮุกการกำหนดค่า ตัวยึดตำแหน่ง {{name}} ที่ไม่รู้จักจะกลายเป็นข้อความว่าง แม้ไม่ได้ระบุ variables ตรวจสอบพรอมต์ที่มีอยู่ก่อนเปิดใช้งาน รวมถึงพรอมต์แบบอินไลน์/เว็บฮุกที่มาจากภายนอกซึ่ง ThunderPhone ไม่สามารถจัดทำรายการได้ การโทรผ่านไมโครโฟนใน Builder และการโทรจำลองใช้พฤติกรรมค่าเริ่มต้น/ข้อความว่างแบบเดียวกัน