แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

วิธีสร้างบอท Facebook Messenger (คำแนะนำ)

ฟีเจอร์“ messenger bots” ของ Facebook นั้นไม่มีอะไรใหม่และมีบอทที่น่ากลัวมากมายอยู่แล้ว อย่างไรก็ตามแหล่งข้อมูลเกี่ยวกับวิธีสร้างบอทของคุณเองนั้นหายากและขาดคำอธิบายสำหรับผู้ที่ยังใหม่กับ API กราฟของ Facebook ขณะนี้บอทของ Messenger ต้องการให้คุณใช้ URL การโทรกลับของเว็บแคมที่ปลอดภัย SSL (เพิ่มเติมในภายหลัง) และการตั้งค่า SSL นั้นไม่เหมาะสำหรับทุกคนและยังต้องเสียเงินด้วย

ในบทความนี้ฉันจะแนะนำคุณตลอดกระบวนการสร้าง bot messenger Facebook อย่างง่ายเพราะเอกสารของ Facebook ค่อนข้างอธิบายได้ไม่ดี เราจะตั้งค่าแอพคลาวด์ที่ใช้โปรโตคอล https โค้ดบอตใน Node.js (ซึ่งเป็นจาวาสคริปต์ภาษาฝั่งเซิร์ฟเวอร์) ใช้ git เพื่อส่งรหัสไปยังแอปพลิเคชันคลาวด์และทดสอบบน Facebook Messenger

ตั้งค่า Bot

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

เมื่อเสร็จแล้วคุณสามารถทำการตั้งค่า bot ต่อไปได้ ทำตามขั้นตอนด้านล่าง:

1. เปิดตัวเทอร์มินัล

2. คุณต้องมีไดเรกทอรีแยกต่างหากสำหรับเก็บรหัสของคุณ

  • สร้างไดเรกทอรีใหม่
    mkdir testbot
  • เปลี่ยนไดเรกทอรีทำงานของคุณเป็นไดเรกทอรีที่คุณเพิ่งสร้างขึ้น
    cd testbot

3. ถัดไปเริ่มต้นแอปพลิเคชั่นโหนด
npm init

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

4. ติดตั้งแพ็คเกจ
npm install express body-parser request --save

  • คำสั่งจะทำงานและให้คำเตือนบางอย่าง; ไม่สนใจพวกเขา

5. ใน Finder ให้เปิดไดเรกทอรี“ testbot ” ที่คุณสร้างขึ้นและค้นหาไฟล์ชื่อ“ package.json “; เปิดสิ่งนี้ในเครื่องมือแก้ไขเช่น Sublime Text

6. ในไฟล์นี้เราจำเป็นต้องเพิ่มบรรทัด
"start": "node index.js"

  • อย่าลืมผนวก ", " ที่ท้ายบรรทัดก่อนหน้า

7. ถัดไปสร้างไฟล์ใหม่ใน Sublime Text และใส่รหัสต่อไปนี้ภายใน:

[js]

var express = ต้องการ ('ด่วน');
var bodyParser = ต้องการ ('body-parser');
var ร้องขอ = ต้องการ ('ร้องขอ');
แอป var = express ();

app.use (bodyParser.urlencoded ({Extended: false}));
app.use (bodyParser.json ());
app.listen ((process.env.PORT || 3000));
app.get ('/' ฟังก์ชัน (req, res) {
res.send ('นี่คือเซิร์ฟเวอร์ TestBot');
});
app.get ('/ webhook', ฟังก์ชัน (req, res) {
if (req.query ['hub.verify_token'] === 'testbot_verify_token') {
res.send (req.query [ 'hub.challenge']);
} อื่น {
res.send ('โทเค็นตรวจสอบไม่ถูกต้อง');
}
});

[/ js]

บันทึกไฟล์นี้เป็น index.js

หมายเหตุ: ในบรรทัดที่ 13 ค่าของ 'hub.verify_token' ถูกตั้งค่าเป็น ' testbot_verify_token' โปรดจำค่านี้ไว้เนื่องจากจะใช้เมื่อสร้าง webhook ใน Facebook

สร้างที่เก็บ Git

