Kotchasan PHP Framework

การส่งข้อความไปยังไลน์ด้วยบริการ LINE Notify API

การส่งข้อความไปยังไลน์บนเว็บไซต์ผ่านบริการ API ของ LINE Notify ไม่ได้ยากอย่างที่คิด ตัวอย่างนี้จะเป็นการสร้างคลาสสำหรับการส่งข้อความด้วยคชสาร ซึ่งมีใช้งานอยู่ใน GCMS

การส่งข้อความไปยัง Line ด้วยบริการของ LINE Notify ก็มีข้อจำกัดที่สำคัญคือ
  1. สามารถส่งข้อความไปยังตัวเองเท่านั้น หรือ
  2. สามารถส่งไปยังกลุ่มที่เราเป็นสมาชิกอยู่
ซึ่งถ้าไม่ซีเรียสมากนักก็พอประยุกต์ใช้งานได้มากโขอยู่ เช่น การแจ้งเตือนกระทู้หรือความคิดเห็นใหม่ หรือการโพสต์โฆษณาลงในไลน์กลุ่ม เป็นต้น

การใช้งาน ก่อนอื่นเราต้องเข้าไปขอ Token จากบริการของ LINE Notify ก่อน ซึ่งถ้าใครขอไม่เป็นคลิกที่นี่เลย (การขอ Token สำหรับ LINE Notify) แล้วนำ Token ที่ได้มากรอกแทนที่ access_token_here ในโค้ด PHP ด้านล่าง เสร็จแล้ว Save ไฟล์ไปที่ Gcms/Line.php ซึ่งตามตัวอย่างนี้จะได้เป็นคลาส \Gcms\Line
<?php
/**
 * @filesource Gcms/Line.php
 * @link http://www.kotchasan.com/
 * @copyright 2016 Goragod.com
 * @license http://www.kotchasan.com/license/
 */


namespace Gcms;

use \Kotchasan\Curl;

/**
 * LINE Notify
 *
 * @author Goragod Wiriya <admin@goragod.com>
 *
 * @since 1.0
 */

class Line
{
  /**
  * LINE Notify Access Token from https://notify-bot.line.me/th/
  *
  * @var string
  */

  protected $line_api_key = 'access_token_here';

  /**
  * เมธอดส่งข้อความไปยังไลน์
  *
  * @param string $message ข้อความที่จะส่ง
  * @return string คืนค่าข้อความว่างถ้าสำเร็จ หรือ คืนค่าข้อความผิดพลาด
  */

  public static function send($message)
  {
    if ($message != '') {
      $ch = new Curl;
      $ch->setHeaders(array(
        'Authorization' => 'Bearer '.$this->line_api_key
      ));
      $result = $ch->post('https://notify-api.line.me/api/notify', array('message' => $message));
      if ($ch->error()) {
        return $ch->errorMessage();
      } else {
        $result = json_decode($result, true);
        if ($result['status'] != 200) {
          return $result['message'];
        }
      }
    }
    return '';
  }
}

การใช้งานก็แสนง่ายเลยครับ เขียนคำสั่งสั้นๆ เพื่อส่งข้อความได้เลย
$error = \Gcms\Line::send('ทดสอบส่งข้อความ');

ในกรณีที่มีข้อผิดพลาดในการส่ง ข้อความแจ้งข้อผิดพลาดจะถูกส่งกลับมาที่ $error แต่หากการส่งข้อความสำเร็จ ค่าที่ถูกส่งกลับมาจะเป็นข้อความว่าง

ลองนำไปประยุกต์ใช้กันดูนะครับ