PHP ส่งข้อความเข้ามือถือ ( SMS )ด้วย Nexmo SMS API
PHP ส่งข้อความเข้ามือถือ ( SMS )ด้วย Nexmo SMS API
อันที่จริงมีผู้ให้บริการ SMS Gateway อยู่หลายเจ้า ทั้งในไทยและต่างประเทศ ทั้งแบบมี API ให้นักพัฒนาได้ใช้งานและไม่มี API ให้ใช้งาน แต่โดยทั่วไปแล้ว ลักษณะการใช้งานก็จะไม่แตกต่างกันมาก ความหมายคือในด้านของการพัฒนา เขียนโปรแกรมจะเหมือนกัน
สำหรับ Nexmo SMS Gateway นั้น จะเป็นบริการส่งข้อความได้ทั่วโลก แบบมีค่าใช้จ่ายต่อข้อความ แต่เบื้องต้นเมื่อสมัครสมาชิกเราจะได้เครดิตฟรีมา €2 ไว้สำหรับทดสอบเบื้องต้น ซึ่งก็ส่งได้ประมาณ 20 ครั้ง ก็เพียงพอสำหรับการทดสอบเบื้องต้น ลองมาดูวิธีทดสอบส่ง SMS โดยใช้ PHP กันครับ
PHP ส่ง SMS ฟรี ด้วย Nexmo SMS API
- 1. สมัครสมาชิกที่เว็บไซต์ nexmo.com
- 2. สร้างไฟล์ php หรือ controller ตั้งชื่อว่า Sms.php
- 3. เข้าไปที่หน้า Dashboard ของ nexmo.com ไปที่ getting start จากนั้น copy key และ secret มากำหนดตัวแปรใน php ดังนี้
class Sms extends CI_Controller { public function __construct() { parent::__construct(); $this->load->library('unit_test'); } public function sendSMS(){ $to = "6685xxxxxx"; // รหัสประเทศไทย 66 และตามด้วยเบอร์ที่จะส่งข้อความไป $from = "codebee"; $api_key = "********"; // api key เอาจากหน้า dashboard $api_secret = "*************"; // secret key เอาจากหน้า dashboard $text = "Hello PHP SMS"; // ข้อความที่จะส่ง $fields = array( 'api_key'=>$api_key, 'api_secret'=>$api_secret, 'from'=>$from, 'to'=>$to, 'text'=>$text); $POST = ''; foreach($fields as $key=>$value) { $POST .= $key . "=" . $value . "&"; }
-
4. ใช้ความสามารถของ curl เพื่อส่งตัวแปรไปที่ rest api ของ nexmo
$url = 'https://rest.nexmo.com/sms/json'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $POST); $response = curl_exec($ch); echo($response);
- 5. ทดสอบการทำงานโดยการรันไปที่เมธอด sms/sendSMS หากเป็นเวอร์ชั่นฟรี ผลลัพธ์ที่ได้คือจะยังมีข้อความกำกับอยู่ว่าเป็น demo version ดังรูป
- 6. ระบบจะ return ข้อมูล json กลับมาแสดงข้อมูลสถานะการส่ง สำเร็จหรือไม่สำเร็จ เหลือเงินเท่าไหร่ และข้อความที่ส่งไปเมื่อสักครู่นี้ใช้เงินไปเท่าไหร่
{ "message-count": "1", "messages": [{ "to": "6685xxxxxx", "message-id": "0E000000A2BE2737", "status": "0", "remaining-balance": "1.86200000", "message-price": "0.02300000", "network": "52018" }] }