ตอนนี้เราได้ตั้งค่าการจัดการการโทรกลับของ bot แล้วเราต้องส่งรหัสไปที่ Heroku เพื่อที่เราจะต้องสร้างพื้นที่เก็บข้อมูลคอมไพล์ในไดเรกทอรีของเรา

หมายเหตุ: “ git” เป็นระบบควบคุมเวอร์ชันสำหรับไฟล์และรหัสซอฟต์แวร์ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับวิกิพีเดีย

การสร้างที่เก็บ git นั้นทำได้ง่ายและใช้คำสั่ง Terminal เพียงไม่กี่คำเท่านั้น

หมายเหตุ: ตรวจสอบให้แน่ใจว่าคุณอยู่ในไดเรกทอรี“ testbot ” ในเทอร์มินัล คุณสามารถทำได้โดยพิมพ์คำสั่ง pwd ลงใน Terminal

ทำตามขั้นตอนเหล่านี้เพื่อสร้างที่เก็บ git:

1. git init

2. git add .

3. git commit -m "Register Facebook Webhook"

ติดตั้ง Heroku

ก่อนที่เราจะเข้าสู่หน้านักพัฒนาของ Facebook เราจำเป็นต้องมี URL ติดต่อกลับที่ Facebook สามารถพูดคุยได้ URL นี้จำเป็นต้องใช้ โปรโตคอล https ซึ่งหมายความว่าเราจำเป็นต้องติดตั้งใบรับรอง SSL บนเว็บไซต์ของเรา แต่นี่เป็นคู่มือเริ่มต้นสำหรับบอทผู้ส่งสารของ Facebook ดังนั้นอย่าสับสนกับสิ่งต่าง ๆ เราจะใช้ Heroku เพื่อปรับใช้รหัสของเรา Heroku มอบ URL https ให้กับแอปพลิเคชันของคุณและมีแผนฟรีที่ตรงกับความต้องการของเรา (ขั้นพื้นฐานมาก)

ไปที่เว็บไซต์ Heroku และลงทะเบียนด้วยตัวคุณเอง

หมายเหตุ: ในฟิลด์ที่ระบุว่า "เลือกภาษาพัฒนาหลักของคุณ" ให้ใช้ "ฉันใช้ภาษาอื่น"

เมื่อเสร็จแล้วให้ติดตั้งแถบเครื่องมือ Heroku สำหรับระบบปฏิบัติการของคุณ (Mac สำหรับฉัน) และติดตั้ง สิ่งนี้จะทำให้คุณสามารถเข้าถึง Heroku บนเทอร์มินัล (หรือพรอมต์คำสั่งบน Windows)

ต่อไปเราจะสร้างแอพใน Heroku ซึ่งจะเก็บรหัสทั้งหมดไว้สำหรับบอทของเรา ทำตามขั้นตอนด้านล่าง:

1. เปิดตัวเทอร์มินัล

2. พิมพ์ heroku login

  • คุณจะถูกขอให้ป้อนอีเมลและรหัสผ่านของคุณ
  • พิมพ์อีเมลของคุณกด Enter; จากนั้นพิมพ์รหัสผ่านของคุณแล้วกด Enter
  • คุณจะเข้าสู่ระบบ heroku

3. พิมพ์ heroku create

  • สิ่งนี้จะสร้างแอปใน Heroku และให้การเชื่อมโยงหลายมิติแก่คุณ โปรดทราบว่าลิงก์กำลังใช้โปรโตคอล https ง่ายใช่มั้ย

4. ตอนนี้คุณสามารถส่งรหัสแอพของคุณไปที่ Heroku
git push heroku master

5. เมื่อเสร็จแล้วแอปของคุณจะใช้งานได้จริงและคุณสามารถเยี่ยมชมลิงค์ในเบราว์เซอร์ของคุณเพื่อตรวจสอบว่าทุกอย่างทำงานได้ดี ควรเปิดหน้าเว็บที่มีคำว่า“ นี่คือ TestBot Server

ตั้งค่า Facebook

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

