ส่งข้อมูลเข้า MS Teams ผ่าน Webhooks — Part 1

Metanon Jongkraijak (Ake)
3 min readJan 10, 2021

--

อยากแจ้งเตือนข้อมูลสำคัญเข้า MS Teams เหมือน LINE Notify บ้างมาลองดูกันครับ

ในบทความนี้จะสอนให้เราสามารถเขียนโค้ด Python อย่างง่ายเพื่อส่งข้อมูลไป Post ใน Channel ของ Microsoft Teams โดยใช้ Webhooks ซึ่งอยากให้ทุกคนได้อ่านลายละเอียด และ Concept ด้านล่างนี้ก่อนที่จะกระโดดข้ามไปลงมือทำกันนะครับ

Incoming Webhook Connector

บทความนี้จะไม่พูดถึงนิยามของคำว่า Webhook (ซึ่งมีให้อ่านเยอะใน Internet) แต่จำเป็นจะต้องอธิบายว่าเราสามารถเพิ่มความสามารถให้กับ MS Teams ได้หลายวิธี หนึ่งในนั้นคือ Connector ซึ่งเราสามารถสร้าง Connector ให้ใครใช้ก็ได้ลองไปหาวิธีดูกันนะครับ

ในบทความนี้เราจะเลือกใช้ Connector สำเร็จรูปที่มาอยู่แล้วบน MS Teams ชื่อว่า Incoming Webhook เป็นสิ่งที่จะช่วยให้เราสามารถส่งข้อมูลจาก Application ภายนอก เข้าไปสู่ Channel ได้โดยง่าย มักใช้ในการสร้างระบบแจ้งเตือน หรือติดตาม

สิ่งที่เรียกว่า Cards

เรามาทำความเข้าใจกันก่อนว่าข้อมูลที่เราจะ Post ลงไปใน Channel ได้นั้นจะจัดอยู่ในรูปแบบของ Cards โดยจะมีองค์ประกอบคือ ข้อมูล (ข้อความ, รูปภาพ, ลิงค์, อีโมจิ) และปุ่ม (ซึ่งจะใช้ในการ trigger เพื่อให้เกิด action เช่น บันทึกค่า, เปิดลิงค์ เป็นต้น) ซึ่งมีโครงสร้างในทางโค้ดเป็น JSON

Cards มีหลายประเภทให้เลือกใช้งาน ซึ่งจะมีข้อจำกัดเมื่ออ้างอิงจากเอกสาร(2020–01–10) เราจะพบว่าประเภทที่สามารถใช้ได้กับ Connector จะมีแค่ Office 365 connector card เท่านั้นแหละร้องเชี้ย!!! (ขออนุญาตหยาบคาย) ลองไปอ่านเอกสารแต่ละหน้าดูซิ เงื่อนไขเยอะไปหมด แต่ในที่สุดผมก็พบว่ามันก็มีวิธีอยู่แหละที่จะทำให้เราส่ง Cards ประเภทต่างๆ ผ่าน Connector ได้แต่ก็ไม่วายที่จะมีข้อจำกัดตามมาอยู่ดี

Adaptive Cards จัดเป็นประเภทหนึ่งของ Cards ที่ MS แนะนำให้ใช้ด้วยเหตุผลทั้งองค์กอบ ความสามารถต่างๆ และการใช้งาน Cross MS Products ถึงขั้นมีหน้าเว็บแยก https://adaptivecards.io/ ในบทความนี้จะแสดงให้เห็นถึงใช้งานทั้ง Adaptive Cards และ Office 365 connector card เพียงแค่สองประเภทนี้ก็ต่อยอดได้แล้วจ้า

ตัวอย่าง Office 365 connector card
ตัวอย่าง Adaptive Card

บทความนี้จะไม่พยายามอธิบายถึงโครงสร้าง JSON ของ Cards ผู้อ่านสามารถตามไปอ่านได้ที่เอกสารของ MS

!!! ข้อควรรู้ !!! การ mention ผู้คนลงไปใน Cards สำหรับ Connector นั้นตอนนี้ยังไม่รองรับจ้ากุมขมับอีกรอบกันไปเลยเพราะเราคาดหวังว่ามันจะช่วยไป Notify ให้คนๆนั้นมาอ่านหรือมา Action กับสิ่งที่เราต้อง Post ลงไป เอาละไปติดตามกันได้ว่า MS จะแก้ไขให้เมื่อไหร่กันน้าาา แน่นอนว่าตอนนี้ก็เหมือนได้แค่ Post ลงไปใน Channel ให้คนมาอ่านถ้าไม่อ่านก็จบกันจ้า

มาลุยกันเลยดีกว่า

ตั้งค่า Incoming Webhook Connector บน MS Teams

1)เลือก Channel ของ Teams ที่ต้องการกด จุดสามจุด ตรงมุมบนขวา แล้วเลือก Connectors ตามภาพด้านล่างนี้ได้เลย

2) ดำเนินการค้นหา Connector ที่ชื่อว่า Incoming Webhook แล้วกด Add ตามหน้าจอที่ปรากฎ

3) ตั้งค่าข้อมูลเกี่ยวกับ Webhook ไม่ว่าจะเป็นชื่อเรียก และรูปภาพ (ให้คิดว่าทั้งชื่อและรูปภาพเปรียบเสมือนคนที่จะคอยมาแจ้งเตือนเรา) เมื่อเรียบร้อยให้กด Create

4) เราก็จะได้ URL ในการเรียกใช้เพื่อ Post ข้อมูลมายัง Channel ที่ต้องการให้เรา Copy URL นี้เก็บไว้เพื่อจะได้ใช้เรียกตอนเขียนโค้ด Python กันครับ

5) หากเราทำทุกอย่างถูกต้องนอกจากจะได้ URL มาแล้วก็จะมี Post ที่แจ้งใน Channel ว่ามีคนได้เพิ่ม Connector เข้ามาดังภาพด้านล่างนี้ครับ

ติดตามอ่านต่อได้ที่

ส่งข้อมูลเข้า MS Teams ผ่าน Webhooks — Part 2

Reference

--

--