เพิ่มเข้ารายการโปรด

ดู: 1094|ตอบ: 0

การเขียน api เพื่อส่ง sms

การเขียน api เพื่อส่ง sms ผ่าน sms gateway ด้วยภาษา PHP

บทความนี้สืบเนื่องมาจากผมได้รับงานจากลูกค้าตัวนึงเป็นเว็บประกาศขายอสังหาริมทรัพย์จึงมีความจำเป็นอย่างยิ่งที่สมาชิกผู้ลงประกาศจะต้องติดตามความเคลื่อนไหวที่เกิดขึ้นกับโพสของตัวเอง เช่นเมื่อมีคนมาคอมเมนท์โพสของสมาชิกระบบจะต้องแจ้งให้เจ้าของโพสทราบในทันที ซึ่งมีอยู่ 2 วิธีการคือ

1.ส่งอีเมลล์ ถ้าเล่น msn อยู่ก็ดีไปเพราะ msn จะ popup ให้ทราบในทันที แต่ถ้าไม่ได้เล่นล่ะครับ ก็รอกันไปกว่าจะได้เห็นก็อีตอนเช็คเมลล์นุ่นล่ะครับ
2.ส่ง sms ผ่าน sms gateway อันนี้รวดเร็วทันใจรู้ได้แทบจะในทันที ดีเลย์ไม่เกิน 1-2 นาที

ตอนนี้คุณคงเริ่มสงสัยแล้วล่ะสิว่า sms gateway คืออะไร?



sms gateway คือผู้ให้บริการส่ง sms ผ่านระบบ internet โดยที่ผู้ให้บริการจะคิดค่าบริการต่อการส่ง 1 sms อยู่ที่ไม่เกิน 1 บาท โดยที่หลายๆเจ้าเปิดให้เราสามารถใช้โค้ดจากเว็บของเราส่งค่าบางอย่างเข้าไปยังเซิฟเวอร์ของผู้ให้บริการ ด้วยวิธีการ GET หรือ POST ไปยัง url ที่ผู้ให้บริการระบุบางเจ้าอาจจะมีโค้ดตัวอย่างเป็นฟังก์ชั่นให้เอามาใช้กันได้เลย เรียกกันติดปากว่า API บางเจ้าก็ให้แค่รูปแบบ url มา ปัญหาของผมอยู่ตรงนี้แหละคับ เพราะลูกค้าของผมดันไปซื้อแพคเกจจากผู้ให้บริการที่มีแต่รูปแบบ url มาให้เท่านั้นครับ

เข้าเรื่องซะที เนื่องจากเค้าไม่มี api ให้ใช้ เอทำไงดีหว่า...สุดท้ายก็เลยรวบรวมความรู้ทั้งหมด(อันมีอยู่น้อยนิด) เขียน api ขึ้นมาใช้งานเองคับ

ตอนนี้ผมมีรูปแบบของ url ที่ผู้ให้บริการให้มาดังนี้

http://mailbit.co.th/Scripts/mgr ... SMS1&AccountID=<AccountID>&UserID=<UserID>&UserPass=<UserPass>&Phone=<PhoneNumber>&Text=<Text>&Sender=<Sender>

*ขออนุญาติโพส url จริง(เจ้านี้ราคาถูกมาก)ไม่ได้เกี่ยวข้องอะไรกะผมนะคับลูกค้าซื้อมาให้ใช้เลยยกตัวอย่างเฉยๆใครจะใช้บริการเจ้าใหนก็แล้วแต่นะครับผมเพียงนำเสนอหลักการเท่านั้น
จากที่ผมทำสีแดงไว้นั้นคือตัวแปรทั้งหมดที่เราจะต้องที่เราจะต้องแทนค่าลงไป
<AccountID>,<UserID>,<UserPass> เราจะได้รับหลังจากทำการซื้อแพคเกจแล้ว(เจ้าอื่นอาจจะมีแค่ Username,Password)
<PhoneNumber> คือหมายเลขโทรศัพท์ของผู้รับ sms
<Text> คือเนื้อหาที่เราต้องการส่ง
<Sender> คือชื่อที่จะแสดงให้ผู้รับเห็นว่าใครส่งมา(บางเจ้า/บางแพคเกจ จะไม่มีตัวเลือกนี้แต่จะแสดงเป็นหมายเลขโทรศัพท์ของ gateway ที่ส่งออกไป)