1. ไปที่ Facebook และสร้างหน้าใหม่

  • คุณสามารถสร้างหน้าในประเภทใดก็ได้ที่คุณต้องการ ฉันเลือก บริษัท / องค์กรด้วยเหตุผลใดก็ตาม

2. ขั้นตอนถัดไปที่ Facebook แสดงนั้นเป็นทางเลือกและสามารถข้ามได้

3. จากนั้นตรงไปที่เว็บไซต์ของผู้พัฒนา Facebook

  • ที่มุมขวาบนเลื่อนเมาส์ไปที่“ แอพของฉัน ” จากนั้นคลิกที่“ เพิ่มแอพใหม่ ” จากเมนูแบบเลื่อนลง

  • คลิกที่ " การตั้งค่าพื้นฐาน " เมื่อ Facebook แจ้งให้คุณเลือกแพลตฟอร์ม

4. กรอกรายละเอียดสำหรับชื่อแอพของคุณและที่อยู่อีเมลติดต่อ

  • เลือก“ แอพสำหรับหน้า ” ในหมวดหมู่
  • คลิกที่ " สร้างรหัสแอป "

5. คุณจะถูกนำไปที่แผงควบคุมสำหรับแอปของคุณ บนแถบด้านข้างนำทางไปยัง“ + เพิ่มผลิตภัณฑ์ ” และเลือก“ Messenger ” โดยคลิกที่ปุ่ม“ เริ่มต้นใช้งาน

6. เลือก“ ตั้งค่า Webhooks

7. กรอกข้อมูลในฟิลด์ที่จำเป็นแทนที่“ Callback URL” ด้วย URL ของแอพ Heroku, ตรวจสอบ Token ด้วยโทเค็นที่ใช้ในไฟล์ index.js และเลือกฟิลด์การสมัครสมาชิกต่อไปนี้:

  • message_deliveries
  • ข้อความ
  • message_optins
  • messaging_postbacks

หมายเหตุ: ตรวจสอบให้แน่ใจว่าคุณต่อท้าย“ / webhook ” กับ Callback URL เพื่อให้ index.js เรียกใช้ฟังก์ชันที่จำเป็นเมื่อ Facebook พยายาม ping URL มันสามารถตรวจสอบ“ ยืนยันโทเค็น” ได้

8. คลิกที่ " ยืนยันและบันทึก "

9. ในส่วน“ การ สร้าง Token ” คลิกที่“ เลือกหน้า ” และเลือกหน้าที่คุณสร้างไว้ก่อนหน้านี้

สิ่งนี้จะสร้าง“ การเข้าใช้งานหน้าโทเค็น ”, บันทึกไว้ที่อื่น; คุณจะต้องการในภายหลัง

10. ถัดไปคุณจะต้องสร้างแบบสอบถาม POST สำหรับแอปของคุณโดยใช้ Page Access Token ที่สร้างขึ้นในขั้นตอนสุดท้าย สิ่งนี้สามารถทำได้ง่ายในเทอร์มินัล เพียงเรียกใช้คำสั่งต่อไปนี้ แทนที่ PAGE_ACCESS_TOKEN ด้วย Page Access Token ที่คุณสร้าง

curl -X POST“ //graph.facebook.com/v2.6/me/subscribed_apps?access_token=PAGE_ACCESS_TOKEN”

คุณควรได้รับการ“ ตอบสนอง” ที่ ประสบความสำเร็จ ใน Terminal

ติดตั้ง Heroku เพิ่มเติม

ใช่เรายังไม่ได้ทำ ไม่เกือบ

1. ไปที่เว็บไซต์ Heroku และเข้าสู่ระบบด้วยรหัสอีเมลของคุณ

2. ค้นหาแอปของคุณใน“ แดชบอร์ด” แล้วคลิก

3. ไปที่แท็บการตั้งค่า

4. คลิกที่“ เปิดเผยการกำหนดค่า Vars

5. เพิ่ม PAGE_ACCESS_TOKEN เป็น " config var " และคลิก " เพิ่ม "

การเข้ารหัส Bot ที่เกิดขึ้นจริง

