ลองเขียน Discord Webhook แจ้งเตือนการสร้าง ​Pull Request ใน Bitbucket ด้วย Cloud Functions for Firebase กันดีกว่า

Peerapong Samarnpong
te<h @TDG
Published in
3 min readMar 30, 2020

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

ขั้นตอนในการพัฒนา

  1. สร้าง Webhook ใน ​Discord
  2. ติดตั้ง Cloud Functions for Firebase
  3. สร้างฟังก์ชัน Cloud Functions สำหรับ Webhook

1.สร้าง Webhook ใน ​Discord

คลิกขวาที่ Server → Server Settings → Webhooks → Create Webhook

ตั้งชื่อ Webhook เลือก Channel และใส่รูปไอคอน สำหรับ Webhook
จากนั้นให้คัดลอก Webhook URL ไว้สำหรับใช้งาน

2. ติดตั้ง Cloud Functions for Firebase

ก่อนอื่นถ้ายังไม่ได้สร้าง Firebase Project สามารถทำตามขั้นตอนนี้ได้เลยครับ

จากนั้นก็เริ่มสร้างโปรเจคได้ โดยเราจะสร้าง directory เปล่า ๆ มาไว้ก่อน

mkdir discord-webhook
cd discord-webhook

จากนั้นเริ่ม init Cloud Functions for firebase ได้เลยครับ

firebase init functions

จากนั้นก็เลือกโปรเจคตามที่ต้องการเลยครับ

จากนั้นมีคำถามอีก 3 ข้อคือ

  • จะใช้ภาษาไหนในการเขียน ระหว่าง TypeScript กับ JavaScript (ในที่นี้ผมใช้ JavaScript)
  • จะเปิดใช้งาน ESLint ไหม (ผมเลือก ​No)
  • จะติดตั้ง npm dependencies เลยหรือไม่ (เลือก Yes ไปเลย)

จากนั้นรอสักครู่จนเห็นข้อความเหมือนด้านล่างก็แสดงว่าเรียบร้อยแล้ว

โดยโครงสร้างโปรเจกต์ก็จะเป็นไปหน้าตาประมาณนี้ ซึ่งปกติเราจะเขียน Code กันในไฟล์ index.js กัน

3.สร้างฟังก์ชัน Cloud Functions สำหรับ Webhook

ขั้นตอนนี้เราจะใช้ข้อมูลที่ส่งมาโดย Webhook ของ ​Bitbucket เพื่อจะส่งต่อไปยัง Webhook ของ Discord ซึ่งจะใช้รูปแบบดังนี้

เพื่อให้ได้ข้อความในรูปแบบด้านล่างนี้

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

npm install request --save
npm install request-promise --save

จากนั้นแก้ไขโค้ดดังด้านล่างนี้

จากนั้นก็ deploy เลยยยยยย

firebase deploy --only functions

จากได้ Url ในรูปแบบ

https://<project-name>.cloudfunctions.net/bitbucket

จากนั้นก็เอา Url ที่ได้ไปใส่ใน ​Bitbucket Webhook แล้วลองสร้าง Pull Request หรือ Update ลองดูได้เลย

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

References

--

--