/
var
/
www
/
barefootlaw.org
/
messenger
/
Upload File
HOME
<?php date_default_timezone_set("Africa/Kampala"); ?> <?php function post($json, $url) { $options = array ( CURLOPT_URL => $url, CURLOPT_HTTPHEADER => array("Content-Type: application/json"), CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $json, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_RETURNTRANSFER => 1 ); $curl = curl_init(); curl_setopt_array($curl, $options); $response = curl_exec($curl); if(!$response) { $response = curl_error($curl); } curl_close($curl); return $response; } ?> <?php $json = file_get_contents("php://input"); $json_object = json_decode($json,true); if($json_object['entry'][0]['id'] == "1800027210224632") { //MSME Garage $obj = array("action"=>"log_message","parameters"=>array("token"=>"18c90aa7987fdd145802872da6d0705df451cd3a","platform"=>"facebook","channel"=>"msme_garage_page_messenger","payload"=>$json)); } if($json_object['entry'][0]['id'] == "330530140358896") { //Barefoot Law Page $obj = array("action"=>"log_message","parameters"=>array("token"=>"18c90aa7987fdd145802872da6d0705df451cd3a","platform"=>"facebook","channel"=>"barefootlaw_page_messenger","payload"=>$json)); } $response = json_decode(post(json_encode($obj),"http://barefootlaw.thinvoidcloud.com/api"), true); if($response['status'] != "1") { @mail("joseph@thinvoid.com","BIOS Error",json_encode($response)); } /*$remote = mysqli_connect("barefootlaw.thinvoidcloud.com","bios","bMk!kdPol2018","barefootlaw"); if($remote) { $insert = mysqli_query($remote, "insert into message_log (platform, channel, payload, log_date) values ('facebook', 'barefootlaw_page_messenger', '".mysqli_real_escape_string($remote, $json)."', '".date("Y-m-d H:i:s")."')"); if(!$insert) { @mail("joseph@thinvoid.com","BIOS Error",mysqli_error($remote)); } } else { @mail("joseph@thinvoid.com","BIOS Error",mysqli_error($remote)); }*/ exit; ?> <?php //Require Once require_once("db_conn.php"); ?> <?php function sendRequest($query) { $curl = curl_init(); # Create Curl Object curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,0); # Allow self-signed certs curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0); # Allow certs that do not match the hostname curl_setopt($curl, CURLOPT_HEADER,0); # Do not include header in output curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); # set the username and password curl_setopt($curl, CURLOPT_URL, $query); # execute the query $result = curl_exec($curl); if ($result == false) { error_log("curl_exec threw error \"" . curl_error($curl) . "\" for $query"); return ""; #log error if curl exec fails } curl_close($curl); return $result; } function user_profile($user_id, $page_id, $db_conn) { $url = 'https://graph.facebook.com/v2.6/'.$user_id.'?access_token='.$page_id; $user_info = json_decode(sendRequest($url), true); if(isset($user_info['first_name']) && trim($user_info['first_name']) != "") { $p = mysqli_query($db_conn, "insert into bios_user (page_user_id, fname, lname, locale, timezone, gender, last_update) values ('".$user_id."', '".mysqli_real_escape_string($db_conn, $user_info['first_name'])."', '".mysqli_real_escape_string($db_conn, $user_info['last_name'])."', '".mysqli_real_escape_string($db_conn, $user_info['locale'])."', '".mysqli_real_escape_string($db_conn, $user_info['timezone'])."', '".mysqli_real_escape_string($db_conn, $user_info['gender'])."', '".date("Y-m-d H:i:s")."')"); if(!$p) { $temp = mysqli_fetch_assoc(mysqli_query($db_conn, "select id from bios_user where page_user_id = '".$user_id."'")); $user_info['bios_user_id'] = $temp['id']; //Update mysqli_query($db_conn, "update bios_user set fname='".mysqli_real_escape_string($db_conn, $user_info['first_name'])."', lname='".mysqli_real_escape_string($db_conn, $user_info['last_name'])."', locale='".mysqli_real_escape_string($db_conn, $user_info['locale'])."', timezone='".mysqli_real_escape_string($db_conn, $user_info['timezone'])."', gender='".mysqli_real_escape_string($db_conn, $user_info['gender'])."', last_update='".date("Y-m-d H:i:s")."' where page_user_id = '".$user_id."'"); } else { $user_info['bios_user_id'] = mysqli_insert_id($db_conn); } } //User Info $temp = mysqli_fetch_assoc(mysqli_query($db_conn, "select email, age, phone, locale_cord from bios_user where page_user_id = '".$user_id."'")); $keys = array_keys($temp); foreach($keys as $item) { $user_info[$item] = $temp[$item]; } //@mail("jkaizzi@gmail.com","BIOS Error",json_encode($user_info)); return $user_info; } function post_to_user($db_conn, $message, $user_id, $page_token, $quick_replies=array()) { //$message .= " #BFLT (Barefoot Law Team)"; $response_json = array("recipient"=>array("id"=>$user_id),"message"=>array("text"=>$message)); if(isset($quick_replies) && sizeof($quick_replies)> 0) { $response_json['message']['quick_replies'] = array(); foreach($quick_replies as $reply) { $response_json['message']['quick_replies'][] = $reply; } //@mail("jkaizzi@gmail.com","BIOS Error",json_encode($response_json)); } $post_feedback = json_decode(post(json_encode($response_json),"https://graph.facebook.com/me/messages?access_token=".$page_token),true); if(!isset($post_feedback['recipient_id'])) { //Error //@mail("jkaizzi@gmail.com","BIOS Error",json_encode($post_feedback)); return false; } else { $rid = mysqli_fetch_assoc(mysqli_query($db_conn, "select id from bios_user where page_user_id = '".$user_id."'")); //Log Response mysqli_query($db_conn, "insert into bios_response (recipient_id, recipient, channel, message, log_date) values ('".$rid['id']."', '".mysqli_real_escape_string($db_conn, $post_feedback['recipient_id'])."', 'fb_bot', '".mysqli_real_escape_string($db_conn, $message)."', '".date("Y-m-d H:i:s")."')"); return true; } } function persistent_menu($user_locale, $disable_menu_txt_input, $menu_items, $page_token) { //Persistent Menu $reply = post(json_encode(array("locale"=>$user_locale,"composer_input_disabled"=>$disable_menu_txt_input,"call_to_actions"=>$menu_items)),"https://graph.facebook.com/v2.6/me/messenger_profile?access_token=".$page_token); @mail("jkaizzi@gmail.com","BIOS",$reply); } ?> <?php $json = file_get_contents("php://input"); $fp = fopen("fb_input.txt","a"); fwrite($fp, $json."\n\n"); fclose($fp); $call_back = 'https://www.barefootlaw.org/messenger/'; $page_token = 'EAAYSgYDjEewBAB4VdJOnZBk2YOR2eboBOH4UZCZC7TrqRXYByTNYvHGCyuiVLtCOzZBYW0yZC5hy5OiBZAm0jgirhBprbJkYBJIBnWEaZCeKV0EnHSEKdj0uculY87iWmNrQlnnTvD4ZC41i3KnJvHI7a39XHBffZCEK7Kz7U4a7lkAZDZD'; $verify_token = 'VOID!23'; $hub_verify_token = ""; $response = ""; if(isset($_REQUEST['hub_challenge'],$_REQUEST['hub_mode']) && strtolower($_REQUEST['hub_mode']) == 'subscribe') { $challenge = $_REQUEST['hub_challenge']; $hub_verify_token = urldecode($_REQUEST['hub_verify_token']); } if ($hub_verify_token === $verify_token) { $response = $challenge; } //Json Input $values = json_decode($json, true); //{"object":"page","entry":[{"id":"330530140358896","time":1501072035878,"messaging":[{"sender":{"id":"1644331545600619"},"recipient":{"id":"330530140358896"},"timestamp":1501072035847,"message":{"mid":"mid.$cAAEsnch6bapjsCLYB1dft2QkEzgQ","seq":46998,"text":"Testing with barefoot law"}}]}]}{"object":"page","entry":[{"id":"330530140358896","time":1501072042062,"messaging":[{"sender":{"id":"1644331545600619"},"recipient":{"id":"330530140358896"},"timestamp":1501072042021,"message":{"mid":"mid.$cAAEsnch6bapjsCLwJVdft2oqhouv","seq":47000,"text":"Testing"}}]}]} //Log Message $message_to_process = ""; $attachments = array(); $quick_reply = ""; //Get Started if(isset($values['sender'])) { //User Info $sender = $values['sender']; $user_info = user_profile($sender,$page_token,$db_conn); //PostBacks - New User if(isset($values['postback']) && $values['postback']['payload'] == 'NEW_USER') { //Get User Info $user_info = user_profile($values['sender'],$page_token,$db_conn); //Post Welcome Message post_to_user($db_conn,"Hi ".$user_info['first_name'].", welcome to BarefootLaw! Please proceed to enter your legal inquiry below.",$values['sender'],$page_token); //persistent_menu($user_info['locale'],true,array(array("title"=>"Legal Question","type"=>"postback","payload"=>"problem"),array("title"=>"Other","type"=>"postback","payload"=>"inquiry")), $page_token); goto app_end; } else if(isset($values['postback']) && substr($values['postback']['payload'],0,strlen('category_')) == 'category_') { post_to_user($db_conn, $values['postback']['payload'],$sender,$page_token); goto app_end; } else { //Greeting post(json_encode(array("greeting"=>array("locale"=>"default","text"=>"Please hit the 'Get Started' button below and enter your legal query."))),"https://graph.facebook.com/v2.6/me/messenger_profile?access_token=".$page_token); //Get Started post(json_encode(array("get_started"=>array("payload"=>"NEW_USER"))),"https://graph.facebook.com/v2.6/me/messenger_profile?access_token=".$page_token); goto app_end; } } //User message if(isset($values['entry'])) { foreach($values['entry'] as $item) { //Messaging foreach($item['messaging'] as $item2) { $lat = ""; $lng = ""; $sender = $item2['sender']['id']; $user_info = user_profile($sender,$page_token,$db_conn); $recipient = $item2['recipient']['id']; $time = $item2['timestamp']; $message_id = $item2['message']['mid']; if(isset($item2['message']['is_echo'])) { goto app_end; } $message_meta = $item2['message']['seq']; $message = $item2['message']['text']; //Quick Replies $quick_reply = isset($item2['message']['quick_reply']['payload']) ? $item2['message']['quick_reply']['payload'] : ""; $message_to_process .= $message; $seconds = $time / 1000; $db_time = date("Y-m-d H:i:s", $seconds); //Attachments if(isset($item2['message']['attachments'])) { //Loop through attachments. foreach($item2['message']['attachments'] as $media_item) { if($media_item['type'] == 'location') { $lat = $media_item['payload']['coordinates']['lat']; $lng = $media_item['payload']['coordinates']['long']; } else { $attachments[] = array("media_type"=>$media_item['type'],"url"=>(isset($media_item['payload']['url']) ? $media_item['payload']['url'] : $media_item['url'])); } } } //Insert $logMsg = mysqli_query($db_conn, "insert into bios_message (log_date, channel, sender_id, sender, recipient, send_date, message_ref, message, meta_data) values ('".date("Y-m-d H:i:s")."', 'barefootlaw_fb_page', '".$user_info['bios_user_id']."', '".mysqli_real_escape_string($db_conn,$sender)."', '".mysqli_real_escape_string($db_conn,$recipient)."', '".$db_time."', '".mysqli_real_escape_string($db_conn,$message_id)."', '".mysqli_real_escape_string($db_conn,$message)."', '".mysqli_real_escape_string($db_conn,$message_meta)."')"); if($logMsg) { //@mail("jkaizzi@gmail.com","BIOS Error",json_encode($user_info)); $mid = mysqli_insert_id($db_conn); //Log Attachments if(sizeof($attachments) > 0) { foreach($attachments as $y) { $n = mysqli_query($db_conn, "insert into bios_message_media (message, attachment_type, url, log_date) values ('".$mid."', '".$y['media_type']."', '".mysqli_real_escape_string($db_conn,$y['url'])."', '".date("Y-m-d H:i:s")."')"); } } //ChatMode $chat_mode = mysqli_fetch_assoc(mysqli_query($db_conn, "select stage from bios_chat_mode where user_id = '".$sender."' order by id desc limit 1")); if(trim($chat_mode['stage']) != "") { chat_mode: switch($chat_mode['stage']) { case 'bot': if($quick_reply != "") { if($quick_reply == "problem") { post_to_user($db_conn, "Okay ".$user_info['first_name'].". Please proceed with your query.",$sender,$page_token); goto app_end; } else if($quick_reply == "other") { } else { post_to_user($db_conn, "Sorry, I do not understand the response. Let us try again.",$sender,$page_token); goto menu_start; } } else { if(substr_count(strtolower($message), "still there") > 0) { post_to_user($db_conn, "Yes, I am still here.",$sender,$page_token); } if(substr_count(strtolower($message), "threatening") > 0) { post_to_user($db_conn, "Sorry about that. Does your family have a land title for this land?",$sender,$page_token); } if(substr_count(strtolower($message), "yes") > 0 && substr_count(strtolower($message), "land title") > 0) { post_to_user($db_conn, "Are you listed as one of the owners?",$sender,$page_token); } if(substr_count(strtolower($message), "yes") > 0 && substr_count(strtolower($message), "listed") > 0) { post_to_user($db_conn, "Okay. In that case, you can file for a court injunction preventing them from selling the land. Another alternative would be for you to legally become the custodian of the land. One of our in house lawyers can help with this. Do you want to schedule an appointment?",$sender,$page_token); } if(substr_count(strtolower($message), "yes") > 0 && substr_count(strtolower($message), "appointment") > 0) { post_to_user($db_conn, "Please let us know what day / time, works best.",$sender,$page_token); } if(substr_count(strtolower($message), "yes") > 0 && substr_count(strtolower($message), "time") > 0) { post_to_user($db_conn, "One of our agents will contact you shortly to finalize your appointment scheduling.",$sender,$page_token); } if(substr_count(strtolower($message), "thank") > 0 && substr_count(strtolower($message), "you") > 0) { $options = array(array("content_type"=>"text","title"=>"Good","payload"=>"good"),array("content_type"=>"text","title"=>"Bad","payload"=>"bad")); post_to_user($db_conn, "You are welcome. Please rate our service today:",$sender,$page_token,$options); } //post_to_user($db_conn, "That didn't quite make sense but please go ahead with your inquiry.",$sender,$page_token); goto app_end; } case 'email': if(trim($message) != "" /*&& filter_var($message, FILTER_VALIDATE_EMAIL)*/) { //Update User Email mysqli_query($db_conn, "update bios_user set email = '".mysqli_real_escape_string($db_conn, $message)."' where id = '".$user_info['bios_user_id']."'"); post_to_user($db_conn, "Many thanks for sharing your email address. You can now send legal queries directly via email to ask@barefootlaw.org",$sender,$page_token); $logStage = mysqli_query($db_conn, "insert into bios_chat_mode (user_id, stage, log_date) values ('".$sender."', 'age', '".date("Y-m-d H:i:s")."')"); if($logStage) { post_to_user($db_conn, "We are almost done. Just 3 more quick questions.",$sender,$page_token); post_to_user($db_conn, "How old are you?",$sender,$page_token); goto app_end; } } else { post_to_user($db_conn, "Sorry, we do not understand your response. Please enter your email address below:",$sender,$page_token); goto app_end; } break; case 'age': if(trim($message) != "" /*&& is_numeric($message)*/) { //Update User Age mysqli_query($db_conn, "update bios_user set age = '".mysqli_real_escape_string($db_conn, $message)."', age_log_date = '".date("Y-m-d H:i:s")."' where id = '".$user_info['bios_user_id']."'"); $logStage = mysqli_query($db_conn, "insert into bios_chat_mode (user_id, stage, log_date) values ('".$sender."', 'phone', '".date("Y-m-d H:i:s")."')"); if($logStage) { post_to_user($db_conn, "Sometimes, it may be easier to reach BarefootLaw via the toll-free number. Please share your phone contact to be added to the list. We promise not to send you any unsolicitated messages.",$sender,$page_token); goto app_end; } } else { post_to_user($db_conn, "Sorry, I do not understand your response. Please enter your age below:",$sender,$page_token); goto app_end; } break; case 'phone': if($message != "" && is_numeric($message) && strlen($message) >= 9) { //Update User Age mysqli_query($db_conn, "update bios_user set phone = '".mysqli_real_escape_string($db_conn, $message)."' where id = '".$user_info['bios_user_id']."'"); $logStage = mysqli_query($db_conn, "insert into bios_chat_mode (user_id, stage, log_date) values ('".$sender."', 'location', '".date("Y-m-d H:i:s")."')"); if($logStage) { $options = array(array("content_type"=>"location")); post_to_user($db_conn, "The final question! Where are you located?",$sender,$page_token,$options); goto app_end; } } else { post_to_user($db_conn, "Sorry, I do not understand your response. Please enter your phone number below:",$sender,$page_token); goto app_end; } break; case 'location': if(($lat != "" && $lng != "") || trim($message) != "") { //Update User Age mysqli_query($db_conn, "update bios_user set locale_cord = '".($lat != "" ? mysqli_real_escape_string($db_conn, $lat.",".$lng) : mysqli_real_escape_string($db_conn, $message))."' where id = '".$user_info['bios_user_id']."'"); mysqli_query($db_conn, "delete from bios_chat_mode where user_id = '".$sender."'"); post_to_user($db_conn, "Thank you so much ".ucfirst(strtolower($user_info['first_name']))." for your responses. Please proceed to ask your question.",$sender,$page_token); goto app_end; } else { $options = array(array("content_type"=>"location")); post_to_user($db_conn, "Where are you located?",$sender,$page_token,$options); goto app_end; } break; case 'start': if($quick_reply != "") { if($quick_reply == "problem") { post_to_user($db_conn, "Okay ".$user_info['first_name'].". Please proceed with your query.",$sender,$page_token); goto app_end; } else if($quick_reply == "other") { $logStage = mysqli_query($db_conn, "insert into bios_chat_mode (user_id, stage, log_date) values ('".$sender."', 'other', '".date("Y-m-d H:i:s")."')"); if($logStage) { $options = array(array("content_type"=>"text","title"=>"Download Constitution","payload"=>"constitution"),array("content_type"=>"text","title"=>"Other","payload"=>"other")); post_to_user($db_conn, "Almost there!",$sender,$page_token, $options); goto app_end; } } else { post_to_user($db_conn, "Sorry, I do not understand the response. Let us try again.",$sender,$page_token); goto menu_start; } } break; case 'other': if($quick_reply == "other") { mysqli_query($db_conn, "delete from bios_chat_mode where user_id = '".$sender."'"); post_to_user($db_conn, "Please proceed to leave us a message. We shall respond shortly.",$sender,$page_token, $options); goto app_end; } else if($quick_reply == "constitution") { } break; } } //User Bio Data if(trim($user_info['email']) == "" && $sender == "1548175871915988") { post_to_user($db_conn, "Hi ".$user_info['first_name'].", thank you very much for using BarefootLaw. To serve you better, we require a tiny bit of information about yourself.",$sender,$page_token); $logStage = mysqli_query($db_conn, "insert into bios_chat_mode (user_id, stage, log_date) values ('".$sender."', 'email', '".date("Y-m-d H:i:s")."')"); if($logStage) { post_to_user($db_conn, "Please enter your email address below:",$sender,$page_token); } goto app_end; } //Testing Trigger Word. if(($sender == "1445539428861893" || $sender == "1418739084829064") && substr_count(strtolower($message),"barefoot") > 0) { menu_start: $logStage = mysqli_query($db_conn, "insert into bios_chat_mode (user_id, stage, log_date) values ('".$sender."', 'bot', '".date("Y-m-d H:i:s")."')"); if($logStage) { //Location, Hear About Us, Email, Age, Phone Number $options = array(array("content_type"=>"text","title"=>"Legal Question","payload"=>"problem"),array("content_type"=>"text","title"=>"Other inquiry","payload"=>"other")); post_to_user($db_conn, "Welcome back ".$user_info['first_name'].", please advice on the nature of your inquiry today.",$sender,$page_token,$options); goto app_end; } } } else { //Not Inserted, Previously handled? throw new Exception (mysqli_error($db_conn)); goto app_end; } } } } app_end: header("HTTP/1.1 200 OK"); echo trim($response) != "" ? $response : ""; exit; ?>