ตอนนี้เราเสร็จแล้วกับงานเสี้ยงฮึดฮัดแสดงความไม่พอใจเราสามารถมุ่งเน้นในสิ่งที่สำคัญจริงๆ: ทำให้บอทตอบสนองต่อข้อความ ในการเริ่มต้นเราจะออกแบบบอทที่สะท้อนข้อความที่ได้รับ เมื่อปรากฎว่างานง่าย ๆ นี้ต้องใช้โค้ดจำนวนมากในการทำงาน

1. การ เข้ารหัสผู้ฟังข้อความ

ก่อนที่บอทจะสามารถสะท้อนกลับข้อความได้นั้นจะต้องสามารถฟังข้อความได้ มาทำกันก่อนดีกว่า

ในไฟล์ index.js เพิ่มรหัสต่อไปนี้:

[js]

app.post ('/ webhook', ฟังก์ชัน (req, res) {
var events = req.body.entry [0]. ข้อความ;
สำหรับ (i = 0; i <events.length; i ++) {
var event = events [i];
if (event.message && event.message.text) {
sendMessage (event.sender.id, {text: "Echo:" + event.message.text});
}
}
res.sendStatus (200);
});

[/ js]

ฟังก์ชั่นนี้ทำหน้าที่ตรวจสอบข้อความที่ได้รับหรือไม่จากนั้นตรวจสอบว่ามีข้อความในข้อความหรือไม่ หากพบข้อความในข้อความที่ได้รับมันจะเรียกใช้ฟังก์ชัน sendMessage (แสดงในภายหลัง) ผ่าน ID ของผู้ส่งและข้อความที่จะส่งกลับ สิ่งสำคัญคือต้องเข้าใจค่าต่อไปนี้และความหมาย:

  • event.message.text เป็นข้อความที่ได้รับในข้อความ ตัวอย่างเช่นหากมีคนส่งข้อความ“ Hello” ไปยัง bot ของเราค่าของ event.message.text จะเป็น“ Hello”
  • event.sender.id เป็นรหัสของบุคคลที่ส่งข้อความถึงบอท สิ่งนี้เป็นสิ่งจำเป็นเพื่อให้บอทรู้ว่าใครจะตอบสนอง

2. การเข้ารหัสฟังก์ชั่น sendMessage

ให้โค้ดฟังก์ชั่น“ sendMessage” ตอนนี้

[js]

ฟังก์ชั่น sendMessage (ผู้รับ ID ข้อความ) {
คำขอ ({
url: '//graph.facebook.com/v2.6/me/messages'
qs: {access_token: process.env.PAGE_ACCESS_TOKEN},
วิธีการ: 'POST'
json: {
ผู้รับ: {id: ผู้รับ ID},
ข้อความ: ข้อความ
}
}, ฟังก์ชัน (ข้อผิดพลาด, การตอบสนอง, เนื้อหา) {
ถ้า (ผิดพลาด) {
console.log ('ข้อผิดพลาดในการส่งข้อความ:', ข้อผิดพลาด);
} อื่นถ้า (response.body.error) {
console.log ('ข้อผิดพลาด:', response.body.error);
}
});
};

[/ js]

ฟังก์ชัน“ sendMessage” ใช้สองพารามิเตอร์:

  • recipientId
  • ข่าวสาร

ต้องการรหัสผู้รับเพื่อให้สามารถส่งข้อความถึงผู้ใช้ที่ถูกต้องได้

ข้อความเป็นข้อความจริงที่จะส่งในการตอบกลับ

3. ผลักดันการเปลี่ยนแปลงสู่ Heroku

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

1. เปิดตัวเทอร์มินัล

2. เปลี่ยนไดเรกทอรีเป็นไดเรกทอรี testbot ของคุณ
cd testbot

3. ทำตามขั้นตอนต่อไปนี้:

  • คอมไพล์เพิ่ม
  • หมายเหตุ: มี“.” ที่ส่วนท้ายของ“ git add”
  • คอมมิทคอม - m“ คอมมิทแรก”
  • คอมไพล์ดัน heroku มาสเตอร์

4. ตอนนี้ส่งข้อความไปที่หน้าของคุณและบอทจะสะท้อนข้อความกลับไปหาคุณ

