การใช้ RSS feed ส่งข้อมูลแจ้งเตือนผ่าน Teams Bot และ LINE Bot (free tier) ด้วย Power Automate

Narisorn Limpaswadpaisarn
EchoO365
Published in
5 min readApr 17, 2021

Content difficulty — Technical

ในตอนนี้เราจะมาลองใช้ Power Automate ดูว่าเราจะติดตามข่าวสารจาก web, blog หรือ service ที่เราชื่นชอบได้อย่างไร ซึ่งใช้เทคโนโลยีที่มีมานานแล้วอย่าง RSS Feed มาทำเป็น message ง่ายๆแจ้งเตือนเราผ่าน Microsoft Teams หรือ LINE

Power Automate เป็นระบบ low code workflow automation ตาม event basedที่สามารถต่อ connector ที่หลากหลาย เช่น Outlook, Gmail, Twitter, SQL Server, GitHub, SendGrid และอื่นๆ ใช้ในมุมตั้งแต่ service automation จนถึง document approval

สำหรับขั้นตอนที่ใช้ส่งหา LINE ตัว Power Automate จะใช้ Premium Connector ซึ่งจะมี License เพิ่มเติมอย่าง Plan ชื่อ Power Automate per user ($15/month ซึ่งเอาไปสร้างใน flow อิ่นๆได้) โดย user ขององค์กรก็สามารถ Trial ได้ https://powerautomate.microsoft.com/en-us/#home-signup

RSS Feed trigger -> Power Automate -> Send message as Bot ไปที่ MS Teams หรือ LINE

ที่มาของ Flow นี้

สืบเนื่องมาจากมีลูกค้าที่ได้ไป Consult ต้องการจะได้รับการแจ้งเตือนเมื่อมี Power BI Gateway (On-premise data gateway) version ใหม่มา ซึ่งถ้าใครที่ใช้ Power BI ระดับองค์กรจะต้องมีการตั้ง Window Server เพื่อลง Software ตัวนี้เพื่อช่วยให้ Power BI Report ที่เรา Publish ขึ้น cloud ไปแล้วสามารถทำ Schedule Refresh กับ SQL Server หรือ Data source อื่นๆ บน On-premise เราได้

ปัญหาคือเราต้องเข้าไปที่ server นั้นแล้วเปิด Software มาดูถึงจะรู้ว่ามี version ใหม่ให้ update ซึ่งทางทีมอยากจะรู้ให้เร็วกว่านี้ เลยต้องใช้วิธีดึง RSS Feed จาก Blog ของ Power BI เพื่อให้รู้ว่ามีข่าวสารอะไรบ้างรวมถึง Power BI Gateway version ใหม่ออกมาแล้วหรือยัง

Cloud service product อื่นของ Microsoft ก็จะมี blog แจ้งการ update features แก่ผู้สนใจเช่นกัน

ซึ่ง RSS Feed ของ Power BI ก็เป็น URL นี้

https://powerbi.microsoft.com/en-us/blog/feed/

โดยปกติแล้วก็สามารถ Add Connector ตรงจาก Channel ของ team นั้นๆ ใน Microsoft Teams ได้เลย หรือถ้าจะส่งไป service อื่นๆก็จะใช้ Power Automate ส่งเป็น flow bot เข้ามา และอาจจะส่งไปที่ Outlook เป็นการแจ้ง mail อีกอันก็ตามแต่

RSS Feed ก็จะเป็น service ใน format ที่เป็น XML
โดยเบื้องต้นก็ สามารถ Add ตัว RSS Feed ตรงจาก MS Teams ใน Channel นั้นๆได้เลย
ได้รับข่าวสารเมื่อ Blog ตอนใหม่ Published มา เช่นมี On-premise data gateway version ใหม่มาแล้ว หรือ Power BI Desktop version ใหม่ทำไรได้บ้าง

การสร้าง Flow

เข้าไปที่ https://make.powerautomate.com/ แล้วก็สร้าง + New flow ได้เลยแบบ Automated cloud flow

Trigger เป็น When a feed item is published

จากนั้นใส่ RSS Feed URL ตามต้องการแล้วก็ให้ Trigger ตาม PublishDate จากนั้น Action ก็ใช้ Post a message as the Flow bot to a user (หรือถ้าใครยิงเข้า Teams Channel ก็เป็น Post a message as the Flow bot to a channel) ในกรณีของ to a user ใส่ email ผู้รับที่ต้องการพร้อมทั้ง Dynamic content ที่เป็น parameter จาก RSS Feed เช่น

