เผยแพร่เมื่อ : 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. Authorization Bearer <access_token> ใช้
-
withToken($token)
- 2. Content-Type application/x-www-form-urlencoded OR multipart/form-data ใช้
-
asForm()
- 3. message "ข้อความที่จะส่ง" ใช้
-
post($url, ['message' => 'ข้อความที่จะส่ง']); //เมื่อ $url = "https://notify-api.line.me/api/notify";
- ตัวอย่าง
-
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 อยู่แล้ว