การตอบสนองตามเงื่อนไขหรือที่รู้จักกันว่าการสร้าง Bot อย่างชาญฉลาด

เราสามารถใช้การจับคู่ข้อความเพื่ออนุญาตบอตผู้ส่งข้อความ Facebook ของเราให้ตอบกลับตามคำหลักพิเศษบางอย่าง

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

1. การเข้ารหัส functionalResponses ฟังก์ชั่น

[js]

ฟังก์ชัน conditionalResponses (ผู้รับ, ข้อความ) {
text = text || "";

var what = text.match (/ what / gi); // ตรวจสอบว่าสตริงข้อความมีคำว่า "what"; ไม่สนใจกรณี
varGadget-Info.com = text.match (/ beebom / gi); // ตรวจสอบว่าสตริงข้อความมีคำว่า "beebom" หรือไม่ ไม่สนใจกรณี
var who = text.match (/ who / gi); // ตรวจสอบว่าสตริงข้อความมีคำว่า "who"; ไม่สนใจกรณี
var you = text.match (/ you / gi); // ตรวจสอบว่าสตริงข้อความมีคำว่า "คุณ" หรือไม่; ไม่สนใจกรณี

// หากข้อความมีทั้ง "อะไร" และ "beebom" ให้ทำดังนี้:

if (what! = null &&; Gadget-Info.com! = null) {
ข้อความ = {
ข้อความ: "Beebom เป็นเว็บไซต์ที่ให้บริการทรัพยากรด้านเทคโนโลยียินดีต้อนรับ"
}
sendMessage (ผู้รับ ID ข้อความ);
กลับจริง
}

// หากข้อความมีทั้ง "ใคร" และ "คุณ" ให้ทำดังนี้
if (who! = null && you! = null) {
ข้อความ = {
ข้อความ: "ฉันถูกขอให้ไม่พูดถึงตัวตนของฉันทางออนไลน์"
}
sendMessage (ผู้รับ ID ข้อความ);
กลับจริง
}

// หากไม่มีสิ่งใดที่ตรงกันกลับเท็จเพื่อดำเนินการต่อการทำงานของฟังก์ชั่นภายใน
กลับเท็จ
};

[/ js]

ในบรรทัดที่ 4 ถึง 7 เราได้กำหนดตัวแปรขึ้นอยู่กับการจับคู่สตริงที่ได้รับกับคำเฉพาะ ส่วนที่ดีที่สุดเกี่ยวกับการใช้“ text.match ()” คือการใช้นิพจน์ปกติ (ปกติเรียกว่า regex อ่านเพิ่มเติมได้ที่นี่) มันดีสำหรับเราเพราะนี่หมายความว่าตราบใดที่แม้แต่ส่วนหนึ่งของคำในข้อความที่ได้รับนั้นตรงกับคำใดคำหนึ่งที่เราพูดถึงใน text.match () ตัวแปรจะไม่เป็นโมฆะ ซึ่งหมายความว่าหากข้อความที่ได้รับคือ "Beebom คืออะไร", "var what" และ "var beebom" จะไม่เป็นโมฆะเนื่องจากคำว่า "What" มีคำว่า "what" ดังนั้นเราจึงได้รับการบันทึกจากการสร้างคำสั่งพิเศษสำหรับทุกรูปแบบที่บางคนอาจพูดว่า "อะไร"

2. การแก้ไขผู้ฟังข้อความ

นอกจากนี้เรายังต้องแก้ไขฟังข้อความที่เราเขียนเพื่อให้แน่ใจว่ามันพยายามจับคู่ข้อความที่ได้รับกับฟังก์ชั่น "conditionalResponses" เช่นกัน

[js]

app.post ('/ webhook', ฟังก์ชัน (req, res) {
var events = req.body.entry [0]. ข้อความ;
สำหรับ (i = 0; i <events.length; i ++) {
var event = events [i];
if (event.message && event.message.text) {

// ก่อนอื่นให้ลองตรวจสอบว่าข้อความที่ได้รับมีคุณสมบัติเพียงพอสำหรับการตอบสนองตามเงื่อนไข
if (! conditionalResponses (event.sender.id, event.message.text)) {

// หากไม่เป็นเช่นนั้นเพียงแค่สะท้อนข้อความที่ได้รับกลับไปยังผู้ส่ง
sendMessage (event.sender.id, {text: "Echo:" + event.message.text});
}
}
}
res.sendStatus (200);
});

