นานมาแล้วฉันได้สร้างเว็บแอปสำหรับองค์กร (พนักงานมากกว่า 200,000 คน) ความคิดเห็นเกี่ยวกับเว็บแอปแจ้งให้ฉันทำการทดลอง จะเกิดอะไรขึ้นถ้าฉันสร้าง WhatsApp แชทบอท เพื่อแก้ปัญหาการใช้งานเฉพาะแทนที่จะเป็นเว็บแอป? คนจะชอบดีกว่าไหม? จะมีประโยชน์กว่าไหม
แต่เรื่องราวมันยิ่งใหญ่กว่านั้น Chatbots มีศักยภาพมากมาย! ในบทช่วยสอน Chatbot ของ WhatsApp นี้ฉันต้องการแบ่งปันเส้นทางการเรียนรู้แนวทางปฏิบัติที่ดีที่สุดที่ฉันค้นพบและการคาดเดาของฉันเกี่ยวกับแอปเทียบกับคำถามเกี่ยวกับแชทบ็อต และอื่น ๆ : วันหนึ่งแชทบอทจะมาแทนที่แอปแบบเดิมทั้งหมดหรือไม่?
บริษัท ที่ฉันทำงานมีสำนักงานสำหรับพนักงานประมาณ 2,000 คนในใจกลางเมืองเทลอาวีฟ พื้นที่จอดรถมี จำกัด มากดังนั้นผู้คนจึงจอดรถในช่องว่างที่ออกแบบมาเพื่อการจอดซ้อนคันโดยที่รถคันหนึ่งจอดขวางอีกคันหนึ่ง ในที่จอดรถสองชั้นทุกคันคนขับคนแรกจะจอดด้านในและที่จอดที่สองด้านนอก
ก่อนที่จะมีแอพมีกระดานขนาดใหญ่ คนขับรถทุกคนทำเครื่องหมายว่าจอดรถที่ไหนชื่อและหมายเลขโทรศัพท์ ก่อนออกจากสำนักงานพนักงานขับรถต้องตรวจสอบว่ามีใครขวางรถหรือไม่ ถ้าเป็นเช่นนั้นพวกเขาจะต้องโทรหาคนขับรถอีกคนและหวังว่าพวกเขาจะไม่อยู่ระหว่างการประชุมเพื่อที่พวกเขาจะได้ไปและเคลื่อนรถออกไปให้พ้นทาง
เพื่อให้กระบวนการดีขึ้นฉันได้สร้างเว็บแอป
มันง่ายมาก ไม่มีส่วนหลัง ไม่มีการโฮสต์เซิร์ฟเวอร์ ไม่มีการบำรุงรักษาฐานข้อมูล ไม่มีแม้แต่กรอบ UI ใด ๆ ไม่มี webpack และไม่มีบันเดิล JS เลย! JavaScript เพียงวานิลลา
โฮสต์โดยใช้การโฮสต์เพจแบบคงที่ฟรีของ GitHub ฐานข้อมูลคือ FireBase ดังนั้นเราจึงมีการสนับสนุนแบบเรียลไทม์และการสนับสนุน JSON และไม่จำเป็นต้องมีส่วนหลัง
อินเทอร์เฟซผู้ใช้นั้นตรงไปตรงมา ผู้ใช้จะเห็นจุดจอดรถทั้งหมดและคลิกที่ที่ว่างเพื่อกรอกรายละเอียด หากจอดไว้แล้วระบบจะดึงข้อมูลจากที่จัดเก็บในตัวเครื่องของเบราว์เซอร์ หากคลิกที่ช่องที่ลงทะเบียนพวกเขาจะเห็นรายละเอียดการติดต่อที่เกี่ยวข้องและสามารถเลือกโทรหาคนขับได้
ทำงานได้ดีเกือบหนึ่งปี การพัฒนาน้อยกว่าหนึ่งวันช่วยและประหยัดเวลาสำหรับคนจำนวนมากซึ่งเป็นการลงทุนที่ดี
วันหนึ่ง Facebook ประกาศว่าพวกเขากำลังจะเปิดตัว API สำหรับ WhatsApp วันรุ่งขึ้นพี่ชายของฉันซื้อ Amazon Echo ที่มี Alexa ในช่วงเวลานั้นฉันก็เริ่มเห็น Google Assistant ทุกที่
ฉันเริ่มคิดว่าบางทีโลกกำลังเคลื่อนไปสู่แชทบอทดังนั้นฉันควรทดลอง ผู้ใช้ต้องการใช้แชทบอทหรือไม่? ฉันจะต้องให้การสนับสนุนน้อยลงหรือไม่? มันจะแนะนำคุณสมบัติใหม่ ๆ โดยใช้ประโยชน์จากโครงสร้างพื้นฐานที่แตกต่างกันหรือไม่?
ฉันได้รับข้อเสนอแนะบางอย่างเกี่ยวกับแอปพลิเคชันเว็บปกติและฉันเชื่อว่ามันอาจตอบสนองได้หากฉันจะสร้างแชทบอท WhatsApp:
สิ่งสำคัญคือต้องจำไว้ว่าผู้พัฒนาแพลตฟอร์มแชทชอบ โทรเลข หรือ WhatsApp ทำงานทั้งวันทั้งคืนเป็นเวลาหลายปีเพื่อให้แอปมีเสถียรภาพ ด้วยการใช้ทรัพยากรของพวกเขาและการพัฒนาเพียงเครื่องมือขนาดเล็กสำหรับตอบคำถามนั่นจะทำให้การบำรุงรักษาของนักพัฒนาแพลตฟอร์มแชทต้องทำงานหนัก สิ่งที่ฉันต้องทำคือเจาะลึกวิธีสร้างแชทบอท WhatsApp
ทันทีที่ฉันเริ่มพัฒนาแชทบ็อตผู้ช่วยจอดรถใหม่ฉันก็รู้ว่าไอเดียนี้ยอดเยี่ยมแค่ไหน การเพิ่มคุณลักษณะใหม่ ๆ ทำได้ง่ายและรวดเร็วมากและฉันไม่จำเป็นต้องทำการทดสอบตั้งแต่ต้นจนจบด้วยซ้ำ
ไม่มีสัญญาณ? ไม่มีปัญหา.
ทวีต
ไม่เพียงแค่นั้นฉันไม่ต้องการกระบวนการ CI / CD ที่ซับซ้อนอีกต่อไป ถ้ามันทำงานในโปรแกรมจำลองการแชทมันจะทำงานได้ทุกที่ ไม่ .apk
, ไม่มี Xcode, ไม่มี App Store หรือ Google Play Chatbot สามารถส่งข้อความถึงผู้ใช้ได้โดยที่ฉันไม่จำเป็นต้องลงทะเบียนอุปกรณ์ใช้ PubSub หรือบริการที่คล้ายกันสำหรับการแจ้งเตือนแบบพุชหรือบันทึกโทเค็นของผู้ใช้ ไม่จำเป็นต้องมีระบบตรวจสอบสิทธิ์ - ฉันใช้หมายเลขโทรศัพท์ของผู้ใช้เพื่อระบุตัวตน
ไม่มีสัญญาณ? ไม่มีปัญหา. ฉันไม่จำเป็นต้องเพิ่มการสนับสนุนออฟไลน์โดยใช้ไฟล์ Manifest: WhatsApp มอบให้ฉันนอกกรอบ ข้อความจะออกไปในไม่ช้าพอเมื่อผู้ใช้ไปที่ระดับบนที่ wifi ดีกว่า
จากนั้นฉันก็รู้ว่าทุกครั้งที่แพลตฟอร์มแชทจะแนะนำฟีเจอร์ใหม่แอพของฉันจะได้รับประโยชน์จากมันทันที ว้าว - ตอนนี้เป็นการลงทุนที่ดีจริงๆ (เพื่อความเป็นธรรมนอกจากนี้ยังมีความเสี่ยงที่คุณลักษณะใหม่ ๆ อาจ จำกัด ฟังก์ชันการทำงานหรือสร้างการเปลี่ยนแปลงที่ไม่สมบูรณ์ซึ่งต้องใช้ความพยายามในการพัฒนามากขึ้นดังนั้นควรพิจารณาอย่างรอบคอบก่อนดำเนินงานที่สำคัญทางธุรกิจ)
ในการสร้างแชทบอทของ WhatsApp ความท้าทายแรกคือการรับข้อความจาก WhatsApp ไปยังโปรแกรมของคุณ ทางออกที่ง่ายที่สุดที่ฉันพบคือใช้หมายเลขโทรศัพท์ Twilio ที่ใช้ร่วมกัน มีไว้เพื่อการพัฒนาเท่านั้นเมื่อย้ายไปใช้งานจริงนักพัฒนาจะต้องการใช้หมายเลขโทรศัพท์เฉพาะ
หมายเลขฟรีของ Twilio แต่ละหมายเลขจะแชร์กับผู้ใช้ Twilio จำนวนมาก ในการแยกผู้ใช้ปลายทางของแอปออกจากแอปของผู้ใช้ Twilio อื่น ๆ ผู้ใช้ปลายทางจะต้องส่งข้อความที่กำหนดไว้ล่วงหน้าไปยัง chatbot
หลังจากผู้ใช้ส่งข้อความพิเศษไปยังหมายเลขที่แชร์ข้อความทั้งหมดจากหมายเลขของพวกเขาจะถูกส่งไปยังบัญชี Twilio และเว็บฮุกของคุณ ด้วยเหตุนี้จึงจำเป็นต้องใช้หมายเลขเฉพาะในการผลิตโดยไม่มีการรับประกันว่าผู้ใช้ที่ระบุจะต้องการใช้เพียงแอปเดียวกับหมายเลขที่แชร์ที่ระบุ
ใน“ แดชบอร์ด SMS ที่ตั้งโปรแกรมได้” ของ Twilio จะมีลิงก์“ WhatsApp Beta” อยู่ในแถบนำทางด้านซ้าย:
เมื่อคลิกแล้วนักพัฒนาจะเห็นหน้าที่มีตัวเลือก 'แซนด์บ็อกซ์'
ในการเชื่อมโยงผู้ใช้พวกเขาจะต้องส่งข้อความพิเศษไปยังหมายเลขที่ Twilio ให้ไว้ เมื่อผู้ใช้ทำเช่นนั้นเราสามารถเริ่มส่งข้อความถึงพวกเขาและประมวลผลข้อความจากพวกเขาผ่าน Twilio
ที่นี่คือ ตัวอย่าง ของการส่งข้อความโดยใช้ cURL:
curl 'https://api.twilio.com/2010-04-01/Accounts/{user_account}/Messages.json' -X POST --data-urlencode 'To=whatsapp:+{to_phone_number}' --data-urlencode 'From=whatsapp:+{from_phone_number}' --data-urlencode 'Body={escaped_message_body}' -u {user_account}:user_token
นี่เป็นข้อความธรรมดา แต่คุณยังสามารถแนบสื่อ (รูปภาพ ฯลฯ ) กับข้อความของคุณได้ นี่คือตัวอย่าง Node.js:
function sendWhatsApp(to, body, media) { const auth = 'twilio_clientid:twilio_api' const sendURL = 'https://api.twilio.com/2010-04-01/Accounts/{account_id}/Messages.json' const res = await fetch(sendURL, { headers: { Authorization: 'Basic ' + Buffer.from(auth).toString('base64'), }, method: 'POST', body: objToFORM( JSONRemoveUndefined({ To: 'whatsapp:+972' + to.replace(/-/g, '').replace(/^0/, ''), From: 'whatsapp:+18454069614', Body: body, MediaUrl: media, }), ), }) } function objToFORM(obj) { const params = new URLSearchParams() for (var a in obj) { params.append(a, obj[a]) } return params } function JSONRemoveUndefined(obj) { return JSON.parse(JSON.stringify(obj)) }
เพียงเท่านี้เราก็เริ่มส่งข้อความถึงลูกค้าได้แล้ว! แต่สิ่งสำคัญคือต้องจำข้อ จำกัด ทางเทคนิคที่สำคัญที่สุดสองประการของข้อความ WhatsApp:
การส่งข้อความนั้นค่อนข้างง่าย แต่การรับและประมวลผลข้อความนั้นง่ายกว่า
ในหน้า“ แซนด์บ็อกซ์” ของ Twilio นักพัฒนาสามารถกำหนดตำแหน่งที่ Twilio ควรส่งข้อความที่ได้รับจากหมายเลข WhatsApp ที่แชร์ ในระหว่างการพัฒนาบริการเช่น Ngrok หรือ Serveo สามารถให้ URL สาธารณะที่กำหนดเส้นทางไปยังเครื่องของผู้พัฒนาในพื้นที่
ข้อความ Twilio WhatsApp มีลักษณะดังนี้:
{ 'NumMedia': '0', 'SmsSid': '{sms_id}', 'SmsStatus': 'received', 'Body': 'Example Message from user', 'To': 'whatsapp:+{phone_number}', 'NumSegments': '1', 'MessageSid': '{message_sid}', 'AccountSid': '{account_sid}', 'From': 'whatsapp:+{phone_number}', 'ApiVersion': '2010-04-01' }
นั่นคือทั้งหมดที่เราต้องการ เราสามารถใช้ภาษาโปรแกรมใดก็ได้เพื่อรับข้อความนี้แยกวิเคราะห์และพยายามทำความเข้าใจสิ่งที่ผู้ใช้ถาม สิ่งนี้อาจส่งผลให้เกิดการดำเนินการ CRUD บนฐานข้อมูลหลังจากนั้นบอทสามารถส่งข้อมูลที่เหมาะสม (หรือข้อความสำเร็จ / ล้มเหลว) ให้กับผู้ใช้ในการตอบกลับ นี่คือพื้นฐานของวิธีสร้างแชทบอท WhatsApp
ดังที่ได้กล่าวไปแล้วแชทบอทสามารถส่งข้อความฟรีสไตล์ไปยังผู้ใช้ที่ 'กำลัง' โต้ตอบกับพวกเขาเท่านั้นนั่นคือในช่วงเวลา 24 ชั่วโมง แต่ถ้าคุณต้องการส่งข้อความถึงผู้ใช้ใหม่หรือนอกหน้าต่างคุณต้องใช้เทมเพลตข้อความที่ได้รับการอนุมัติล่วงหน้า เป็นการป้องกันสแปม
ในกรณีการใช้งานของฉันฉันต้องการอัปเดตไดรเวอร์เมื่อมีคนบล็อกพวกเขาแม้ว่าพวกเขาจะไม่ใช่ผู้ใช้ Chatbot ก็ตาม ใน Twilio คลิกที่ 'ผู้ส่ง' และ 'กำหนดค่า'
นี่คือเทมเพลตที่ฉันเลือก:
{{1}} is blocking your exit from the parking lot. I will notify you when they leave.
หลายวันต่อมา Facebook อนุมัติเทมเพลตของฉันและฉันสามารถเริ่มส่งข้อความเหล่านั้นถึงทุกคนที่มี WhatsApp ไม่ใช่แค่คนขับรถที่ส่งข้อความถึงแชทบอท
การส่งข้อความจากเทมเพลตก็เหมือนกับการส่งข้อความปกติโดยใช้ API เดียวกัน WhatsApp จะเห็นโดยอัตโนมัติว่าตรงกับเทมเพลตและอนุมัติข้อความ
กลยุทธ์นี้น่าตื่นเต้นสำหรับฉันเมื่อฉันนึกภาพร้านค้าออนไลน์: บางทีวันหนึ่งผู้คนจะสามารถซื้ออะไรก็ได้โดยใช้แชทบอท มันจะง่ายเหมือนกับการส่งข้อความ WhatsApp และแนบรูปภาพ ลองนึกดูว่าผู้ใช้สามารถแนบเงินจริงกับข้อความ WhatsApp แต่ละข้อความได้หรือไม่ มันจะตรงไปตรงมามากในการซื้อของ ผู้ใช้จะสามารถซื้ออะไรก็ได้อย่างง่ายดายโดยพูดคุยกับแชทบอทของซัพพลายเออร์
ลองนึกภาพ Chatbot ที่มาแทนที่ Waze หรือ Google Maps คุณส่งข้อความปลายทางของคุณ แพลตฟอร์ม chatbot กำลังติดตามตำแหน่งของคุณและ chatbot จะส่งข้อความที่บันทึกไว้ให้คุณซึ่งเล่นโดยอัตโนมัติตามทิศทางการพูดแบบเรียลไทม์ของการนำทาง
ไม่ใช่เรื่องเพ้อฝัน ปัจจุบัน WhatsApp รองรับการแชร์ตำแหน่งแบบเรียลไทม์สิ่งที่พวกเขาต้องการคือตัวเลือกในการเล่นข้อความที่ได้รับโดยอัตโนมัติและวอยซ์ลา
ลองนึกถึงแชทบ็อต Waze หรือแท็กซี่แชทแทนแอพ Gett หรือ Uber คุณส่งข้อความบอกว่าคุณอยู่ที่ไหนแท็กซี่ก็มาถึงและคุณชำระเงินด้วย WhatsApp ง่ายมาก
ผู้อ่านบางคนอาจกำลังคิดว่า“ ผู้ใช้ไม่ชอบอินเทอร์เฟซแบบกราฟิกไม่ใช่แค่พิมพ์” ฉันเชื่อว่าแพลตฟอร์มแชทบอทจะให้เจ้าของแชทบอทมีตัวเลือกในการส่งปุ่มรูปภาพและกล่อง HTML ที่แท้จริงในระหว่างการแปลง Facebook รองรับแล้ว Webview สำหรับ Messenger . ผู้ใช้ไม่จำเป็นต้องติดตั้งอะไรเพียงแค่ใช้แอพส่งข้อความด่วนที่ต้องการ
ข้อดีเหล่านี้คือสาเหตุที่นักพัฒนาต้องการสร้างแชทบอท WhatsApp เพื่อจัดการงานสำคัญเช่นการให้ คำตอบที่เชื่อถือได้ทันที เกี่ยวกับการแพร่ระบาดของไวรัสโคโรนาเพื่อช่วยลดการแพร่กระจายของข้อมูลที่ผิด
สรุป:
ข้อดีของการเขียน Chatbot นั้นค่อนข้างชัดเจน นักพัฒนาที่พร้อมจะสร้างหนึ่งคนควรเริ่มต้นด้วยแชทบอทที่เข้าใจข้อความเดียว และจัดการได้ดี
แชทบอทควรยึดติดกับข้อความสั้น ๆ ผู้คนไม่อ่านข้อความยาว ๆ เมื่อคุณมีสิ่งสำคัญที่จะส่งซึ่งไม่สามารถแสดงออกอย่างรวบรัดได้คุณควรแบ่งข้อความให้เป็นข้อความเล็ก ๆ หลาย ๆ ข้อความ
แชทบอทที่มีบุคลิกจะได้รับดีขึ้น แม้แต่คำว่า 'มนุษย์พูด' ขั้นต่ำเพียงเล็กน้อยก็ยังไปได้ไกลเมื่อเทียบกับวิธีการ 'ข้อความระบบ': 'ฉันจะอัปเดตแผนที่ที่จอดรถให้คุณ' แทนที่จะเป็น 'ฐานข้อมูลได้รับการอัปเดตแล้ว' Chatbot ควรปล่อยให้ผู้ใช้รู้สึกว่าเป็นเครื่องจักรที่มีไว้เพื่อให้บริการผู้ใช้แทนที่จะเป็นกล่องดำที่ดำเนินการทางเทคนิคซึ่งพวกเขาอาจไม่อยู่ในสถานะที่จะเข้าใจ
บทช่วยสอนเกี่ยวกับ Chatbot ของ WhatsApp นี้ไม่ได้กล่าวถึงรายละเอียดของการแยกวิเคราะห์ไฟล์ ข้อความภาษาธรรมชาติ ผู้ใช้จะส่งไปยังแชทบอท แต่ผู้ให้บริการที่ต้องการของ บริการพัฒนา chatbot สามารถอ่านไฟล์ รหัสแหล่งที่มา ของบอทผู้ช่วยจอดรถของ WhatsApp (โดยเฉพาะ hackparkDialogFlow.ts
ซึ่งรับคำขอจากผู้ใช้เป็นการกระทำ) เพื่อให้รู้สึกว่าลักษณะนั้นทำงานอย่างไร
สำหรับบทความเชิงลึกเพิ่มเติมเกี่ยวกับวิธีตรวจจับข้อความของผู้ใช้ประเภทต่างๆในขณะเดียวกันก็ปฏิบัติตามแนวทางการเพิ่มการพึ่งพาในการเขียนโปรแกรมโปรดดู ApeeScape บทช่วยสอน TypeScript Chatbot .
ขอให้โชคดีกับการพัฒนาแชทบอท WhatsApp ของคุณเอง!
ในตอนแรก WhatsApp เป็นแอปส่งข้อความด่วนที่ให้ผู้ใช้ส่งและรับข้อความเสียงวิดีโอหรือไฟล์อื่น ๆ ไปยังผู้ใช้ WhatsApp คนอื่น ๆ ล่าสุด Facebook เปิดตัว API สำหรับ WhatsApp เพื่อให้สามารถส่งและรับข้อความอัตโนมัติผ่านแชทบอทได้
WhatsApp ใช้โซลูชันการเข้ารหัสแบบ end-to-end ดังนั้นจึงไม่มีใครรวมถึง WhatsApp ที่อ่านหรือตรวจสอบข้อความได้ ข้อความจะถูกเข้ารหัสและถอดรหัสบนอุปกรณ์ของผู้ใช้
ต้นทุนจริงของเครื่องคำนวณสเปรดชีตพนักงาน
หลายครั้งที่การพัฒนา chatbot สามารถลดเวลาในการพัฒนาได้อย่างมากเนื่องจากไม่จำเป็นต้องออกแบบและวางแผนอินเทอร์เฟซผู้ใช้แบบกราฟิกและไม่จำเป็นต้องปรับแต่งโซลูชันข้ามแพลตฟอร์ม
Chatbots เป็นอนาคตที่เปิดโอกาสให้มีรอบการพัฒนาที่เร่งขึ้นตอบสนองต่อการเปลี่ยนแปลงได้เร็วขึ้นโดยใช้แพลตฟอร์มที่มีอยู่และได้รับการดูแลอย่างดี Chatbots ใช้ประโยชน์จากความเข้ากันได้ของแพลตฟอร์มแชทกับอุปกรณ์จำนวนมากโดยอัตโนมัติ แชทบอทที่ชาญฉลาดช่วยให้ผู้ใช้มีอินเทอร์เฟซที่เป็นหนึ่งเดียวและใช้งานง่าย
Chatbots ช่วยให้ผู้ใช้ทำงานที่ต้องการได้อย่างง่ายดายโดยไม่ต้องติดตั้งแอพใหม่หรือเรียนรู้อินเทอร์เฟซผู้ใช้ใหม่ ด้วยการใช้แชทบอทผู้ใช้สามารถรับการอัปเดตจากบริการที่ใช้อยู่ได้อย่างง่ายดาย
ใช่. เมื่อเร็ว ๆ นี้ Facebook เปิดตัว API ใหม่สำหรับ WhatsApp ซึ่งช่วยให้ธุรกิจต่างๆสามารถส่งและรับข้อความ WhatsApp โดยใช้โปรแกรมได้ ในการเริ่มใช้ WhatsApp API นักพัฒนาจะต้องได้รับการยืนยันธุรกิจและได้รับการอนุมัติจาก WhatsApp หรือใช้ผู้ให้บริการบุคคลที่สาม