สร้าง Line Chat Bot ตอบด้วย Dialogflow แทบไม่ต้องเสียเงิน แม้จะมีผู้ใช้หลักแสนคน ด้วย Node js Load Balancer
จากที่เราเคยเรียนรู้เรื่อง Line chat bot กับ Dialogflow มาแล้วนั้นจะเห็นได้ว่าใช้งานสะดวกมาก ติดเพียงอย่างเดียวคือ Dialogflow ES ตัวฟรีนั้น ใชัได้แค่ 180 requests per minute เราจะทำลายข้อจำกัดนี้ด้วยการทำ Load Balancer
บทความก่อนหน้านี้
Load Balancer คืออะไร
Load Balancer คือ ระบบเซิร์ฟเวอร์ที่มีประสิทธิภาพสูง รองรับการทำงานทีมีปริมาณงาน (Workload) เป็นจำนวนมากได้เป็นอย่างดี เกิดจากการนำเซิร์ฟเวอร์หลายๆ เครื่องที่มีหน้าที่การทำงานเดียวกันมาทำงานร่วมกันเพื่อกระจายปริมาณงานไปยังแต่ละเครื่อง
เรื่มโดยการสร้าง Dialogflow agent ขึ้นมาสักสองต้ว
1. สร้าง agent อีกตัว(ผมมีขอเดิมอยู่แล้ว)
2. Copy intents ของ agent ตัวแรกไปยังตัวใหม่
3. ไปที่ agent ตัวไหม่ > integrations เปิดการใช้งาน line
กรอกข้อมูลเหมือน agent ตัวแรก
4. Copy Webhook URL ของ agent ทั้งสองตัว เพื่อเอาไปเขียนโปรแกรม
มาสร้างโปรเจค Node js ทำเป็น Load Balancer
1. สร้างโฟลเดอร์และ สร้างโปรเจค เปิด Powershell พิมพ์คำสั่ง
mkdir load-balancer
cd load-balancer
npm init -y
npm add express body-parser node-fetch@2.6.1
3. เขียนโปรแกรมกันเลย สร้างไฟล์ app.js แล้วพิมพ์
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const port = 3000
const fetch = require('node-fetch');
let roundRobin = 0
const agentHook = [
'https://dialogflow.cloud.google.com/v1/integrations/line/webhook/433dffa9-b2b4-44db-8c87-15f77645ca00',
'https://dialogflow.cloud.google.com/v1/integrations/line/webhook/e73dada3-e3ae-4e26-b723-e2108114d9ba'
]
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.post('/webhook', async(req, res) => {
const body = req.body
if(++roundRobin >= agentHook.length) roundRobin=0
const agent = agentHook[roundRobin]
console.log('webhook', agent)
await fetch(agent, {
method: 'post',
body: JSON.stringify(body),
headers: { 'Content-Type': 'application/json' },
})
.then(res => res.json())
.then(json => {
console.log(json)
res.send(json)
});
// res.send(200)
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
4. รัน ngrok จำลอง localhost ให้เข้าจาก internet ได้ ถ้ายังไม่มีไป download
มาก่อนนะครับ
./ngrok http 3000
5. ไปที่ Line Messaging API เอา URL ที่ได้ไปใใส่ที่ Webhook URL ตามด้วย /webhook
6. จากนั้นเปิด Terminal ตัวใหม่ (ไม่ต้องปิด ngrok) รัน แล้วเปิด line ลอง
chat ดู
node app
เราจะเห็นได้ว่าเวลาเราพิมพ์ chat โปรแกรมของเราจะสลับส่งไปให้ Dialogflow
ทำให้ยอดขอไปไม่เลย limit การใช้งานฟรีครับ
ฝากกดติดตาม blog นี้ด้วยนะครับ
สามารถพูดคุยเพิ่มเติมได้ที่ facebook: Bulantech
สร้าง Line Chat Bot ตอบด้วย Dialogflow แทบไม่ต้องเสียเงิน แม้จะมีผู้ใช้หลักแสนคน ด้วย Node js Load Balancer
Reviewed by amaloma
on
ตุลาคม 12, 2564
Rating:
ไม่มีความคิดเห็น