[/ js]

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

3. ผลักดันการเปลี่ยนแปลงสู่ Heroku

ก่อนที่คุณจะสามารถลองใช้คุณสมบัติใหม่คุณจะต้องผลักดันรหัสที่อัปเดตไปยังแอปที่โฮสต์ใน Heroku ทำตามขั้นตอนด้านล่างเพื่อทำสิ่งนี้:

1. เปิดตัวเทอร์มินัล

2. เปลี่ยนไดเรกทอรีเป็นไดเรกทอรี testbot ของคุณ
cd testbot

3. ทำตามขั้นตอนต่อไปนี้:

  • คอมไพล์เพิ่ม
  • หมายเหตุ: มี“.” ที่ส่วนท้ายของ“ git add”
  • git commit -m“ การเพิ่มความสามารถตามเงื่อนไข”
  • คอมไพล์ดัน heroku มาสเตอร์

4. ตอนนี้ส่งข้อความไปที่หน้าของคุณและบอทจะสะท้อนข้อความกลับไปหาคุณ

ฟังก์ชั่นมากยิ่งขึ้น

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

1. การแก้ไขผู้ฟังข้อความ

ฟังข้อความของเราในขั้นตอนนี้ใช้งานได้เพียงแค่ตกลง อย่างไรก็ตามมันไม่ได้จัดรูปแบบเป็นอย่างดีและถ้าเราต้องเพิ่มระดับที่ซ้อนกันถ้าคำสั่งเพื่อเพิ่ม "การ ตรวจสอบสภาพ " พิเศษมันจะน่าเกลียดอย่างรวดเร็วในการดูยากที่จะเข้าใจและดำเนินการช้าลง เราไม่ต้องการที่ตอนนี้เรา? มาทำการเปลี่ยนแปลงกันบ้าง

หมายเหตุ: มีบรรทัดของรหัสในตัวฟังข้อความที่อ่าน “ res.sendStatus (200)” บรรทัดนี้จะส่งรหัส 200 สถานะไปยัง Facebook โดยบอกว่าฟังก์ชั่นดำเนินการสำเร็จ ตามเอกสารของ Facebook, Facebook รอเป็นเวลาสูงสุด 20 วินาทีเพื่อรับสถานะ 200 ก่อนที่จะตัดสินใจว่าข้อความไม่ผ่านและหยุดการทำงานของรหัส

ฟังข้อความใหม่ของเรามีลักษณะเช่นนี้ เราใช้คำสั่ง“ res.sendStatus (200) ” เพื่อหยุดการทำงานของฟังก์ชันทันทีที่มีการจับคู่และเรียกใช้เงื่อนไข

[js]

app.post ('/ webhook', ฟังก์ชัน (req, res) {
var events = req.body.entry [0]. ข้อความ;
สำหรับ (i = 0; i <events.length; i ++) {
var event = events [i];
if (event.message && event.message.text) {

// ตรวจสอบข้อความก่อนถึงเงื่อนไขของ IntroResponse
if (introResponse (event.sender.id, event.message.text)) {
res.sendStatus (200);
}

// สำหรับการไม่มีชื่อที่ดีกว่านี้ฉันจึงเรียก newResponse นี้: p; ตรวจสอบนี้ต่อไป
ถ้าอื่น (newResponse (event.sender.id, event.message.text)) {
res.sendStatus (200);
}

// อื่น ๆ เพียงแค่สะท้อนกลับข้อความต้นฉบับ
อื่น {
// แทนที่ echo ด้วยรายการคำสั่งที่ถูกต้อง
sendMessage (event.sender.id, {text: "Echo:" + event.message.text});
}
}
}
res.sendStatus (200);
});

[/ js]

2. การเขียนโค้ดฟังก์ชัน newResponse

