Line Notify การแจ้งเตือนจากเว็บเซอร์วิสทาง LINE
LINE ได้มีบริการแจ้งเตือนจากเว็บเซอร์วิสไปยังผู้ขอรับบริการ แต่ผู้ใช้งานจะต้องเพิ่ม Line Notify เป็นเพื่อนในบัญชีของท่านก่อน Line Notify สามารถส่งได้ทั้งคุณคนเดียวหรือเป็นกลุ่มก็ได้
ขั้นตอนการสมัครใช้งาน
1. ไปที่ https://notify-bot.line.me จากนั้นเลื่อนลงด้านล่างจะเจอ QR Code ให้เพิ่มเพื่อนโดยการสแกน QR Code นี้
2. จากนั้นไปที่ เข้าสู่ระบบ ดังรูป
3. ให้ใส่ Email และ รหัสผ่าน ในขั้นตอนนี้ผู้อ่านต้องไปตั้งค่าบัญชี LINE ของท่านให้ลงทะเบียนผ่านอีเมล์ได้ก่อน
4. เมื่อคลิก Log in แล้วตรงส่วนเข้าสู่ระบบจะเปลี่ยนเป็นชื่อบัญชีของผู้ใช้นั้น ให้คลิกตรงรูปลูกศรชี้ลง(หมายเลข 1) แล้วคลิกที่ My page (หมายเลข2)
5. เลื่อนลงด้านล่างจากนั้นจะเห็นปุ่มที่มีข้อความว่า Generate token ดังรูปให้คลิกปุ่มเพื่อสร้าง Token
6. กรอกรายละเอียดและเลือกบัญชีปลายทางที่ต้องการรับการแจ้งเตือน
หมายเลข 1 ชื่อ Token
หมายเลข 2 ช่องค้นหาบัญชีปลายทางที่ต้องการส่งถึง
หมายเลข 3 ปุ่มสร้าง Token
จากตัวอย่าง ตั้งชื่อ Token ว่า “แปลงปลูกผักที่ 1” และเลือกบัญชีปลายทาง 1-on-1 คือบัญชีของเรานั้นเอง ผู้อ่านสามารถเลือกส่งไปยังกลุ่มได้เช่นกัน ให้สังเกตจากสีข้อความจะขึ้นเป็นสีเขียวนั้นหมายถึงท่านได้เลือกใช้บัญชีนั้น
กรณีเลือกส่งไปยังกลุ่ม *หากเลือกเป็นกลุ่มอย่าลืมเชิญ Line Notify เข้าไปในกลุ่มด้วยไม่อย่างนั้นข้อความแจ้งเตือนจะไม่ขึ้น
7. จากนั้นคลิกที่ปุ่ม Generate token จะปรากฏ Token ให้คัดลอกเก็บไว้ เพราะท่านจะได้เห็น Token นี้ครั้งเดียวเท่านั้นถ้าหากปิดหน้าต่างไปแล้วจะไม่สามารถเรียกดูได้อีก
8. เมื่อคลิกปุ่ม Close แล้วจะเห็นชื่อ Token ที่เราได้สร้างไว้ดังรูป หากต้องการยกเลิกให้คลิกปุ่ม Disconnect
ทดสอบการส่งข้อความแจ้งเตือน
การทดสอบ
1.ใส่ Token ที่ได้จากการขั้นตอนนี้ผ่านมาลงในช่อง Token
2.พิมพ์ข้อความที่ต้องการส่งลงในช่อง Messages
3.กดปุ่ม Send เพื่อส่ง
ช่อง Responses จะแสดงผลลัพธ์ทั้งหมดที่ เว็บเซอร์วิสส่งกลับมา
ผลลัพธ์ที่ Application LINE
ตัวอย่างการใช้งาน NodeMCU ส่งข้อความแจ้งเตือนไปยัง LINE
ตัวอย่างนี้จะให้ NodeMCU ส่ง LINE ทุกครั้งที่มีการกด ZX-SWITCH01
ตัวอย่างโปรแกรม
#include <ESP8266WiFi.h> //https://github.com/esp8266/Arduino
String LINE_TOKEN = <token LINE>;
#define buttonPin D1 // Define D1 as switch pin
#define ledPin1 D3 // Define D1 as LED pin
// Variables will change:
int ledState = HIGH; // the current state of the output pin
int buttonState; // the current reading from the input pin
int lastButtonState = LOW; // the previous reading from the input pin
const char* ssid = "your-ssid"; //Wifi Name
const char* password = "your-password"; //Wifi Password
void setup() {
pinMode(ledPin1, OUTPUT); // Set pin as output
pinMode(buttonPin, INPUT); // set pin as input
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
int reading = digitalRead(buttonPin);
// if the button state has changed:
if (reading != buttonState) {
buttonState = reading;
// only toggle the LED if the new button state is LOW
if (buttonState == LOW) {
ledState = !ledState;
Line_Notify(LINE_TOKEN, "กดปุ่ม ZX-SWITCH01"); // Call funtion Line_Notify();
delay(100);
}
}
digitalWrite(ledPin1, ledState); // set the LED:
}
void Line_Notify(String LINE_Token, String message) {
String msg = String("message=") + message;
WiFiClientSecure client;
if (!client.connect("notify-api.line.me", 443)) {
Serial.println("connection failed");
return;
}
String req = "";
req += "POST /api/notify HTTP/1.1\r\n";
req += "Host: notify-api.line.me\r\n";
req += "Content-Type: application/x-www-form-urlencoded\r\n";
req += "Authorization: Bearer " + String(LINE_Token) + "\r\n";
req += "Content-Length: " + String(msg.length()) + "\r\n";
req += "\r\n";
req += msg;
client.print(req);
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
// Read all the lines of the reply from server and print them to Serial
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println("closing connection");
}