Primary feed Link: Link ของ Feed เรื่องนั้นๆ

Feed title: หัวข้อของ feed

Feed summary: รายละเอียดใจความของ feed เรื่องนั้นๆโดยย่อ

โดยใน Action Flow bot ของ ถ้าใส่ Primary feed link เราจะได้รับ link ของ feed นั้นๆแต่เป็น plain text แบบคลิกเป็น Hyperlink ไม่ได้ ทางแก้คือใส่ HTML syntax

[ข้อความของ Hyperlink](URL ของ Hyperlink)

แล้วอาจจะใช้ Filter คัดกรอง Topics หรือ ส่งต่อไปที่ Services อื่นก็ตามแต่
Dynamics content ก็มีหลายหลาย เช่น Feed published on ก็บอกวันที่ๆโพส เป็นต้น

จากนั้นก็รอจนใน web หรือ blog เจ้าของเขา upload content เข้ามาที่ blog หรือ web ของเขาแล้วเราก็จะได้แจ้งเตือน ก็จะมี Flow bot มาบอกเราใน MS Teams

Flow bot ส่งมาเรียบร้อย

ทดลองการใช้กับ LINE Bot

สำหรับคนที่อยากจะแค่ยิง Message เข้า Line Group ใน Account ของตัวเองให้ข้ามไปดู Part ของ LINE Notify ซึ่ง setup ง่ายกว่า ดูได้ที่ตอนนี้ครับ https://link.medium.com/1Nq0WMG5Vpb

เราจะส่งในรูปแบบ Bot ง่ายๆผ่าน Official LINE Account ซึ่งผมไปสมัครฟรีใน

ซึ่งก็จะผูกกับ LINE Account ID ผมและก็ต้อง Sign up อีก username/password นึงเป็น account ที่เราสามารถเข้าไปที่ Developer console เพื่อสร้างและดึง Message API ได้ ซึ่งใช้เป็นแบบ Free ก็อาจจะมี limitation บางอย่างแต่สำหรับการ Test เบื้องต้นก็ถือว่าโอเค

ถ้าไปหน้า Sign up ให้มาที่ https://account.line.biz/signup แล้วก็ลองสมัครแบบฟรี

หลังจากมี account ที่ Log In เข้าไป Developer console แล้วก็ให้ไปสร้าง Provider ซึ่งทำหน้าที่คล้ายๆ Workspace ของ LINE developer console นั้นๆ เราจะได้เป็น Admin role ซึ่งสามารถ invite คนในทีมมาเป็น member ใน Provider นี้เช่นกัน

สร้าง Provider เข้ามา
เมื่อ Provider สร้างแล้วก็คลิกเข้าไป
จะเห็นว่าตัวเองเป็น Admin และ Invite คนอื่นได้

ที่ Provider นั้น เราก็ไปสร้าง Channel ที่เป็น Message API เพื่อส่ง Bot

Create a channel
ใส่ รูป, ประเภท Message, Term of use ต่างๆให้เรียบร้อย
พอสร้างไปก็สามารถ Add line นี้ผ้าน QR Code ที่ระบบสร้างมาให้

อันนี้สามารถให้ทีมของเรา add ตัวนี้ไปเพื่อรับข่าวสารแบบ Broadcast

ลอง Add ไปก็จะเป็น Greetings ต่างๆที่เป็น Default template

ในกรณีการให้ bot ส่ง message ก็มีหลายแบบ เช่น ส่งเป็น Reply message ตอบ user คนนั้นๆ (ตาม user Id) หรือ Broadcast เป็น Push message ไปให้ทุกคนที่ Add เราเป็นต้น ซึ่งรูปแบบการส่งข้อความของ LINE มีทั้งการส่งเป็น text ธรรมดา, flex (message ที่สามารถปรับแต่ง style สีได้), stickers, emoji, audio, video, location, image หรือ เป็น template ปุ่มให้ user กด เป็นต้น

ดูรายละเอียดได้ที่ https://developers.line.biz/en/docs/messaging-api/message-types/

ส่ง Message ได้หลายแบบ

