ก๊วนซอฟท์แวร์ </softganz> SoftGang (Gang Software)

Web &amp; Software Developer Gang.

Application Programming Interface (API)

by Little Bear @1 ต.ค. 54 21:44 ( IP : 122...80 ) | Tags : Programing , PHP

ในที่สุดก็จะต้องเขียน API แน่นอน แต่วันไหนกันนะ

ได้อ่านตัวอย่างจาก Application Programming Interface (API) เป็นโปรแกรมที่ THSMS ได้เตรียมช่องทางการส่งข้อความผ่าน API ไว้หลายช่องทางโดย Support format ต่างๆอาทิเช่น POST, GET, REST, SOAP, XMLRPC พร้อมทั้งได้เตรียมโค๊ดตัวอย่างให้คณสามารถ Download ไปใช้งานได้ทันที

เลยขอตัวอย่างมาเก็บไว้เพื่อศึกษาในภายหลัง ขออนุญาตเจ้าของบทความไว้ที่นี้แล้วกันนะครับ

ค่าพารามิเตอร์ที่ส่งมาให้ API

ค่าตัวแปร ชนิด คำอธิบาย

method request ต้องการเรียกใช้ service อะไร โดยมีค่าที่เป็นไปได้คือ

credit = ตรวจสอบจำนวนเคดิตที่เหลือ

send = ส่งข้อความ

username request ชื่อผู้ใช้งานที่ Login เข้าสู่ระบบ

password request รหัสผ่านที่ใช้ Login เข้าสู่ระบบ

from request ชื่อ sender ที่ต้องการส่งโดยต้องขอชื่อจากทางเว็บไซต์ก่อน ตัวอย่าง 0000

to request หมายเลขของผู้รับเช่น 0899999999

message request ข้อความที่จะส่ง

status reply สถาณะที่ API ตอบกลับมา โดยมีค่าสองอย่างคือ success และ fail

message reply หาก status = fail จะมี message มาด้วยโดยจะบอกว่า fail เนื่องจากสาเหตุอะไร

uuid reply Universally Unique Identifier เป็นหมายเลขยืนยันขอความที่ส่ง โดยจะเป็นตัวยืนยันกับทาง API ว่าข้อความดังกล่าวได้ถูกส่งไปจริงหรือไม่

ตัวอย่างข้อความตอบกลับ โดยการเรียกใช้ method=credit

< ?xml version="1.0" encoding="UTF-8"?>

success
0

ตัวอย่างข้อความตอบกลับ โดยการเรียกใช้ method=send

< ?xml version="1.0" encoding="UTF-8"?>

OK
0001-3d2f07cc-4dbb4356-a040-4f869e19
7
success

ตัวอย่างการส่งข้อความโดยใช้ PHP + CURL

< ?php
$sms = new thsms();

$sms->username   = 'username';
$sms->password   = 'password';

$a = $sms->getCredit();
var_dump( $a);

$b = $sms->send( '0000', '0898765432', 'ทดสอบ');
var_dump( $b);

class thsms
{
     var $api_url   = 'http://www.thsms.com/api/rest';
     var $username  = null;
     var $password  = null;

    public function getCredit()
    {
        $params['method']   = 'credit';
        $params['username'] = $this->username;
        $params['password'] = $this->password;

        $result = $this->curl( $params);

        $xml = @simplexml_load_string( $result);

        if (!is_object($xml))
        {
            return array( FALSE, 'Respond error');

        } else {

            if ($xml->credit->status == 'success')
            {
                return array( TRUE, $xml->credit->status);
            } else {
                return array( FALSE, $xml->credit->message);
            }
        }
    }

    public function send( $from='0000', $to=null, $message=null)
    {
        $params['method']   = 'send';
        $params['username'] = $this->username;
        $params['password'] = $this->password;

        $params['from']     = $from;
        $params['to']       = $to;
        $params['message']  = $message;

        if (is_null( $params['to']) || is_null( $params['message']))
        {
            return FALSE;
        }

        $result = $this->curl( $params);
        $xml = @simplexml_load_string( $result);
        if (!is_object($xml))
        {
            return array( FALSE, 'Respond error');
        } else {
            if ($xml->send->status == 'success')
            {
                return array( TRUE, $xml->send->uuid);
            } else {
                return array( FALSE, $xml->send->message);
            }
        }
    }
    
    private function curl( $params=array())
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->api_url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query( $params));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        $response  = curl_exec($ch);
        $lastError = curl_error($ch);
        $lastReq = curl_getinfo($ch);
        curl_close($ch);

        return $response;
    }
}
?>

ตัวอย่างการส่งข้อความผ่าน Shell Script โดยส่งแบบ GET

#!/bin/bash

USERNAME=demo
PASSWORD=demo
FROM=0000
TO=0898765432
MESSAGE=Test
curl -q "http://www.thsms.com/api/rest?method=send&username=$USERNAME&password=$PASSWORD&from=$FROM&to=$TO&message=$MESSAGE"

ที่มา THSMS.COM