ฟังข้อความของเราตอนนี้ตรวจสอบข้อความกับชุดของเงื่อนไขใน “ newResponse” เช่นกัน แต่ก่อนอื่นเราต้องรหัสฟังก์ชั่น newResponse เราจะใช้ฟังก์ชันนี้เพื่อตรวจสอบว่าผู้ใช้ขอ คำแนะนำบทความ จาก theGadget-Info.com หรือเว็บไซต์ ค้นหาคำสืบค้น บนเว็บไซต์และ นำเสนอลิงค์ ไปยังผู้ใช้หรือไม่ อีกครั้งเราจะใช้นิพจน์ทั่วไปเพื่อจับคู่ข้อความกับคำหลักที่เฉพาะเจาะจง

[js]

ฟังก์ชั่น newResponse (ผู้รับ ID, ข้อความ) {
text = text || "";
var Recommend = text.match (/ Recommend / gi);
var random = text.match (/ random / gi);
var article = text.match (/ article / gi);
var iphone = text.match (/ iphone / gi);
var android = text.match (/ android / gi);
var mac = text.match (/ mac / gi);
var browser = text.match (/ browser / gi);
var vpn = text.match (/ vpn / gi);

// ตรวจสอบว่าผู้ใช้กำลังขอคำแนะนำบทความเลยหรือไม่
ถ้า (แนะนำ! = null && บทความ! = null) {
var query = "";
// หากมีการสอบถามบทความแนะนำให้ตรวจสอบหัวข้อที่ผู้ใช้กำลังค้นหา
if (android! = null) {
query = "Android";
} อื่น ๆ ถ้า (mac! = null) {
query = "Mac";
} else if (iphone! = null) {
query = "iPhone";
} อื่น ๆ ถ้า (เบราว์เซอร์! = null) {
query = "เบราว์เซอร์";
} else if (vpn! = null) {
query = "VPN";
}
sendButtonMessage (ผู้รับรหัสแบบสอบถาม);
ผลตอบแทนจริง
}
กลับเท็จ
};

[/ js]

เรากำลังใช้ฟังก์ชั่นที่กำหนดเองอื่นที่เรียกว่า “ sendButtonMessage” เพื่อส่งข้อความในกรณีที่ผู้ใช้ขอคำแนะนำบทความ เราจะสร้างสิ่งนี้ต่อไป

3. การเข้ารหัสฟังก์ชั่น sendButtonMessage

ฟังก์ชัน sendButtonMessage รับพารามิเตอร์สองตัวคือ ID ผู้รับ และ แบบสอบถาม รหัสผู้รับใช้เพื่อระบุผู้ใช้ที่จะต้องส่งข้อความและใช้แบบสอบถามเพื่อระบุหัวข้อที่ผู้ใช้ต้องการคำแนะนำบทความ

[js]

ฟังก์ชัน sendButtonMessage (recipientId, เคียวรี) {
var messageData = {
ผู้รับ: {
id: ผู้รับ
}
ข้อความ: {
เอกสารแนบ: {
ประเภท: "เทมเพลต",
เพย์โหลด: {
template_type: "ปุ่ม",
ข้อความ: "นี่คือสิ่งที่ฉันพบสำหรับ" + ข้อความค้นหา
ปุ่ม: [{
ประเภท: "web_url",
url: "//www.beebom.com/?s="+query,
ชื่อเรื่อง: "Beebom:" + ข้อความค้นหา
}]
}
}
}
};

callSendAPI (messageData);
}

[/ js]

เรากำลังใช้ฟังก์ชั่นที่กำหนดเองอีกครั้ง คราวนี้เพื่อส่งข้อความสุดท้ายพร้อมลิงก์บทความไปยังผู้ใช้ ฟังก์ชั่นนี้มีหลายวิธีคล้ายกับฟังก์ชั่น “ sendMessage” ที่ เราเขียนไว้ก่อนหน้านี้ แต่มีลักษณะทั่วไปมากกว่าในการรับข้อมูลข้อความที่เหมาะสมกับเราเพราะข้อมูลข้อความของเราเปลี่ยนไปตามการสืบค้นที่ผู้ใช้ทำ