ก่อนอื่นเราต้องหา Channel Message Token ซึ่งเป็น Bearer Token ของ Bot เราก่อนเพื่อให้เรายิง Message ใน Power Automate (หรือ Postman, cURL ได้) ซึ่งของ LINE มีทั้งแบบ token ชั่วคราว 30 วัน (short-live) เมื่อหมดต้องยิง API ไปขอใหม่, แบบตั้งวันหมดอายุได้ และแบบไม่หมดอายุ (long-lived) เพื่อความง่ายในการทดสอบจะขอใช้แบบ long-lived เพราะได้มาง่ายสุดสามารถเข้าไป generate ได้ที่ Message API channel เลยหน้าเดียวกับที่เราไปเอา QR Code และจะอยู่ด้านล่างสุด

Channel access token

คราวนี้จะใช้ลอง RSS Feed ของ Medium บ้างซึ่ง user account ทุกคนจะมี RSS feed ตัวเองรวมไปถึง Publication ด้วยซึ่งระบบสร้างมาให้อยู่แล้ว

RSS Feed ของ user (เช่น ของ user ชื่อ narismadz)

https://medium.com/feed/@narismadz

RSS Feed ของ user (เช่น ของ Publication ชื่อ EchoO365)

https://medium.com/feed/echoo365

เราก็สามารถสร้าง RSS Feed Trigger มาได้โดยใส่ URL ไป และขอ action สร้างตัวแปร หรือที่เรียกว่า Initialize variable เพื่อเก็บ long-lived access token ที่ได้จาก Message API channel มา

Initialize variable ในตัวอย่างตั้งชื่อว่า ChannelAccessToken

จากนั้นสร้าง Action ชื่อ HTTP ขึ้นมาเพื่อยิง Message API ไปหา LINE Bot

HTTP เป็น Premium connector ซึ่งต้องมี paid license

ลองใส่ค่าดังนี้

Method: เป็นชนิด POST

URL: เนื่องจากเราจะ Broadcast ให้ user ที่ Add เราทุกคนของ LINE Message API ที่ใช้อยู่ V2 จะเป็น https://api.line.me/v2/bot/message/broadcast

Header 1: เป็น Content-Type และ application/json

Header 2: เป็น Authorization และ Bearer เว้นวรรคตามด้วย Token ที่เราใส่ใน Initialize variable (ในตัวอย่างนี้คือ ChannelAccessToken)

HTTP action

ส่วนของ Body ในตัวอย่างนี้ ผมจะส่ง chat ไป 3 ข้อ (ประเภท text) ความพร้อมกันคือ

  1. Feed title: ใช้ Dynamic content ของ RSS ชื่อ Feed title
  2. Publish On: เนื่องจาก Dynamic content ของ RSS ที่ชื่อ Feed publish on จะเป็น TimeStamp แบบ UTC จึงใช้ Expression เป็น format และ Timezone เป็น UTC+7 ซะโดยบ้านเราจะเป็น SE Asia Standard Time ซึ่งจะได้เป็น Expression ตามนี้ convertTimeZone(triggerOutputs()?[‘body/publishDate’],’UTC’,’SE Asia Standard Time’,’dd/MM/yyyy HH:mm’)
    ตัว single quote ต้องเปนฟันหนูตรงนะครับ
  3. Feed link: ใช้ Dynamic content ของ RSS ชื่อ Primary feed link

รายอะเอียดของ Body ในที่เป็นประเภท Text ใน Message APIอ้างอิงได้ที่ https://developers.line.biz/en/reference/messaging-api/#text-message

จากนั้นผมลอง Publish ตัว blog เรื่องใหม่ใน Medium ดูและก็รอซักครู่ (ขึ้นอยู่กับ Update interval ของ RSS feed เจ้านั้นๆ ของผมรอประมาณ 15 นาที) ก็จะเห็น Flow ทำงานส่งไปที่ LINE ได้สำเร็จ

ซึ่งพอเป็นระบบ workflow เราก็สามารถทำ action ต่อจาก HTTP ได้อีกเพื่อเชื่อมต่อไปยัง Service ต่างๆก็แล้วแต่เราออกแบบเลยครับทั้ง sequential หรือ parallel

Flow เริ่มทำงาน
ส่งมาใน LINE เรียบร้อย

--

--

Narisorn Limpaswadpaisarn
EchoO365

Office 365 and Modern Workplaces: Please follow my publication https://medium.com/echoo365 for Microsoft 365 & Power Platform Blog (In Thai)