สำหรับใครที่ต้องการส่ง sms ไปยังพวก sms gateway ด้วย grails ลองเอา script ตัวนี้ไปใช้ดูนะครับเป็น groovy script สำหรับการใช้งานส่ง sms ด้วย thaibulksms ครับหากใครไม่ได้ใช้ของที่นี้ก็ลองดูโค้ดเอานะครับ(ไม่ได้ค่าโฆษณาจาก thaibulksms นะครับ อิๆ)
class ThaiBulkSmsEngine{ def username def password def sender = 'SMS' //return a map containing keys as documented def send(target, message){ def conn = new URL("http://www.thaibulksms.com/sms_api.php").openConnection(); conn.requestMethod = "POST" conn.doOutput = true conn.outputStream.withWriter("UTF-8") { writer -> [ "username":username,"password":password,"msisdn":target, "message":message,"sender":sender ].each{ writer.write("&"+URLEncoder.encode(it.key,"UTF-8")+"="+URLEncoder.encode(it.value,"UTF-8")) } } def resultXml = conn.inputStream.text parseXml(resultXml) } //return a long def readCredits(){ def conn = new URL("http://www.thaibulksms.com/sms_api.php").openConnection(); conn.requestMethod = "POST" conn.doOutput = true conn.outputStream.withWriter("UTF-8") { writer -> [ "username":username,"password":password,"tag":"credit_remain" ].each{ writer.write("&"+URLEncoder.encode(it.key,"UTF-8")+"="+URLEncoder.encode(it.value,"UTF-8")) } } def resultCredit = conn.inputStream.text try{ resultCredit.toLong() //this will generate an exception }catch(NumberFormatException e){ -1 } } def parseXml(xml){ def results = [:] def replyXml = new XmlParser().parseText(xml) if(replyXml.QUEUE.size()>0){ //Ok results.action = 'ok' results.status = replyXml.QUEUE[0].Status.text().toInt() results.msisdn = replyXml.QUEUE[0].Msisdn.text() results.transaction = replyXml.QUEUE[0].Transaction.text() results.usedCredit = replyXml.QUEUE[0].UsedCredit.text().toInt() results.remainCredit = replyXml.QUEUE[0].RemainCredit.text().toInt() }else{ //Fail results.action = 'fail' results.status = replyXml.Status.text().toInt() results.detail = replyXml.Detail.text() } results } } //def engine = new ThaiBulkSmsEngine(username:'nolifelover', password:'ไม่บอก') List lines = new File("sms.txt").readLines() //ผมอ่านมาจากไฟล์ utf-8 นะครับเพราะถ้า hardcode ไปส่งเป็นภาษาไรไม่รู้ engine.send('xxxxxxxxxx',lines[0]) engine.readCredits();
ที่มา
http://blog.bemoko.com/2008/11/19/http-post-with-groovy-to-send-smss-using-web-service/
28 views

