Loading...
Laravel9 http client กับ Line Notify Api
ผู้เขียน : กฤษฎาพงษ์ สุตะ
เผยแพร่เมื่อ : 1 ธันวาคม 2565 20:31:47 ปรับปรุงเมื่อ : 1 ธันวาคม 2565 20:38:23
ลิงก์ : https://www.ef101.xyz/บทความ/laravel9-http-client-กับ-line-notify-api

        มีคนทำ Package Line Notify เพื่อใช้กับ Laravel หลายอันเลย แต่รู้สึกว่าใช้แค่ส่งข้อความนิดเดียว ไม่อยากติดตั้ง Package เพิ่ม เลยเสียเวลาไปครึ่งวันกว่าจะสำเร็จ! แต่ก็คุ้มได้ความรู้ใหม่ๆ มาใช้กับงาน

 

       ในตอนแรกก็เอา guzzlehttp/guzzle มาใช้ตรงๆ แต่ติด Error เกี่ยวกับ Parameter ต้องเป็น array ขอเราก็เป็น array แล้วนิ ต้องแก้ยังไงไม่รู้

 

       ต่อมาเปลี่ยนมาใช้ http client ใน Laravel ซึ่งจริงๆ แล้วก็ใช้ guzzlehttp/guzzle นั้น แหละ ลองผิดลองถูกอยู่นาน ในที่สุดก็สำเร็จ ใช้แค่โค๊ดสั้นๆ 

 

ผมทดลองใน Controller โดยใช้ 

use Illuminate\Support\Facades\Http;

 

แล้วใน ฟังก์ชั่น (บางคนเขาเรียก Method) 

$url = "https://notify-api.line.me/api/notify";
$token = "xxxxxx";

$response = Http::withToken($token)->asForm()->post($url, ['message' => 'สวัสดี']);

ใช้โค๊ดแค่นี้ ก็ส่ง Line notify ได้แล้ว (ส่วนวิธีออก Token หาได้ใน Google มีคนสอนไว้เยอะมากๆๆ) 

 

มาอธิบายโค๊ดสักนิด

 

ส่วนของไลน์ API ต้องการอยู่ 3 ส่วน คือ

  1. 1. Authorization Bearer <access_token> ใช้
  2. withToken($token)
  3. 2. Content-Type   application/x-www-form-urlencoded OR multipart/form-data ใช้
  4. asForm()
  5. 3. message "ข้อความที่จะส่ง" ใช้
  6. post($url, ['message' => 'ข้อความที่จะส่ง']);
    
    //เมื่อ $url = "https://notify-api.line.me/api/notify";
  7. ตัวอย่าง
  8.     public function notify()
        {
            $url = "https://notify-api.line.me/api/notify";
            $token = "xxxx";
            $response = Http::withToken($token)->asForm()->post($url, ['message' => 'สวัสดี']);
            
             return $response;
        }

หลังจากนี้ ผมก็จำนำไปดัดแปลงใช้ config กับ .env ก็ token กับ url แล้วอาจจะเขียนเป็น function Helper เอาไว้เรียกใช้สั้นๆ

 

แค่นี้ก็เสร็จแล้วครับ ไม่ต้องติดตั้ง package อะไรเลย เพราะ guzzlehttp/guzzle ถูกใช้ใน Laravel อยู่แล้ว

ความคิดเห็น :
เข้าสู่ระบบก่อนจึงจะแสดงความคิดเห็นได้
Sign in with Google Sign in with Facebook Sign in with Github