แจ้งเตือนจาก fastlane ไป Line Messaging API
พอดีในทีมใช้ไลน์กันเยอะมาก (เป็นโซเชียวเดียวทีบริษัทเปิดให้ใช้) แล้ว jenkins dashboard ก็ไม่ค่อยมีคนดู เราเลยปรับตัวเองเข้าหา user (user ในที่นี้ก็ทีมหนะแหละ) โดยการแจ้งเตือนไปในไลน์กลุ่ม
ถ้าใครยังไม่รู้จัก fastlane ให้ไปอ่าน
ถ้าใครเป็นเรื่อง Line Messaging API อยู่แล้วให้เลื่อนข้ามลงไปหา เพิ่ม fastlane plugin ได้เลย
ขั้นตอนการหา groupID หรือ userID
เพื่อให้ channel ของ Line ใช้ส่งข้อความให้ถูกคนหรือกลุ่ม
สมัคร
ก่อนอื่นให้เข้าที่ https://developers.line.biz/ เพื่อทำการสมัครเพื่อความง่ายเชื่อว่าทุกคนมีบัญชี Line กันอยู่แล้ว ถ้าไม่มีก็สมัครซ เสร็จแล้วให้ทำการ Login ให้เรียบร้อย
- เข้าไปจะเจอหน้าตาประมาณนี้ให้กด
Create New Provider
- ตรง Provider Name กรอกชื่ออะไรก็ได้ตามใจชอบ เช่น
I’m Robot
- กด
Next
แล้วก็กดCreate
เป็นอันเสร็จสิ้น กลับบ้านได้ เอ้ยยังไม่จบ!
เสร็จแล้วก็จะได้หน้าตามาแบบด้านบน ให้กดที่ Create Channel
ตรง Messaging API
ทำการกรอกข้อมูลให้ครบถ้วน
- App icon: เหมือนรูปโปรไฟล์ในไลน์ (ไม่บังคับ แต่ผมหาวิธีเปลี่ยนทีหลังไม่เจอนะ 555)
- App name: ชื่อในไลน์ที่เราจะใช้ ได้เต็มที่ 20 ตัวอักษร เปลี่ยนชื่อทีหลังได้ แต่ถ้าเปลี่ยนแล้วต้องรออีก 7 วัน ถึงจะเปลี่ยนใหม่ได้
- App description: คำอธิบาย ได้ 500 ตัวอักษร
- Category และ Subcategory: ก็เลือกให้ตรงกับความต้องการ ของเรา ผมเลือก
ผู้เชี่ยวชาญ
,บุคคลในจินตนาการ
- Email address: กรอกเมลเราไปก่อน ถ้ามีอะไร Line อาจจะติดต่อเราผ่านทางเมลที่ได้ระบุไว้
- Privacy Policy URL: เป็น URL ที่เอาไว้ให้ user อ่านเรื่อง
นโยบายความเป็นส่วนตัว
ไม่ต้องใส่ก็ได้ - Terms Of Use URL: เป็น URL ของ
ข้อตกลงการใช้งาน
ไม่ต้องใส่ก็ได้
เสร็จแล้วกด Create
จะมีข้อตกลงการใช้งานของฝั่ง Line ขึ้นมาให้เราอ่าน อ่านให้เรียบน้อย แล้วกด “ยอมรับ”
กด ยอมรับ
แล้วจะมี Terms of Use
มาให้อ่านแล้วกดติ๊กเพื่อยอมรับ 2 อัน ยอมรับเสร็จ ก็กด Create
ได้เลย
ตั้งค่ายกที่ 1
สร้าง token ให้สามารถส่งข้อความผ่าน channel ได้
- พอได้มาแล้วให้กดที่ชื่อ channel ที่เราสร้างขึ้นมา
- เลื่อนลงมาหา
Messaging settings
ตรงChannel access token (long-lived)
ให้กดปุ่มIssue
- จะมี dialog ให้เราเลือกจำนวนชั่วโมงที่จะใช้งาน token นี้ได้ ค่าปริยายจะอยู่ที่ 0 ชั่วโมง คือ Token นี้จะใช้ได้จนกว่าจะมีการสร้างใหม่ ถ้าเราเลือกเป็นค่าอื่น ๆ จะได้สูงสุด 24 ชั่วโมง หลังจากได้มาแล้วเก็บเอาไว้ดี ๆ นะครับ
ตั้งค่ายกที่ 2
ต้องใช้ webhooks จะได้รู้ว่าเราต้องยิงเข้าห้อง ID หรือผู้ใช้งาน ID อะไร โดยดู log ผ่าน heroku ฟรี (ใครมีวิธีที่ง่ายกว่านี้มั่ง)
Use webhooks
จะเห็นว่าDisabled
อยู่ให้กดEdit
แล้วเลือกEnabled
แล้วกดUpdate
- ให้ไปที่ repo https://github.com/PH9/heroku-print-hook เลื่อลงมาข้างล่าง กด
Deploy to Heroku
ทำการสมัคร ตั้งค่าให้เรียบร้อย - เอาชื่อมากรอกใน
Webhook URL
กดUpdate
กดVerify
ถ้าขึ้นว่าSuccess
แปลว่ามาถูกทาง - ที่ heroku ให้กดที่
More
อยู่ขวาบน เลือกView Logs
แล้วพักไว้ก่อน ซึ่งเราอาจจะเห็น logs ก่อนหน้าที่เราได้กดVerify
ไป
ตั้งค่ายกที่ 3
ให้ channel เข้าไปในไลน์กลุ่มได้
- เลื่อลงมาตรง
Allow bot to join group chats
จะเห็นว่าDisabled
ซึ่งจะทำให้ channel นี้ปฎิเสธการเข้าห้องไลน์กลุ่ม ให้กดที่Set message
- จะเด้งอีกหน้านึงขึ้นมา ให้เลื่อนลงไปหาที่
Chat settings
แล้วให้เลือกที่Allow account to join groups and multi-person chats
จะมี dialog แสดงขึ้นมาให้กดOK
ณ จุด ๆ นี้ เท่าที่ลองทดสอบ เหมือนว่าไลน์กลุ่มจะ channel เดียวที่เข้าได้ คงกันบอทสองตัวคุยกัน
ตั้งค่ายกที่ 4
ให้มัน hooks มาที่ heroku ของเรา
- เลื่อลงมาอีกตรง
Using LINE@ features
ตรงAuto-reply messages
ให้เลือกSet message
แล้วจะเด้งอีกหน้านึงขึ้นมา - ให้ดูตรง
Webhooks
เลือกเป็นEnabled
เอา ID ของกลุ่ม
หรือของคนที่จะให้ channel แจ้งเข้าไป
กลับไปหน้าเดิมเลื่อนลงมาอีกจะเจอ Bot Informations
ให้หยิบมือถือมา scan QR code เพื่อ เพิ่ม channel มาเป็นเพื่อน หรือลงมาอีก จะเจอ Basic ID
ซึ่งจะเพิ่มเพื่อนผ่านชื่อนี้ก็ได้ Basic ID
บัญชีฟรีไม่สามารถเปลี่ยนได้
พอเพิ่มเพื่อนแล้วลองทักไปหามันดู แล้วไปดูที่หน้า log ของ heroku เราจะเจอ
ซึ่งถ้าเราจะเอาไว้แจ้งรายคนให้ดูตรง userId
ใน log แต่ถ้าจะแจ้งเข้ากลุ่มให้ ให้ลาก channel เข้ากลุ่ม แล้วดู log ที่ groupId
แล้วจดไว้
fastlane ละนะ
เพิ่ม plugin ใน fastlane
- เปิด terminal ที่เราชอบขึ้นมา
- พิมพ์ว่า
[bundle exec] fastlane add_plugin line_message
(ใน [] จะใส่หรือไม่ใส่ก็ได้นะครับ) - ถ้าเราไม่มี
Gemfile
มันอาจจะถามอะไรนิดหน่อยให้ตอบy
- ไฟล์
Gemfile, Gemfile.lock, fastlane/Pluginfile
จะเปลี่ยนไป หรือเพิ่มขึ้นมาถ้าเราไม่มีอยู่ตั้งแต่แรก เพราะเราเพิ่ม plugin line_message เข้าไป
ใช้งาน line_message ใน fastlane
line_message(
api_token: ENV["LINE_MESSAGE_API_TOKEN"],
to: ENV["LINE_MESSAGE_TARGET"],
messages: [{
"type": "text",
"text": "test ๆ"
}, {
"type": "sticker",
"packageId": "1",
"stickerId": "1"
}]
)
ตรง api_token
ให้ใส่ token ที่เราได้จาก Channel access token
ถ้าจำไม่ได้ กลับไปอ่าน ตั้งค่ายกที่ 1 สามาใช้ environment variable LINE_MESSAGE_API_TOKEN
ได้
ตรง to
ให้เราใส่ userID
หรือ groupID
ที่จะส่งข้อความไป สามารถใช้ environment variableLINE_MESSAGE_TARGET
ได้
เท่านี้ก่อนลองเรียกใช้ fastlane ดูครับ ว่าส่งข้อความได้หรือป่าว ลองเสร็จแล้วก็เอาไว้ว่างไว้ที่ ที่เหมาะผมเลยครับ
สำหรับ sticker list สามารถดูได้ที่
เนื่องจาก code ของ line_message ยังง่อย ๆ อยู่ โดยการเอา messages params ไปแปะทับตาม Line Messaging API เลย หากอยากช่วยพัฒนา ไปช่วยรุมกันได้ที่ https://github.com/PH9/fastlane-plugin-line_message
ถ้าต้องการอ่านเพิ่มเติมเกี่ยวกับ Line Messaging API สามารถไปอ่านได้ที่ https://developers.line.biz/en/reference/messaging-api
คำเตือน
ที่ไล่มาทั้งหมดนี้ เป็นการนำความสามารถของ Line bot มาใช้เป็นตัว notification ซึ่งทางที่ดีควรไปใช้ Line Notify ดีกว่า https://notify-bot.line.me 555
เพราะว่าการที่เรา push ข้อความไปทาง Line Bot ตัวฟรีจะทำได้ 500 ข้อความต่อเดือนเท่านั้น ส่วน Line Nofity จะส่งข้อความได้ 1,000 ข้อความต่อชั่วโมง หรือ 50 ภาพต่อชั่วโมง ซึ่งถือว่าเยอะมาก
และมีคนเขียนบทความไว้แล้ว และทำ lib ให้ fastlane แล้วด้วย ผ่าม ๆ
ในตอนนี้ Line Notify สามารถอยู่ห้องเดียวกับ Line Bot ได้ แต่ต้องเชิญ Line Bot เข้าก่อน แล้วค่อยเชิญ Line Notify
ขอบคุณหนุ่ยกับพี่สิน (http://sinj.menaruchi.com) มา ณ ที่นี้ด้วยนะครับ
สวัสดีครับ -/\-