| Server IP : 182.53.201.61 / Your IP : 216.73.217.175 Web Server : Apache/2.2.15 (Fedora) System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686 User : apache ( 48) PHP Version : 5.3.3 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/lineLocal/ |
Upload File : |
<?php
include('config.php');
$curlurl = "https://192.168.1.18:8088/linebot/lpost.php";
//------------------------------------------------------------------
function pushMsg(&$curlurl,$id,$botID,$MSG,$pid,$sid)
{
$params['BotID'] = $botID;
$params['LineID'] = $id;
$params['Msg'] = $MSG;
$params['Pid'] = $pid;
$params['Sid'] = $sid;
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST,1); // method ที่เราจะส่ง เป็น get หรือ post
curl_setopt($ch, CURLOPT_POSTFIELDS,$params); // paremeter สำหรับส่งไปยังไฟล์ ที่กำหนด
curl_setopt($ch, CURLOPT_URL,$curlurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
//curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
$resp = curl_exec($ch); // ผลการ execute กลับมาเป็น ข้อมูลใน url ที่เรา ส่งคำร้องขอไป
if(curl_errno($ch) !== 0) {
$resp ='CE';
}
curl_close ($ch);
}
//------------------------------------------------------------------
//======= Main
$Ret = 'NP'; // ตอบกลับ API
if (isset($_POST['BotID'])) {
$botID = $_POST['BotID']; //BOT ID
if (isset($_POST['LineID'])) {
$uID = $_POST['LineID']; //Line ID
if (isset($_POST['Msg'])) $message = $_POST['Msg'];
else $message='';
$Ret='NM';
if (!empty($message)){ //ข้อความจาก USER
//$Ret = $botID.'<br>'.$uID.'<br>'.$message;
$mysqli = new mysqli($database_host, $database_username, $database_password, $database_name, $database_port);
$mysqli->set_charset("utf8");
if ($mysqli->connect_error) $Ret = 'ER';
else {
if ($message == 'TestServer') {
$Ret = 'AC'; //Old LineID
} else {
$Ret = 'OL'; //Old LineID
$mUser ='Unknown';
$mDept ='Unknown';
$mName ='';
$Conn = $mysqli->query("SELECT * from user where lineID='$uID' limit 1"); //หาว่า LineID นี้คือใคร > userID
while($emp = $Conn->fetch_array()){
$mUser = $emp['userID'];
$mDept = $emp['department'];
$mName = $emp['name'];
break;
}
if (($mUser == 'Unknown') || ($mDept == 'Unknown')){ // ไม่พบ ID
if (substr($message,0,1)=='*' && !(strpos($message,'#') === false)){ // เป็นข้อความแจ้ง ID ขอลงทะเบียน
$nPos = strpos($message,'#');
$mUser = substr($message,1,$nPos-1);
$mName = substr($message,$nPos+1);
$nPos = strpos($mName,'#');
$mDept = trim(substr($mName,$nPos+1));
$mName = substr($mName,0,$nPos);
$nPos = strrpos($mDept,'#');
$oName ='';
$oDept = '';
if (!($nPos === false)) $mDept = substr($mDept,0,$nPos); //ตัด # ตัวท้ายถ้ามี
$nPos=0;
$Conn = $mysqli->query("SELECT * from user where userID='$mUser'");
while($emp = $Conn->fetch_array()){ //userID ซ้ำได้
$mId = $emp['lineID'];
if (is_null($mId) ) $nPos = $emp['id']; //1.พบ ID > lineID ไม่มี
else {
if (empty($mId)) $nPos = $emp['id']; //1.พบ ID > update lineID
}
$oName = $emp['name'];
$oDept = $emp['department'];
}
mysqli_free_result($Conn);
if ($nPos == 0) { //0.ไม่พบ
$sQl = "INSERT INTO user (userID,lineID,name,department,BotID)
values ('$mUser','$uID','$mName','$mDept','$botID')";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$sQl = "SELECT * From user where userID='$mUser' and lineID='$uID' and BotID='$botID'";
$Conn= $mysqli->query($sQl);
$row_cnt = $Conn->num_rows;
if ($row_cnt >= 1) $Ret = 'AA';
else $Ret = 'ER';
mysqli_free_result($Conn);
} else { //1.พบ ID > update lineID
$sQl = "Update user set lineID = '$uID',BotID='$botID'";
if (!empty($mName)) $sQl = $sQl .",name = '$mName'";
if (!empty($mDept)) $sQl = $sQl .",department = '$mDept'";
$sQl = $sQl . " where id =$nPos";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$Ret = 'UP';
}
} else $Ret = 'UR'; //ไม่ได้ลงทะเบียนและไม่ได้เป็นข้อความลงทะเบียน
} else {
if (substr($message,0,1)=='*' && !(strpos($message,'#') ===false)) { //ข้อมูลเดิม ขอลงทะเบียนมาอีก > update ชื่อ/แผนก
$oName =$mName;
$oDept = $mDept;
$nPos = strpos($message,'#');
$mName = substr($message,$nPos+1);
$nPos = strpos($mName,'#');
if (!($nPos === false)) {
$mDept = trim(substr($mName,$nPos+1));
$mName = substr($mName,0,$nPos);
$nPos = strrpos($mDept,'#');
if (!($nPos === false)) $mDept = substr($mDept,0,$nPos); //ตัด # ตัวท้ายถ้ามี
if ( $oName !==$mName || $oDept !== $mDept){
$sQl = "Update user set name = '$mName' , department = '$mDept' where userID ='$mUser'";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$Ret = 'UP';
} else {
$Ret = 'ST' ; //คงข้อมูลเดิม
}
} else {
if ( substr(strtoupper($mName),0,4) == 'BOOK' ) {
$mDept = substr($message,1);
$nPos = strrpos($mDept,'#');
$mDept = substr($mDept,0,$nPos); //ตัด # ตัวท้ายถ้ามี
$sQl = "Update user set mid = '$mDept' where userID = '$mUser' ";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$Ret = 'UP';
}
}
}
if ( $Ret == 'OL'){
// ================= แก้ไข เพิ่มCode ตามต้องการ
$message_to_reply='';
$pid='2';
$sid='41'; //
if (substr($message,0,1) == '?' ){ //ประเมิน lbot เปลี่ยน @ เป็น ?
$message_to_reply='ไม่พบคำขอบริการของท่าน'; //Init
$message = trim(substr($message,1));
$lcDep = substr($message,0,1);
$int=5; $float =1.0; //default
if (is_numeric($lcDep)){
$int = (int)$lcDep;
if ($int >= 5 ) $int=5;
else if ($int <= 1 ) $int=1;
$message = trim(substr($message,1));
$float = (float)$message;
$message = trim($message,$float);
if ($float >= 10.0) $float=10.0;
else if ($float <= 1.0 ) $float=1.0;
}
$nPos = 0;
$Conn = $mysqli->query("SELECT reqdate ,evaluation FROM report
WHERE reqID='$mUser' AND resID is not null Order by reqdate DESC LIMIT 1");
while($emp = $Conn->fetch_array()){
$dDate = $emp['reqdate'];
if (!empty($dDate)){
$nPos = 1;
if ( is_null($emp['evaluation'])) $nPos =2;
}
}
mysqli_free_result($Conn);
if ($nPos == 2) {
$sQl = "UPDATE report SET evaluation ='$int',comment = '$message',weight = '$float' WHERE reqID='$mUser' AND evaluation IS NULL";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
//if($Conn->affected_rows) $nPos = 1;
//if (mysqli_affected_rows($Conn)) $nPos = 1;
$message_to_reply='ขอบคุณที่ให้ความร่วมมือ '.chr(13).chr(10).
' คะแนน '.$int.' x '.$float.' = '.number_format(($int * $float),1).'คะแนน และคำแนะนำ '.chr(13).chr(10).
' จะนำไปพัฒนาคุณภาพบริการต่อไป'; //แจ้ง user
$pid='2';
$sid='41'; //
} else {
if ($nPos == 1) {
$sQl = "UPDATE report SET evaluation = '$int',comment = '$message',weight = '$float' WHERE reqID='$mUser' AND reqdate ='$dDate'";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$message_to_reply='แก้ไขคะแนนครั้งสุดท้ายเป็น '.chr(13).chr(10).' '.$int.' x '.$float.
' = '.number_format(($int *$float),1).'คะแนน '; //แจ้ง
}
}
} else {
if (substr($message,0,2) == 'ID'){ //แสดงว่าเป็นการตอบให้บริการ
$nPos = 0;
$reqID = substr($message,2,5);
$cDate = SUBSTR($message,8,4).'-'.SUBSTR($message,12,2).'-'.SUBSTR($message,14,2).'T'.SUBSTR($message,16,2).':'
.SUBSTR($message,18,1).SUBSTR($message,20,1).':'.SUBSTR($message,21,2);
$sQl = "SELECT * From report Where reqID='$reqID' AND reqDate ='$cDate'"; //ตรวจสอบว่ามี ID นี้จริง
$Conn = $mysqli->query($sQl);
while($emp = $Conn->fetch_array()){
if ($reqID == $emp['reqID']) {
$nPos=1;
break;
}
}
mysqli_free_result($Conn);
if ($nPos == 0) $message_to_reply='บันทึก ตอบให้บริการไม่ถูกต้อง'.chr(13).chr(10). 'รูปแบบ ID55555@yyyymmddhhm.mss' ;
else {
$nPos = strrpos($message,' '); //ระยะเวลา
if ($nPos === false) $lcDep = 'ไม่ระบุ เวลา';
else {
$lcDep = ltrim(substr($message,$nPos));
if (substr($lcDep,0,1) == '0' ) {
$lcDep = '-'.substr($lcDep,1);
} else {
if (!(strpos($lcDep,'D') === false)) $lcDep = str_replace("D","วัน",$lcDep);
else if(!(strpos($lcDep,'d') === false)) $lcDep = str_replace("d","วัน",$lcDep);
else if(!(strpos($lcDep,'H') === false)) $lcDep = str_replace("H","ชม.",$lcDep);
else if(!(strpos($lcDep,'h') === false)) $lcDep = str_replace("h","ชม.",$lcDep);
else $lcDep = $lcDep.' นาที';
}
}
// 1. แจ้ง IT
$nPos = strpos($lcDep,'CO'); //ตรวจสอบว่าเป็นผุ้ร่วมบริการหรือไม่
if ( $nPos === false) { //กรณีเป็นผู้ให้บริการหลัก
if (substr($lcDep,0,1) == '-' ) {
$sQl = "UPDATE report SET resID ='$mUser',resWaitting ='$lcDep',resDate =now() ,evaluation='5'
where reqID='$reqID' AND reqDate ='$cDate'";
} else {
$sQl = "UPDATE report SET resID ='$mUser',resWaitting ='$lcDep',resDate =now()
where reqID='$reqID' AND reqDate ='$cDate'";
}
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$Conn = $mysqli->query("SELECT * From user Where instr(acctype,'IT') > 0 or userID = '$reqID' "); //แจ้ง ITทุกคน
while($emp = $Conn->fetch_array()){
$mID = $emp['lineID']; // IT lineID
$mBot = $emp['BotID']; // IT botID
if (!is_null($mID) && !empty($mID)){
if ( $reqID == $emp['userID'] ) {
if (substr($lcDep,0,1) == '-' ) {
$message_to_reply = $mName.' แจ้งว่า'.chr(13).chr(10).$lcDep.' '.chr(13).chr(10);
$pid='2';
$sid='38'; //
} else {
$message_to_reply = 'ท่านจะได้รับบริการโดย'.$mName.' '.chr(13).chr(10).' ภายใน '.$lcDep.' '.chr(13).chr(10).
' เสร็จแล้วกรุณาประเมินโดยพิมพ์ '.chr(13).chr(10).'@ตามด้วยคะแนน คำติชมหรือคำแนะนำ(ถ้ามี) '.chr(13).chr(10).
' เช่น @5 ดีมากรวดเร็วและสุภาพ '.chr(13).chr(10).' ให้คะแนนความยากเชิงปริมาณ '.chr(13).chr(10).
' โดยพิมพ์ตัวเลขต่อจากคะแนนคุณภาพ '.chr(13).chr(10).' เช่น @51.5 ดีมากรวดเร็ว แปรว่างานมีความยากเป็น1.5เท่า';
$pid='2';
$sid='179'; //
}
} else {
if($mUser == $emp['userID']){
if (substr($lcDep,0,1) == '-' ) {
$message_to_reply = ' ตอบผู้รับบริการแล้ว ';
} else {
$message_to_reply = ' แจ้งผู้รับบริการแล้ว '.chr(13).chr(10).' กรุณาบริการภายใน '.$lcDep;
}
} else {
if (substr($lcDep,0,1) == '-' ) {
$message_to_reply = 'รายงาน '.chr(13).chr(10).' '.substr($message,0,23).' '.
chr(13).chr(10).' '.$mName.' ตอบว่า '.$lcDep ;
} else {
$message_to_reply = 'รายงาน '.chr(13).chr(10).' '.substr($message,0,23).' '.
chr(13).chr(10).' '.$mName.'จะไปบริการภายใน '.$lcDep ;
}
}
}
pushMsg(&$curlurl,$mID,$mBot,$message_to_reply,$pid,$sid);
sleep(2);
$pid='';
$sid='';
}
}
mysqli_free_result($Conn) ;
$message_to_reply='';
} else { //ผู้ร่วมบริการ บันทึกแต่ไม่ส่งข้อความตอบ User
$sQl = "UPDATE report SET CoWorker = IF(CoWorker is null OR CoWorker = '' ,'$mUser',concat(CoWorker,';$mUser')) ";
$sQl = $sQl ." where reqID='$reqID' AND reqDate ='$cDate'";
$Conn = $mysqli->query($sQl);
mysqli_free_result($Conn);
$message_to_reply='บันทึกเป็นผู้ร่วมให้บริการเรียบร้อยแล้ว';
}
}
} else { // **** ข้อความขอ รับบริการ
$dDate = date('Y-m-d H:i:s');
$Conn = $mysqli->query("INSERT INTO report (reqID,reqDept ,reqReason,reqDate) VALUES ('$mUser','$mDept','$message','$dDate')");
mysqli_free_result($Conn);
$dDate =date("YmdHis", strtotime($dDate));
$message_to_reply = 'ID'.$mUser.'@'.substr($dDate,0,11).'.'.substr($dDate,11,3).' '.chr(13).chr(10).' '.
$mName.' # '.$mDept.' '.chr(13).chr(10).' แจ้ง: '.$message.' ';
$Comment = ' ตอบโดยคัดลอก บรรทัดแรก(ID...) มาวางที่กล่องข้อความ '.chr(13).chr(10).
' เว้นวรรคแล้วตามด้วยเลขระยะเวลาที่จะไปให้บริการ '.chr(13).chr(10).' ตามด้วยหน่วย D,H,M(default) '.chr(13).chr(10).
' หรือ CO กรณีที่เป็นผู้ร่วมดำเนินการ';
$mID='';
$mBot='';
$Conn = $mysqli->query("SELECT userID,lineID,BotID From user Where instr(acctype,'IT') > 0"); //แจ้ง ITทุกคน
while($emp = $Conn->fetch_array()){
$mID = $emp['lineID'];
$mBot = $emp['BotID'];
if (!is_null($mID)){
pushMsg(&$curlurl,$mID,$mBot,$message_to_reply,'2','34');
sleep(1);
pushMsg(&$curlurl,$mID,$mBot,$Comment,'','');
sleep(1);
}
}
mysqli_free_result($Conn);
$message_to_reply='แจ้งผู้ให้บริการแล้ว '.chr(13).chr(10).' กรุณารอตอบรับสักครู่';
$pid='3';
$sid='225'; //
}
} //ประเมิน
// REPLY Message
if( strlen($message_to_reply) > 0 || !(empty($pid) || empty($sid)) ) {
pushMsg(&$curlurl,$uID,$botID,$message_to_reply,$pid,$sid);
}
$Ret = 'FW';
// ---------------------------------------
}
}
}
}
}
}
}
echo $Ret.'<br>';
?>