เนื่องจากนักพัฒนาที่ต้องการดึงข้อมูลจาก Traffy API จะต้องทำการลงทะเบียน Application เพื่อขอ AppID ก่อน โดยแบ่งเป็น 2 แบบ คือ 1) Website/Server IP และ 2) Mobile บทความนี้จึงขอนำเสนอวิธีการใช้งานข้อมูลจาก Traffy API ด้วย AppID แต่ละประเภท ดังนี้
1) แบบ Website/Server IP
Application ที่ทำการลงทะเบียนเอาไว้เป็นประเภท Website/Server IP จะสามารถใช้งานได้บน Website หรือ IP ที่ลงทะเบียนเอาไว้เท่านั้น
โดยเมื่อลงทะเบียนเสร็จจะได้รับ AppID มาเพื่อให้เรียกใช้งาน ดังข้อมูล AppID ด้านล่าง
กรณี Referrer เป็น Website
จากภาพด้านบน AppID 65cc4e4c เป็น AppID ประเภท Website/Server IP สามารถใช้ได้บนเว็บไซต์ที่ลงทะเบียนไว้คือ http://info.traffy.in.th เท่านั้น
หากข้อมูลที่ต้องการดึงเป็นข้อมูลประเภท Text จาก Traffy API เช่น getCCTV, getVMS, getIncident นักพัฒนาสามารถดึงข้อมูลได้ผ่านแท็ก html ที่ชื่อ a href โดยอ้างอิงถึง URL ของ API ตัวนั้นๆ ด้วยรูปแบบ <a href=”[API URL]“>
ดังตัวอย่าง
<a href="http://cloud.traffy.in.th/apis/apitraffy.php?format=TABLE&api=getVMS&appid=[AppID]">
หากข้อมูลที่ต้องการดึงเป็นข้อมูลประเภทรูปภาพจาก Traffy API นักพัฒนาสามารถเรียกใช้ Traffy API ประเภท รูปภาพ เช่น getcctvimg, getvmsimg ได้ผ่านแท็ก html ที่ชื่อ img src โดยอ้างอิงถึง URL ของ API นั้นๆ ด้วยรูปแบบ <img src=”[API URL]“>
ดังตัวอย่าง
<img alt="" src="http://cloud.traffy.in.th/apis/apitraffy.php?api=getvmsimg&appid=[AppID]&id=16" />
ตัวอย่าง
คลิกเพื่อแสดงข้อมูลจาก getCCTV
แสดงภาพ CCTV
กรณี Referrer เป็น IP
การใช้ Referrer Website เป็นหมายเลข IP นี้ เหมาะสำหรับนักพัฒนาที่ต้องการ sync ข้อมูลจราจรจาก Traffy โดยวิธีนี้จำเป็นต้องมี fixed IP server เท่านั้นจึงสามารถใช้วิธีนี้ได้
ตัวอย่าง PHP Code สำหรับดึงข้อมูล getIncident
<?php $AppID= '65cc4e4c'; //จากภาพด้านบน $url = "http://cloud.traffy.in.th/apis/apitraffy.php?api=getIncident&appid=$AppID&format=XML"; $response = file_get_contents($url); print_r($response); ?>
หมายเหตุ
กรณีนักพัฒนาใช้ทำงานบน server ที่ไม่ได้ลงทะเบียนไว้ หรือใส่ IP address ไม่ตรงกับที่ลงทะเบียนไว้ จะได้ response กลับมาดังนี้ Wrong ip name. you ip is [YOUR IP ADDRESS]
ให้นำ IP address ที่ปรากฏใน response มาลงทะเบียน Application ใหม่ และใช้ AppID ใหม่ที่ได้รับ มาเรียกใช้งาน
2) แบบ Mobile
Application ที่ทำการลงทะเบียนประเภท Mobile/Session Key เหมาะสำหรับนักพัฒนาที่ต้องการพัฒนา Application บนมือถือ หรือ Desktop รวมถึง Server ที่ไม่มี URL/IP ที่แน่นอน
นักพัฒนาจำเป็นต้องสร้าง Session Key ขึ้นมา เพื่อดึงข้อมูล API โดย Session Key ที่สร้างขึ้นจะมีอายุการใช้งาน 1 วัน (ถูกลบออกจากระบบเวลาเที่ยงคืนของทุกๆ วัน)
จากตารางด้านบน AppID 12cb7eda (บรรทัดที่ 2) เป็น AppID ประเภท Mobile/Session Key
- นักพัฒนาสามารถสร้าง Session Key ได้โดยส่ง AppID มาที่ http://cloud.traffy.in.th/apis/getKey.php?appid=[AppID] เพื่อขอ Random String มาใช้สร้าง Session Key
- ถ้า AppID ที่ส่งมาถูกต้องระบบจะส่ง Random String กลับมาให้นักพัฒนา
- Session Key มีส่วนประกอบดังนี้
- ส่วนแรก นำ AppID มาต่อ (Concatenation) กับ Random String ที่ได้รับ แล้วทำการ Hash ด้วย MD5
Session Part 1 = MD5(AppID.Random String) - ส่วนที่สอง นำ Key มาต่อ (Concatenation) กับ Random String ที่ได้รับ แล้วทำการ Hash ด้วย MD5
Session Part 2 = MD5(Key.Random String) - นำ Session Key ทั้งสองส่วนมาต่อกัน (Concatenation) แล้วส่งมาเรียกใช้ API
- Session Key = Session path 1. Session path 2
- ส่วนแรก นำ AppID มาต่อ (Concatenation) กับ Random String ที่ได้รับ แล้วทำการ Hash ด้วย MD5
- Session Key ที่คำนวณได้สามารถนำไปเรียกใช้ข้อมูลจาก API ได้ตามปกติ
ตัวอย่าง PHP Code สำหรับดึงข้อมูล getIncident
<?php //ขั้นตอนที่ 1: สร้าง random string $AppID='12cb7eda';// จากภาพด้านบน $hiddenkey = 'dUjgtmTc2Y'; //จากภาพด้านบน $getRandomStrURL = "http://cloud.traffy.in.th/apis/getKey.php?appid=$AppID"; $randomStr = file_get_contents($getRandomStrURL); //ขั้นตอนที่ 2 สร้าง session key $passKey = md5($AppID.$randomStr).md5($hiddenkey.$randomStr); //ขั้นตอนที่ 3 เรียกใช้ข้อมูลจาก service API $url = "http://cloud.traffy.in.th/apis/apitraffy.php?api=getIncident&key=$passKey&format=JSON"; $response = file_get_contents($url); print_r($response); ?>