สร้าง 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

2. ติดตั้ง module expressjs body-parser และ node-fetch
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 สร้าง Line Chat Bot ตอบด้วย Dialogflow แทบไม่ต้องเสียเงิน แม้จะมีผู้ใช้หลักแสนคน ด้วย Node js  Load Balancer Reviewed by amaloma on ตุลาคม 12, 2564 Rating: 5

ไม่มีความคิดเห็น

Advertisement

Main Ad