ตัวอย่าง url ที่ส่งได้จริงๆ เพียงแค่ก็อปแล้ววางลงในช่อง address bar หรือทำเป็นลิงค์ก็สมารถส่งได้เลย
http://mailbit.co.th/Scripts/mgr ... SMS1&AccountID=1234&UserID=5678&UserPass=91011&Phone=66876543210&Text=Test Send Message From sms gateway&Sender=M_IScyber

เจ้าของหมายเลข 0876543210 ก็จะได้รับ sms ข้อความว่า Test Send Message From sms gateway และเห็นชื่อผู้ส่งเป็น M_IScyber

*เฉพาะเจ้านี้จะต้องกรอก 66 แทน 0 ตัวหน้าครับ(ซึ่ง 66 ก็คือรหัสประเทศของไทยครับ)

การที่เราจะทำลิงค์หรือ redirect ไปที่ url ข้างต้นจะทำให้สมาชิกของเว็บเราสามารถมองเห็นค่าทั้งหมดที่เราส่งให้กับเกทเวย์ สำหรับคนที่พอมีความรู้ก็จะเดาได้ว่าแค่เปลี่ยนเบอร์โทร,เนื้อหา ก็สามารถส่งข้อความให้ใครก็ได้ ซึ่งแบบนี้ถือว่าความปลอดภัยเป็น 0 วันดีคืนดีเครดิตที่เราซื้อมาเป็นร้อยเป็นพัน อาจจะลดฮวบๆทั้งๆที่เวปไม่มีการเคลื่อนไหวเลยก็เป็นได้

ดังนั้นเราจะต้องแอบเปิด url ข้างบนแบบลับเฉพาะคนรู้ใจ (ว่าไปนั่น 555) ด้วยโค้ดด้านล่างนี้ครับ (หลอกให้อ่านมาตั้งยืดยาวเนื้อหาจริงๆมีแค่นี้แหละ 555)

<?php
//ฟังก์ชั่นสำหรับส่ง sms
function sendsms($AccountID,$UserID,$UserPass,$Phone,$Text,$Sender){

    $url="http://mailbit.co.th/Scripts/mgrqispi.dll?Appname=Port2SMS&prgname=HTTP_SimpleSMS1&AccountID=$AccountID&UserID=$UserID&UserPass=$UserPass&Phone=$Phone&Text=$Text&Sender=$Sender";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    $ressult=curl_exec($ch);
    return $result;
}

//วิธีเรียกใช้
$AccountID="1234";
$UserID="5678";
$UserPass="91011";
$Phone="66876543210";
$Text="Test Send Message From sms gateway";
$Sender="M_IScyber";
$result=sendsms($AccountID,$UserID,$UserPass,$Phone,$Text,$Sender);
echo $result;

/*
ตัวอย่างผลลัพธ์ที่ได้จากการใช้ฟังก์ชั่น :
OK: RequestID=123456 ผ่าน
Error: Authentication พิสูจน์ตัวตนไม่ผ่าน
Error: Account is not active แอคเคาท์ยังไม่แอคทีพ
Error: empty Phone_Number ไม่ได้ส่งหมายเลขโทรศัพท์ของผู้รับ
Error: empty Text ไม่ได้ส่งเนื้อหา
Error: Credit  หมดโควตาแพคเกจที่ซื้อมาแล้ว
*/
?>

จบแระ หวังว่าจะเป็นประโยชน์กับทุกท่าน (ที่หลงเข้ามา) ไม่มากก็น้อยขอบคุณที่ติดตามผลงานครับ
มีข้อสงสัยประการไดทิ้งโพสทิ้งไว้ได้ครับ ถ้ารู้ก็จะตอบให้ถ้าไม่รู้ก็ตัวใครตัวมันละค้าบบบบ


ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้