4. การเข้ารหัสฟังก์ชัน callSendAPI

ฟังก์ชัน “ callSendAPI” ใช้พารามิเตอร์เดียวคือ “ messageData” พารามิเตอร์นี้มีข้อมูลข้อความทั้งหมดจัดรูปแบบอย่างถูกต้องตามกฎของ Facebook เพื่อให้ผู้ส่งสารสามารถแสดงข้อมูลดังกล่าวกับผู้ใช้ได้อย่างถูกต้อง

[js]

function callSendAPI (messageData) {
คำขอ ({
uri: '//graph.facebook.com/v2.6/me/messages'
qs: {access_token: process.env.PAGE_ACCESS_TOKEN},
วิธีการ: 'POST'
json: messageData

}, ฟังก์ชัน (ข้อผิดพลาด, การตอบสนอง, เนื้อหา) {
if (! error && response.statusCode == 200) {
var recipientId = body.recipient_id;
var messageId = body.message_id;

console.log ("ส่งข้อความทั่วไปที่มี id% s ไปยังผู้รับ% s สำเร็จ"
ข้อความรหัสผู้รับรหัส);
} อื่น {
console.error ("ไม่สามารถส่งข้อความ");
console.error (การตอบสนอง);
console.error (ข้อผิดพลาด);
}
});
}

[/ js]

5. ผลักดันการเปลี่ยนแปลงสู่ Heroku

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

1. เปิดตัวเทอร์มินัล

2. เปลี่ยนไดเรกทอรีเป็นไดเรกทอรี testbot
cd testbot

3. ทำสิ่งต่อไปนี้:

  • คอมไพล์เพิ่ม
  • หมายเหตุ: มี “.” อยู่ท้ายคำสั่งนั้น
  • git commit -m“ ปรับปรุงการตรวจสอบสภาพและการจัดรูปแบบ”
  • คอมไพล์ดัน heroku มาสเตอร์

4. ส่งข้อความเช่น“ แนะนำบทความเกี่ยวกับ Android” หรือ“ Beebom แนะนำบทความใด ๆ ในหัวข้อ Android” ให้ฉัน และบ็อตจะส่งข้อความที่มีรูปแบบสวยงามพร้อมลิงก์ที่คุณสามารถแตะเพื่อเปิดบทความที่เกี่ยวข้องกับการสืบค้นของคุณ

ขุดลึก

ตอนนี้คุณรู้วิธีเริ่มต้นใช้งานการพัฒนาบอท Messenger ของ Facebook แล้วให้อ่านเอกสารของ Facebook เกี่ยวกับวิธีพัฒนาบอท Messenger ของ Facebook แม้ว่าเอกสารจะไม่ดีสำหรับผู้เริ่มต้น แต่คุณไม่ได้เป็นมือใหม่อีกต่อไป คุณควรตรวจสอบเอกสารอย่างเป็นทางการและพยายามหาวิธีทำให้บอทของคุณฉลาดขึ้น ทีเซอร์: คุณสามารถส่งข้อความด้วยภาพและปุ่มได้เช่นกัน! เป็นไปได้ที่จะใช้บริการต่าง ๆ เช่น Wit.ai และ Api.ai เพื่อเขียนรหัส bot ของคุณและรวมเข้ากับ Facebook แต่ในความพยายามที่อ่อนแอของฉันในการใช้บริการเหล่านั้น Wit.ai ทำงานได้ไม่ดีและ Api.ai มีช่วงการเรียนรู้ที่คมชัดสำหรับผู้เริ่มต้น

คุณเคยพัฒนา bot messenger Facebook หรือไม่? ถ้าคุณมีคุณจะพัฒนามันอย่างไรและจะทำอย่างไร? คุณใช้บริการเช่น Wit.ai และ Api.ai เพื่อสร้างบอทของคุณหรือไม่? หากคุณยังไม่เคยลองใช้บอตไปพัฒนา bot messenger Facebook ของคุณเองทำให้มันฉลาดขึ้นและดีขึ้นและแจ้งให้เราทราบเกี่ยวกับประสบการณ์ของคุณในความคิดเห็นด้านล่าง

Top