Untitled
unknown
plain_text
3 years ago
65 kB
10
Indexable
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
class Apiv2 extends CI_Controller{
public function __construct(){
parent::__construct();
}
public function index_get(){
echo '404 NOT FOUND';
}
public function get_active_device(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
if ($json['apikey'] == 'we4567talk') {
$wa_host = $json['host'];
$wa_port = $json['port'];
$url_server = $wa_host.":".$wa_port;
$device = $this->data->gets("device", "where status = 'active' and enabled = 1 and url_server = '$url_server'", "device.id as id, device.name as name, device.scan_request as scan_request, device.scan as scan");
$data_response = null;
if(!is_null($device)){
$data_response = array(
'status' => 'ok',
'message' => 'Message Received',
'data' => $device
);
}else {
$data_response = array(
'status' => 'failed',
'message' => 'No device found',
'data' => ""
);
}
echo json_encode($data_response);
}
}
public function save_message(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
echo "--start save_message-- apikey";
print_r($file);
print_r($json);
echo "--end save_message--";
if ($json['apikey'] == 'we4567talk') {
$type = $json['data']['type'] ? $json['data']['type'] :"";
$message_id = isset($json['data']['message_id']) ? $json['data']['message_id'] : "";
$related_message_id = isset($json['data']['related_message_id']) ? $json['data']['related_message_id'] : "";
$from = $json['data']['from'];
$to = $json['data']['to'];
$author = isset($json['data']['author']) ? $json['data']['author'] : "";
$customer_name = isset($json['data']['customer_name']) ? $json['data']['customer_name'] : "";
$message = isset($json['data']['message']) ? $json['data']['message'] : "";
$timestamp = isset($json['data']['timestamp']) ? $json['data']['timestamp'] : "";
$device_type = isset($json['data']['device_type']) ? $json['data']['device_type'] : "";
$client = isset($json['client']) ? $json['client'] : "";
$device = $this->data->get('device', "WHERE name = '$json[client]'");
$device_number = $this->fx->deviceNumber($device->info);
$user_id = $device->user_id;
$message_inbound = "";
$data_message = "";
if(!isset($device)){
$data_response = array(
'status' => 'FAIL',
'message' => 'device no detected',
'data_raw' => ""
);
echo json_encode($data_response);
return null;
}
$customer = $this->fx->checkNewNumber($user_id, $from, $customer_name);
if ($type == 'text') {
$data_message = array(
'message_id' => $message_id,
'device_id' => $device->id,
'user_id' => $device->user_id,
'related_message_id' => $related_message_id,
'type' => $type,
'sender' => $from,
'receiver' => $to,
'message' => $this->fx->check_message($message),
'status' => 'receiver',
'author' => $author,
'created' => date("Y-m-d H:i:s", $timestamp),
'device_type' => $device_type,
);
}
if ($type == 'list_response') {
$selected_row_id = isset($json['data']['selected_row_id']) ? $json['data']['selected_row_id'] : "";
$selected_row_title = isset($json['data']['selected_row_title']) ? $json['data']['selected_row_title'] : "";
$selected_row_description = isset($json['data']['selected_row_description']) ? $json['data']['selected_row_description'] : "";
// ubah status is_chat_with_bot
$id_customer = $this->fx->getIdByPhone($from);
$data_statics = $this->data->gets('static_list_item',"where status = 'active' order by sort ASC");
foreach ($data_statics as $static){
$title = $static->title;
$is_chat_with_bot = $static->is_chat_with_bot;
if ($title == $selected_row_title && $is_chat_with_bot == 1 )
{
// $customer_title = $static->title ;
$data_update = array(
'status' => 'Received',
'is_chat_with_bot' => 1,
);
$this->data->update('customer', $data_update, $id_customer);
}
}
$data_message = array(
'message_id' => $message_id,
'device_id' => $device->id,
'user_id' => $device->user_id,
'related_message_id' => $related_message_id,
'type' => $type,
'sender' => $from,
'receiver' => $to,
'message' => $this->fx->check_message($selected_row_title),
'status' => 'receiver',
'author' => $author,
'created' => date("Y-m-d H:i:s", $timestamp),
'device_type' => $device_type,
'list_selected_row_id' => $selected_row_id,
'list_selected_title' => $selected_row_title,
'list_selected_description' => $selected_row_description,
);
// print_r($data_message);
// die();
}
// $message_inbound_id = 10;
$is_chat_with_bot = $this->custChatWith($from);
if ($is_chat_with_bot == 0){
$message_inbound = $this->data->set("message_inbound", $data_message);
$message_inbound_id = $message_inbound->id;
$this->fx->bot_message($client, $from, $type, $message, $customer_name, $message_inbound_id);
}
$data_title_static = $this->data->get('static_list_item',"Where is_chat_with_bot = '$is_chat_with_bot'");
//untuk greeting start chat
if ($is_chat_with_bot == 1 && $selected_row_title == $data_title_static->title ){
$message_inbound = $this->data->set("message_inbound", $data_message);
$message_inbound_id = $message_inbound->id;
$this->fx->bot_message($client, $from, $type, $message, $customer_name, $message_inbound_id);
}
//untuk live chat
if ($is_chat_with_bot == 1){
$this->fx->live_message($client, $from, $type, $message, $customer_name, $message_inbound_id);
}
$data_response = array(
'status' => 'OK',
'message' => 'Message Received',
'data_raw' => $data_message
);
echo json_encode($data_response);
//static reply
// if ($selected_row_title == 'Hubungkan Ke Customer Service' && $is_chat_with_bot == 1){
// $message = 'Admin akan membalas silakan ditunggu ya';
// $this->fx->bot_message($client, $from, $type, $message, $customer_name, $message_inbound_id);
// }
// $this->pusher_add($user_id, $customer_name, $from, $type, $message);
// $device = $this->data->get('device', "JOIN user ON device.user_id = user.id WHERE device.name = '$client'", "user.url_chat");
// if (!is_null($device) && !is_null($device->url_chat)) {
// $param_sendz = array(
// 'device' => $client,
// 'message_id' => $message_id,
// 'related_message_id' => $related_message_id,
// 'type' => $type,
// 'sender' => $from,
// 'receiver' => $to,
// 'message' => $message,
// 'author' => $author,
// 'created' => $timestamp,
// );
// $response = $this->fx->send_api($device->url_chat, $param_sendz);
// }
// if ($type == 'text') {
// $this->fx->bot_message_donasi($client, $from, $type, $message);
// }
// if ($type == 'text' || $type == 'media' || $type == 'location') {
// if($diffSession > 1){
// echo "old sesion";
// $this->fx->bot_message($client, $from, $type, $message);
// }else {
// echo "new session";
// $this->fx->bot_message_greeting($client, $from, $type, $message);
// }
// }
}else{
echo $file;
}
}
public function saveOutbound(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
// echo "--start save_message outbound--";
// print_r($json);
$data = isset($json['data']) ? $json['data'] : "";
$type = isset($data['type']) ? $data['type'] : "";
$from = isset($data['from']) ? $data['from'] : "";
$to = isset($data['to']) ? $data['to'] : "";
$from = explode("@", $from)[0];
$to = explode("@", $to)[0];
$inbound_id = isset($data['inbound_id']) ? $data['inbound_id'] : "";
$autoreplyId = isset($data['autoreply_id']) ? $data['autoreply_id'] : "";
$messageTimestamp = isset($data['message_timestamp']) ? $data['message_timestamp'] : "";
$_data = isset($data['_data']) ? $data['_data'] : "" ;
$_data_id = isset($_data['id']) ? $_data['id'] : "";
$message_id = isset($_data_id['id']) ? $_data_id['id'] : "";
$from_me = isset($_data_id['fromMe']) ? $_data_id['fromMe'] : "";
$list = isset($_data['list']) ? $_data['list'] : "" ;
$list_sections = isset($list['sections']) ? $list['sections'] : "";
// echo '>> from_me'.$from_me.'<<';
// echo '>>autoreplyId '.$autoreplyId.'<<';
// echo '>>message_id '.$message_id.'<<';
// print_r(json_encode($list));
if($type == 'image'){
}
if($type == 'list'){
}
if(isset($from_me)){
$data_message = array(
'message_inbound_id' => $inbound_id,
'autoreply_id' => $autoreplyId,
'message_id' => $message_id,
'sender' => $from,
'receiver' => $to,
'list_sections' => json_encode($list_sections),
// 'status' => 'sender', kolom status ga akan digunakan
'created' => date("Y-m-d H:i:s"),
'message_timestamp' => $messageTimestamp,
);
$this->data->set('message_outbound', $data_message);
$dataResponse = array(
'success' => true,
'message' => 'save outbound ok',
);
echo json_encode($dataResponse);
}
// echo "--end save_message outbound--";
}
public function getPusherKey(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$clientDeviceId = $json['client_device_id'] != "" || $json['client_device_id'] != null ? $json['client_device_id'] : "";
$data = $this->data->get("client_device", "WHERE id = $clientDeviceId");
$pusherChannel = $data->pusher_channel;
$pusherKey = $data->pusher_key;
$dataResponse = array(
'success' => true,
'message' => 'OK',
'data' => [
'pusherKey' => $pusherKey,
'pusherChannel' => $pusherChannel
]
);
echo json_encode($dataResponse);
}
public function delete(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$key = $json['access_key'] != "" || $json['access_key'] != null ? $json['access_key'] : "";
$client = $json['device_name'] != "" || $json['device_name'] != null ? $json['device_name'] : "";
$this->clientDevice->checkAccesKey($key);
$device = $this->clientDevice->checkDeviceName($client);
//load outbound
}
public function saveOutboundAnswer(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
// echo "--start save_message outbound--";
$data = isset($json['data']) ? $json['data'] : "";
$type = isset($data['type']) ? $data['type'] : "";
$from = isset($data['from']) ? $data['from'] : "";
$to = isset($data['to']) ? $data['to'] : "";
$step = isset($data['step'])? $data['step'] : 0;
$questionId = isset($data['autoreply_id']) ? $data['autoreply_id'] : 0;
$from = explode("@", $from)[0];
$to = explode("@", $to)[0];
$inbound_id = isset($data['inbound_id']) ? $data['inbound_id'] : "";
$autoreplyId = isset($data['autoreply_id']) ? $data['autoreply_id'] : "";
$messageTimestamp = isset($data['message_timestamp']) ? $data['message_timestamp'] : "";
$_data = isset($data['_data']) ? $data['_data'] : "" ;
$_data_id = isset($_data['id']) ? $_data['id'] : "";
$message_id = isset($_data_id['id']) ? $_data_id['id'] : "";
$from_me = isset($_data_id['fromMe']) ? $_data_id['fromMe'] : "";
$list = isset($_data['list']) ? $_data['list'] : "" ;
$list_sections = isset($list['sections']) ? $list['sections'] : "";
// echo '>> from_me'.$from_me.'<<';
// echo '>>autoreplyId '.$autoreplyId.'<<';
// echo '>>message_id '.$message_id.'<<';
// print_r(json_encode($list));
if(isset($from_me)){
$data_message = array(
'message_inbound_answer_id' => $inbound_id,
);
$this->data->set('message_outbound_answer', $data_message);
$dataResponse = array(
'success' => true,
'message' => 'save outbound ok',
);
echo json_encode($dataResponse);
}
}
public function saveInboundAnswer(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
print_r("JSON SAVEINBOUND ANSWER");
print_r($json);
// die();
if ($json === "" || $json === null) {
return;
}
$key = $json['access_key'] != "" || $json['access_key'] != null ? $json['access_key'] : "";
$client = $json['device_name'] != "" || $json['device_name'] != null ? $json['device_name'] : "";
$this->clientDevice->checkAccesKey($key);
$device = $this->clientDevice->checkDeviceName($client);
$type = $json['data']['type'] ? $json['data']['type'] : "";
$message_id = isset($json['data']['message_id']) ? $json['data']['message_id'] : "";
$related_message_id = isset($json['data']['related_message_id']) ? $json['data']['related_message_id'] : "";
$from = $this->fx->phoneCleaning($json['data']['from'], "@");
$author = isset($json['data']['author']) ? $json['data']['author'] : "";
$customerName = isset($json['data']['customer_name']) ? $json['data']['customer_name'] : "";
$message = isset($json['data']['message']) ? $json['data']['message'] : "";
$timestamp = isset($json['data']['timestamp']) ? $json['data']['timestamp'] : "";
$flowType = isset($json['data']['flow_type']) ? $json['data']['flow_type'] : "";
$locLat = isset($json['data']['latitude']) ? $json['data']['latitude'] : "";
$locLng = isset($json['data']['longitude']) ? $json['data']['longitude'] : "";
$locName = isset($json['data']['loc_name']) ? $json['data']['loc_name'] : "";
$locAddress = isset($json['data']['loc_address']) ? $json['data']['loc_address'] : "";
$to = $this->fx->phoneCleaning($device->client_device_phone, ":");
$clientDeviceId = $device->client_device_id;
$adminDeviceId = $device->admin_device_id;
$data_message = "";
// Blokir no device sebagai sender
$noDevices = $this->data->gets("client_device", "WHERE status = 1");
foreach ($noDevices as $nd) {
$noDevice = $nd->phone;
if ($from == $noDevice) {
return;
}
}
$customer = $this->customer->check($adminDeviceId, $from, $customerName);
$customerIsRegis = $customer->is_register;
if ($type == 'text') {
$rawData = $this->messageInbound->prepareForText($message_id, $clientDeviceId, $from, $to, $message, $timestamp);
$data = json_decode($rawData);
$data_message = $data->data_message;
}elseif ($type == 'current_location') {
$rawData = $this->messageInbound->prepareForCurrentLocationNasional($message_id, $clientDeviceId, $from, $to, $locLat, $locLng, $locName, $locAddress, $timestamp);
$data = json_decode($rawData);
$data_message = $data->data_message;
}
$dataInboundAnswer = [
'type' => $data_message->type,
'message' => isset($data_message->message) ? $data_message->message : "",
'sender' => $data_message->sender,
'receiver' => $data_message->receiver,
'loc_lat' => isset($data_message->loc_lat) ? $data_message->loc_lat : 0,
'loc_lng' => isset($data_message->loc_lng) ? $data_message->loc_lng : 0,
'loc_name' => isset($data_message->loc_name) ? $data_message->loc_name : "",
'loc_address' => isset($data_message->loc_address) ? $data_message->loc_address : "",
'created' => date("Y-m-d H:i:s"),
'updated' => date("Y-m-d H:i:s"),
];
$inboundAnsware = $this->data->set("message_inbound_answer", $dataInboundAnswer);
$inboundAnsware = json_decode($inboundAnsware);
$inboundAnswareData = $inboundAnsware->data;
if($customerIsRegis == null){
// Belum registrasi
print_r("Belum Regis");
$this->fx->processAutoreplyNasional($device, $inboundAnswareData, $customerName);
}else{
// Sudah registrasi
$this->fx->processAutoreplyIsRegis($device, $inboundAnswareData, $customerName);
}
}
public function saveInbound(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
if ($json === "" || $json === null) return;
$response = array();
$key = $json['access_key'] != "" || $json['access_key'] != null ? $json['access_key'] : "";
$client = $json['device_name'] != "" || $json['device_name'] != null ? $json['device_name'] : "";
$this->clientDevice->checkAccesKey($key);
$device = $this->clientDevice->checkDeviceName($client);
$type = $json['data']['type'] ? $json['data']['type'] :"";
$message_id = isset($json['data']['message_id']) ? $json['data']['message_id'] : "";
$related_message_id = isset($json['data']['related_message_id']) ? $json['data']['related_message_id'] : "";
$from = $this->fx->phoneCleaning($json['data']['from'], "@");
$author = isset($json['data']['author']) ? $json['data']['author'] : "";
$customerName = isset($json['data']['customer_name']) ? $json['data']['customer_name'] : "";
$message = isset($json['data']['message']) ? $json['data']['message'] : "";
$caption = isset($json['data']['caption']) ? $json['data']['caption'] : "";
$fileType = isset($json['data']['filetype']) ? $json['data']['filetype'] : "";
$fileName = isset($json['data']['media_origin_filename']) ? $json['data']['media_origin_filename'] : "";
$timestamp = isset($json['data']['timestamp']) ? $json['data']['timestamp'] : "";
$locLat = isset($json['data']['latitude']) ? $json['data']['latitude'] : "";
$locLng = isset($json['data']['longitude']) ? $json['data']['longitude'] : "";
$locName = isset($json['data']['loc_name']) ? $json['data']['loc_name'] : "";
$locAddress = isset($json['data']['loc_address']) ? $json['data']['loc_address'] : "";
$b64 = isset($json['data']['b64']) ? $json['data']['b64'] : "";
$selected_row_id = isset($json['data']['selected_row_id']) ? $json['data']['selected_row_id'] : "";
$selected_row_title = isset($json['data']['selected_row_title']) ? $json['data']['selected_row_title'] : "";
$selected_row_description = isset($json['data']['selected_row_description']) ? $json['data']['selected_row_description'] : "";
// Blokir no device sebagai sender yang sesuai komunitas nya
$clientIdCommunity = $this->data->get("client_device", "left join device on device.id = client_device.device_id WHERE device.name = '$client'", "client_id");
$clientIdCommunity = $clientIdCommunity->client_id;
$noDevices = $this->data->gets("client_device", "WHERE status = 1 AND client_id = '$clientIdCommunity'");
foreach ($noDevices as $nd) {
$noDevice = $nd->phone;
if ($from == $noDevice) {
return;
}
}
$to = $this->fx->phoneCleaning($device->client_device_phone, ":");
$clientDeviceId = $device->client_device_id;
$adminDeviceId = $device->admin_device_id;
$clientId = $device->client_id;
$media_name = $from . "_" . $to . "_" . time();
$saveMedia = "";
$message_inbound = "";
$data_message = "";
$customer = $this->customer->check($adminDeviceId, $from, $customerName);
$customerIsRegis = $customer->is_register;
$custClient = $this->clientDevice->loadGetByCustPhone($from,$to);
$isNasional = $this->regionModel->loadCheckNasional($clientId);
$isNasional = json_decode($isNasional, false);
$isNasional = $isNasional->success;
$custClient = json_decode($custClient, false);
$custClientData = $custClient->data;
$custClientId = $custClientData->clientId;
$customerGroup = $this->data->get('customer_group',"WHERE customer_id = $customer->id");
$reqLiveChat = $customerGroup->request_livechat;
$customerId = $customerGroup->customer_id;
// START PREPARE DATA TO MESSAGE INBOUND
// cek b64
if($b64 != "" && $reqLiveChat == 0){
$saveMedia = $this->fx->saveMedia($b64, $media_name);
}elseif($b64 != "" && $reqLiveChat != 0 ){
$saveMedia = $this->fx->saveMediaLiveChat($b64, $media_name);
}
if ($type == 'text') {
$rawData = $this->messageInbound->prepareForText($message_id, $clientDeviceId, $from, $to, $message, $timestamp);
$data = json_decode($rawData);
$data_message = $data->data_message;
$chatWithAgent = $data->chat_with_agent;
}
if ($type == 'image') {
$data_message = $this->messageInbound->prepareForImage($message_id, $clientDeviceId, $from, $to, $caption, $saveMedia, $fileType, $timestamp);
}
if ($type == 'video') {
$data_message = $this->messageInbound->prepareForVideo($message_id, $clientDeviceId, $from, $to, $caption, $saveMedia, $fileType, $timestamp);
}
if ($type == 'document') {
$data_message = $this->messageInbound->prepareForDocument($message_id, $clientDeviceId, $from, $to, $fileName, $saveMedia, $fileType, $timestamp);
}
if ($type == 'current_location') {
$data_message = $this->messageInbound->prepareForCurrentLocation($message_id, $clientDeviceId, $from, $to, $locLat, $locLng, $locName, $locAddress, $timestamp);
}
if ($type == 'live_location') {
$data_message = $this->messageInbound->prepareForLiveLocation($message_id, $clientDeviceId, $from, $to, $locLat, $locLng, $locName, $caption, $timestamp);
}
if ($type == 'list_response') {
$rawData = $this->messageInbound->prepareForListResponse($message_id, $clientDeviceId, $from, $to, $selected_row_id, $selected_row_title, $selected_row_description, $timestamp);
$data = json_decode($rawData);
$data_message = $data->data_message;
$toAgent = $data->to_agent;
// if ($chatWithAgent == 1 && $selected_row_title == $data_title_static->title ){
// // $message_inbound = $this->data->set("message_inbound", $data_message);
// // $message_inbound_id = $message_inbound->id;
// $message = "greeting_start_cs";
// $this->fx->bot_message($client, $from, $type, $message, $customerName, 0);
// }
// print_r($data_message);
// die();
}
// END PREPARE DATA TO MESSAGE INBOUND
if ($reqLiveChat == 0){
$messageInbound = $this->data->set("message_inbound", $data_message);
$messageInbound = json_decode($messageInbound, false);
if($messageInbound->success == true){
if ($customerIsRegis == null && $clientId == $custClientId && $isNasional == true) {
print_r("Customer tidak teregistrasi");
$messageInboundData = $messageInbound->data;
$this->fx->processAutoreplyNotRegistered($device, $messageInboundData, $customerName,$customerId,$adminDeviceId);
} else if ($customerIsRegis == 1 && $clientId == $custClientId && $isNasional == true){
print_r("Customer sudah terdaftar");
$messageInboundData = $messageInbound->data;
$this->fx->processAutoreply($device, $messageInboundData, $customerName,$customerId,$adminDeviceId);
}else{
$messageInboundData = $messageInbound->data;
$this->fx->processAutoreplyGlobal($device, $messageInboundData, $customerName,$customerId,$adminDeviceId);
}
}
}
//untuk live chat
if ($reqLiveChat != 0){
echo "start livechat";
$this->fx->live_message_v2($clientDeviceId, $adminDeviceId, $to, $from, $type, $message,$reqLiveChat,$saveMedia);
}
$data_response = array(
'status' => 'OK',
'message' => 'Message Received',
'data_raw' => $data_message
);
echo json_encode($data_response);
}
function custChatWith($form){
$customer = $this->data->get('customer', "WHERE phone = '$form'");
return $customer->is_chat_with_bot;
}
function time_Diff_Minutes($startTime, $endTime) {
$to_time = strtotime($endTime);
$from_time = strtotime($startTime);
$minutes = ($to_time - $from_time) / 60;
return ($minutes < 0 ? 0 : abs($minutes));
}
public function createSession($cust_id){
$start = date("Y-m-d H:i:s");
$end = date("Y-m-d H:i:s", strtotime('+5 minutes'));
$data = array(
'cust_id' => $cust_id,
'start' => $start,
'end' => $end,
);
// print_r($data);
$this->data->set("customer_session", $data);
}
public function checkCustSession($cust_id, $phone_number){
echo "checkCustSession";
$customer_session = $this->data->get('customer_session', "join customer on customer.id = customer_session.cust_id WHERE customer.phone = '$phone_number' order by customer_session.id desc
limit 1");
$end = $customer_session->end;
$now = date("Y-m-d H:i:s");
$diff = $this->time_Diff_Minutes($now, $end);
$status = false;
if($diff <= 1){
//new session, new greeting
$this->createSession($cust_id);
}
return $diff;
}
public function status()
{
$file = file_get_contents('php://input');
$json = json_decode($file, true);
if ($json['apikey'] == 'we4567talk') {
$data = array(
'status_code' => $json['data']['ack'],
'status' => $json['data']['status'],
'message_id' => $json['data']['message_id'],
'created' => date("Y-m-d H:i:s", $json['data']['timestamp']),
);
$insert = $this->data->set("message_status", $data);
$data_response = array(
'status' => 'OK',
'message' => 'Status Received'
);
echo json_encode($data_response);
}else{
echo 'error';
}
}
public function qr_timeout()
{
$file = file_get_contents('php://input');
$json = json_decode($file, true);
if ($json['apikey'] == 'we4567talk') {
$device = $this->data->get('device', "WHERE name = '$json[client]'");
$data_update = array(
'scan_request' => 'on',
);
$this->data->update('device', $data_update, $device->id);
$data = array(
'client' => $json['client']
);
$this->fx->pusherSend('wetalk_whatsapp', 'qr-timeout', $data);
$data_response = array(
'status' => 'OK',
'message' => 'QR Timeout'
);
echo json_encode($data_response);
}else{
echo 'error';
}
}
public function get_qr()
{
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$deviceName = $json['device_name'];
$getDeviceId = $this->data->get("device", "WHERE name = '$deviceName'");
$getDeviceId = $getDeviceId->id;
$getClientId = $this->data->get('client_device', "WHERE device_id = $getDeviceId and status = 1");
$getClientId = $getClientId->id;
$getAdminId = $this->data->get('admin_device', "WHERE client_device_id = $getClientId");
$getAdminId = $getAdminId->client_id;
// echo "getAdminId $getAdminId";
$device_ = $this->adminDevice->loadDeviceAdmin($getAdminId);
// print_r($device_);
$device = json_decode($device_);
$message = $device->message == false ? $device->message : "";
$deviceData = $device->data;
if (!is_null($deviceData)) {
$deviceName = $deviceData->device_name;
$accessKey = $deviceData->client_device_access_key;
$scanRequest = $deviceData->client_device_scan_request;
$scan = $deviceData->client_device_scan;
$urlServer = $deviceData->device_url_server;
$clientDeviceId = $deviceData->client_device_id;
$clientDevicePusherChannel = $deviceData->client_device_pusher_channel;
if($accessKey == $json['access_key']){
$data = array(
'qr' => $json['qr'],
'device_name' => $json['device_name']
);
// $this->fx->pusherSend('wetalk_whatsapp', 'get-qr', $data);
$this->fx->pusherSendv2($clientDevicePusherChannel, 'get-qr', $data, $clientDeviceId);
$data_response = array(
'status' => 'OK',
'message' => 'QR Received'
);
echo json_encode($data_response);
}else {
echo "wrong access key";
}
}else {
echo "no device";
}
}
// public function testPg(){
// $order_id = rand();
// $amount = 30000;
// $responsex = $this->fx->get_payment_url($order_id, $amount);
// print_r($responsex);
// }
function notify_success(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$payment_data = [
'outbound_id' => 10
];
$chat = $this->data->set("transactions", $payment_data);
$data_response = array(
'status' => 'ok',
'message' => 'success payment'
);
echo json_encode($data_response);
}
function notify_failure(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$data_response = array(
'status' => 'ok',
'message' => 'failed payment'
);
echo json_encode($data_response);
}
function tes_midtrans_config(){
$this->fx->get_payment_url("","");
}
public function scan(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$deviceId = $json['device_id'];
$getIdClient = $this->data->get("client_device", "WHERE device_id = $deviceId and status = 1");
$getIdClient = $getIdClient->id;
$getAdminDevice = $this->data->get('admin_device', "WHERE client_device_id = $getIdClient");
$getAdminDevice = $getAdminDevice->client_id;
$device_ = $this->adminDevice->loadDeviceAdmin($getAdminDevice);
$device = json_decode($device_);
$message = $device->message == false ? $device->message : "";
$deviceData = $device->data;
if (!is_null($deviceData)) {
$deviceName = $deviceData->device_name;
$accessKey = $deviceData->client_device_access_key;
$scanRequest = $deviceData->client_device_scan_request;
$scan = $deviceData->client_device_scan;
$urlServer = $deviceData->device_url_server;
$clientDeviceId = $deviceData->client_device_id;
$clientDevicePusherChannel = $deviceData->client_device_pusher_channel;
if ($scanRequest == 'on') {
$paramSend = array(
'deviceName' => $deviceName,
'isLegacy' => true
);
$response = $this->fx->sendApi($urlServer.'/session/add', $paramSend);
// print_r($response);
// die;
if (strpos($response, 'Connection refused') == true) {
$response = array(
'success' => false,
'message' => '-',
'data' => 'connection_refused'
);
}
$json = json_decode($response, true);
if(!empty($json)){
if ($json['success'] == true) {
$qr = $json['data']['qr'];
$deviceName = $json['data']['deviceName'];
$data = array(
'qr' => $qr,
'deviceName' => $deviceName
);
// $this->fx->pusherSend('wetalk_whatsapp', 'get-qr', $data);
$this->fx->pusherSendv2($clientDevicePusherChannel, 'get-qr', $data, $clientDeviceId);
// echo $deviceName;
$response = array(
'success' => true,
'message' => 'ok',
'data' => $deviceName
);
}
}else {
$response = array(
'success' => false,
'message' => '-',
'data' => 'error'
);
}
}else {
$response = array(
'success' => false,
'message' => '-',
'data' => 'already_connect'
);
}
} else {
$response = array(
'success' => false,
'message' => '-',
'data' => 'no device data'
);
}
echo json_encode($response);
}
public function updateConfigId(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$response = array();
$key = $json['access_key'] != "" || $json['access_key'] != null ? $json['access_key'] : "";
$client = $json['device_name'] != "" || $json['device_name'] != null ? $json['device_name'] : "";
$this->clientDevice->checkAccesKey($key);
$device = $this->clientDevice->checkDeviceName($client);
$deviceId = $device != null ? $device->device_id : 0;
$clientDeviceId = $device != null ? $device->client_device_id : 0;
$noHp =$json['id'];
$isBusiness =$json['is_business'];
$response = null;
if($deviceId > 0 && $clientDeviceId > 0){
$dataUpdate = array(
'phone' => $noHp,
'is_business' => $isBusiness,
'updated' => date('Y-m-d H:i:s')
);
$this->data->update("client_device", $dataUpdate, $clientDeviceId);
$dataUpdate = array(
'updated' => date('Y-m-d H:i:s')
);
$this->data->update("device", $dataUpdate, $deviceId);
$response = array(
'status' => 'OK',
'message' => 'Config id updated'
);
}else {
$response = array(
'status' => 'FAIL',
'message' => 'Config device not updated'
);
}
echo json_encode($response);
}
public function updateConfigName(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$response = array();
$key = $json['access_key'] != "" || $json['access_key'] != null ? $json['access_key'] : "";
$client = $json['device_name'] != "" || $json['device_name'] != null ? $json['device_name'] : "";
$this->clientDevice->checkAccesKey($key);
$device = $this->clientDevice->checkDeviceName($client);
$deviceId = $device != null ? $device->device_id : 0;
$clientDeviceId = $device != null ? $device->client_device_id : 0;
$name = $json['name'];
$isBusiness = $json['is_business'];
if($deviceId > 0 && $clientDeviceId > 0){
$clientDataUpdate = array(
'push_name' => $name,
'is_business' => $isBusiness,
'updated' => date('Y-m-d H:i:s')
);
$this->data->update("client_device", $clientDataUpdate, $clientDeviceId);
$dataUpdate = array(
'updated' => date('Y-m-d H:i:s')
);
$this->data->update("device", $dataUpdate, $deviceId);
$response = array(
'status' => 'OK',
'message' => 'Config name updated'
);
}else {
$response = array(
'status' => 'FAIL',
'message' => 'Config device not updated'
);
}
echo json_encode($response);
}
public function updateConfigPlatform()
{
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$response = array();
$key = $json['access_key'] != "" || $json['access_key'] != null ? $json['access_key'] : "";
$client = $json['device_name'] != "" || $json['device_name'] != null ? $json['device_name'] : "";
$this->clientDevice->checkAccesKey($key);
$device = $this->clientDevice->checkDeviceName($client);
$deviceId = $device != null ? $device->device_id : 0;
$clientDeviceId = $device != null ? $device->client_device_id : 0;
$platform = $json['platform'];
$isBusiness = $json['is_business'];
if($deviceId > 0 && $clientDeviceId > 0){
$dataUpdate = array(
'platform' => $platform,
'is_business' => $isBusiness,
'updated' => date('Y-m-d H:i:s')
);
$this->data->update("client_device", $dataUpdate, $clientDeviceId);
$dataUpdate = array(
'updated' => date('Y-m-d H:i:s')
);
$this->data->update("device", $dataUpdate, $deviceId);
$response = array(
'status' => 'OK',
'message' => 'Config platform updated'
);
}else {
$response = array(
'status' => 'FAIL',
'message' => 'Config device not updated'
);
}
echo json_encode($response);
}
public function updateConfigScan(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$response = array();
$key = $json['access_key'] != "" || $json['access_key'] != null ? $json['access_key'] : "";
$client = $json['device_name'] != "" || $json['device_name'] != null ? $json['device_name'] : "";
$this->clientDevice->checkAccesKey($key);
$device = $this->clientDevice->checkDeviceName($client);
$deviceId = $device != null ? $device->device_id : 0;
$clientDeviceId = $device != null ? $device->client_device_id : 0;
$clientDevicePusherChannel = $device != null ? $device->client_device_pusher_channel : 0;
$data = array(
'scan' => $json['scan'],
'scan_request' => $json['scan'] == 'on' ? 'on' : 'off',
'updated' => date('Y-m-d H:i:s'),
);
$this->data->update('client_device', $data, $clientDeviceId);
$dataUpdate = array(
'updated' => date('Y-m-d H:i:s')
);
$this->data->update("device", $dataUpdate, $deviceId);
$data_pusher = array(
'scan' => $json['scan'],
'client' => $client
);
// $this->fx->pusherSend('wetalk_whatsapp', 'config-scan', $data_pusher);
$this->fx->pusherSendv2($clientDevicePusherChannel, 'config-scan', $data_pusher, $clientDeviceId);
$data_response = array(
'status' => 'OK',
'message' => 'Config scan updated'
);
echo json_encode($data_response);
}
public function disconnected(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$response = array();
$key = $json['access_key'] != "" || $json['access_key'] != null ? $json['access_key'] : "";
$client = $json['device_name'] != "" || $json['device_name'] != null ? $json['device_name'] : "";
$this->clientDevice->checkAccesKey($key);
$device = $this->clientDevice->checkDeviceName($client);
$deviceId = $device != null ? $device->device_id : 0;
$clientDeviceId = $device != null ? $device->client_device_id : 0;
$clientDevicePusherChannel = $device != null ? $device->client_device_pusher_channel : 0;
$response = null;
if($deviceId > 0 && $clientDeviceId > 0){
$dataUpdate = array(
'scan' => 'on',
'scan_request' => 'on',
'push_name' => '',
'platform' => '',
'phone' => '',
'updated' => date('Y-m-d H:i:s')
);
$this->data->update("client_device", $dataUpdate, $clientDeviceId);
$response = array(
'status' => 'OK',
'message' => 'Device is disconnected'
);
$data_pusher = array(
'client' => $client
);
// $this->fx->pusherSend('wetalk_whatsapp', 'config-disconnected', $data_pusher);
$this->fx->pusherSendv2($clientDevicePusherChannel, 'config-disconnected', $data_pusher, $clientDeviceId);
}else {
$response = array(
'status' => 'FAIL',
'message' => 'Config device not updated'
);
}
echo json_encode($response);
}
// In Process Broadcast terdapat status 0 (pending), 1 (success), 2 (failed)
public function processBroadcastSuccess(){
$getTransactions = $this->messagingModel->loadTransactionsSuccess(0, date('Y-m-d'));
$getTransactions = json_decode($getTransactions);
$message = $getTransactions->success == false ? $getTransactions->message : "";
$getTransactions = $getTransactions->data;
if (count($getTransactions) != 0) {
foreach($getTransactions as $gt) {
if ($gt->client_device_status != 0) {
$param_send = [
"id" => $gt->broadcast_id,
"access_key" => $gt->client_device_access_key,
"receiver" => $gt->broadcast_receiver,
"message_header" => $gt->broadcast_message_header,
"message_body" => $gt->broadcast_message_body,
"message_footer" => $gt->broadcast_message_footer,
"media_url" => $gt->broadcast_media_url,
"message_type" => $gt->broadcast_message_type,
"device_name" => $gt->device_name,
];
$response = $this->fx->sendApi($gt->broadcast_url . '/chat/sendBroadcast', $param_send);
$interval = rand(3, 8);
sleep($interval);
} else {
$id = $gt->broadcast_id;
$param_send = [
"status" => 2
];
$this->data->update('broadcast', $param_send, $id);
}
}
}
}
// In Process Broadcast terdapat status 0 (pending), 1 (success), 2 (failed)
public function processBroadcastFailed(){
$getTransactions = $this->messagingModel->loadTransactionsFailed(0, date('Y-m-d'));
$getTransactions = json_decode($getTransactions);
$message = $getTransactions->success == false ? $getTransactions->message : "";
$getTransactions = $getTransactions->data;
if (count($getTransactions) != 0) {
foreach($getTransactions as $gt) {
$id = $gt->id;
$param_send = [
"status" => 2,
];
$this->data->update('broadcast', $param_send, $id);
}
}
}
public function autoDeleteMessage(){
$getMessage = $this->messagingModel->loadGetsMessageForDelete(date('Y-m-d'));
$getMessage = json_decode($getMessage, false);
$getMessage = $getMessage->data;
foreach($getMessage as $gm) {
if ($gm->outbound_key != null && $gm->inbound_key != null) {
$param_send = [
'outbound_id' => $gm->message_outbound_id,
'inbound_id' => $gm->message_inbound_id,
'outbound_receiver' => $gm->outbound_receiver,
'message' => $gm->message,
'url_server' => $gm->url_server,
'device_name' => $gm->device_name,
'access_key' => $gm->access_key,
'key_outbound' => $gm->outbound_key,
'key_inbound' => $gm->inbound_key,
'timestamp_outbound' => $gm->message_outbound_timestamp,
'timestamp_inbound' => $gm->message_inbound_timestamp,
];
$this->fx->sendApi($gm->url_server . '/chat/autoDeleteMessage', $param_send);
$interval = rand(1, 4);
sleep($interval);
}
}
}
public function deleteMessage(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$data = isset($json['data']) ? $json['data'] : "";
$outbound_id = isset($data['id_outbound']) ? $data['id_outbound'] : "";
$inbound_id = isset($data['id_inbound']) ? $data['id_inbound'] : "";
$dataOutbound = [
'message_id' => null
];
$dataInbound = [
'message_id' => null
];
$this->data->update('message_outbound', $dataOutbound, $outbound_id);
$this->data->update('message_inbound', $dataInbound, $inbound_id);
}
public function saveLiveChat(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
echo "--start save_message outbound--";
print_r($json);
// $data = isset($json['data']) ? $json['data'] : "";
// $id = isset($data['id_broadcast']) ? $data['id_broadcast'] : "";
// $data_message = array(
// 'status' => 1,
// 'updated' => date("Y-m-d H:i:s"),
// );
// $this->data->update('broadcast', $data_message, $id);
// $dataResponse = array(
// 'success' => true,
// 'message' => 'save outbound ok',
// );
// echo json_encode($dataResponse);
}
public function saveBroadcast(){
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$data = isset($json['data']) ? $json['data'] : "";
$id = isset($data['id_broadcast']) ? $data['id_broadcast'] : "";
$data_message = array(
'status' => 1,
'updated' => date("Y-m-d H:i:s"),
);
$this->data->update('broadcast', $data_message, $id);
$dataResponse = array(
'success' => true,
'message' => 'save outbound ok',
);
echo json_encode($dataResponse);
// }
}
public function saveGroup()
{
$file = file_get_contents('php://input');
$json = json_decode($file, true);
// echo "--start save_message outbound--";
// print_r($json);
$data = isset($json['data']) ? $json['data'] : "";
$deviceName = $json['device_name'];
$getDeviceId = $this->data->get("device", "WHERE name = '$deviceName'");
$getDeviceId = $getDeviceId->id;
$getClientId = $this->data->get('client_device', "WHERE device_id = $getDeviceId");
$getClientId = $getClientId->id;
$getAdminId = $this->data->get('admin_device', "WHERE client_device_id = $getClientId");
$getAdminId = $getAdminId->client_id;
$device_ = $this->adminDevice->loadDeviceAdmin($getAdminId);
$device = json_decode($device_);
$message = $device->message == false ? $device->message : "";
$deviceData = $device->data;
$groupId = isset($data['group_id']) ? $data['group_id'] : "";
$groupNo = isset($data['group_no']) ? $data['group_no'] : "";
$groupName = isset($data['group_name'][0]) ? $data['group_name'][0] : "";
$inviteFrom = isset($data['invite_from']) ? $data['invite_from'] : "";
$messageTimestamp = isset($data['message_timestamp']) ? $data['message_timestamp'] : "";
$deviceGroupExist = $this->data->get("device_on_group", "WHERE group_no = $groupNo AND status = 1");
// if(isset($from_me)){
if (!isset($deviceGroupExist)) {
$data_message = array(
'client_device_id' => $deviceData->client_device_id,
'group_id' => $groupId,
'group_no' => $groupNo,
'group_name' => $groupName,
'invite_from' => $inviteFrom,
'message_timestamp' => $messageTimestamp,
'status' => 1,
'created' => date("Y-m-d H:i:s")
);
$this->data->set('device_on_group', $data_message);
}
// $dataResponse = array(
// 'success' => true,
// 'message' => 'save outbound ok',
// );
// echo json_encode($dataResponse);
// }
}
public function removeGroup()
{
$file = file_get_contents('php://input');
$json = json_decode($file, true);
$data = isset($json['data']) ? $json['data'] : "";
$groupNo = isset($data['group_no']) ? $data['group_no'] : "";
$inviteFrom = isset($data['invite_from']) ? $data['invite_from'] : "";
$messageTimestamp = isset($data['message_timestamp']) ? $data['message_timestamp'] : "";
$participantRemove = isset($data['participant_remove']) ? $data['participant_remove'] : "";
$dataClientDevice = $this->data->get("client_device", "WHERE phone = '$participantRemove'");
$deviceDataClientDeviceId = $dataClientDevice->id;
$deviceGroupExist = $this->data->get("device_on_group", "WHERE group_no = $groupNo AND client_device_id = $deviceDataClientDeviceId AND status = 1");
// if(isset($from_me)){
if (isset($deviceGroupExist)) {
$data_message = array(
'remove_by' => $inviteFrom,
'message_timestamp' => $messageTimestamp,
'status' => 2,
'created' => date("Y-m-d H:i:s")
);
$this->data->update('device_on_group', $data_message, $groupNo, 'group_no');
}
// $dataResponse = array(
// 'success' => true,
// 'message' => 'save outbound ok',
// );
// echo json_encode($dataResponse);
// }
}
public function saveDeviceMessageCustomer()
{
$file = file_get_contents('php://input');
$json = json_decode($file, true);
echo "-- saveDeviceMessageCustomer --";
if ($json === "" || $json === null) return;
$data = isset($json['data']) ? $json['data'] : "";
// Client_Device_Id
$deviceName = $json['device_name'];
$getDeviceId = $this->data->get("device", "WHERE name = '$deviceName'");
$getDeviceId = $getDeviceId->id;
$getClientId = $this->data->get('client_device', "WHERE device_id = $getDeviceId");
$getClientId = $getClientId->id;
$getAdminId = $this->data->get('admin_device', "WHERE client_device_id = $getClientId");
$getAdminId = $getAdminId->client_id;
$device_ = $this->adminDevice->loadDeviceAdmin($getAdminId);
$device = json_decode($device_);
$message = $device->message == false ? $device->message : "";
$deviceData = $device->data;
$clientDeviceId = $deviceData->client_device_id;
$messageId = isset($data['message_id']) ? $data['message_id'] : "";
$type = isset($data['type']) ? $data['type'] : "";
$messageIdGroup = isset($data['message_id_group']) ? $data['message_id_group'] : "";
$customerName = isset($data['customer_name']) ? $data['customer_name'] : "";
$sender = isset($data['sender']) ? $data['sender'] : "";
$message = isset($data['message']) ? $data['message'] : "";
$timestamp = isset($data['timestamp']) ? $data['timestamp'] : "";
// Image
$b64 = isset($data['b64']) ? $data['b64'] : "";
$caption = isset($data['caption']) ? $data['caption'] : "";
$fileType = isset($data['filetype']) ? $data['filetype'] : "";
// Document
$fileName = isset($json['data']['media_origin_filename']) ? $json['data']['media_origin_filename'] : "";
// Location
$locLat = isset($json['data']['latitude']) ? $json['data']['latitude'] : "";
$locLng = isset($json['data']['longitude']) ? $json['data']['longitude'] : "";
$locName = isset($json['data']['loc_name']) ? $json['data']['loc_name'] : "";
$locAddress = isset($json['data']['loc_address']) ? $json['data']['loc_address'] : "";
$dataDeviceOnGroup = $this->data->get("device_on_group", "WHERE group_no = $messageIdGroup", "id, client_device_id");
$idDeviceOnGroup = $dataDeviceOnGroup->id;
$clientDeviceIdDeviceOnGroup = $dataDeviceOnGroup->client_device_id;
// Jika chat bukan berasal dari chatbot yang pertama di invite group maka data jangan dimasukan
if ($getClientId != $clientDeviceIdDeviceOnGroup) return;
// group_no_message akan di return jika status
if ($messageIdGroup == "status") return;
// Menambahkan customer ke group customer_group_wa
$this->customer->checkGroup($idDeviceOnGroup, $sender, $customerName, $idDeviceOnGroup);
$media_name = $sender . "_" . time();
if($b64 != ""){
$saveMedia = $this->fx->saveMediaGroup($b64, $media_name);
}
if ($type == 'text') {
$rawData = $this->messageInbound->prepareForTextGroup($idDeviceOnGroup, $messageIdGroup, $messageId, $sender, $customerName, $message, $timestamp);
$data = json_decode($rawData);
$data_message = $data->data_message;
$chatWithAgent = $data->chat_with_agent;
}
if ($type == 'image') {
$data_message = $this->messageInbound->prepareForImageGroup($idDeviceOnGroup, $messageIdGroup, $messageId, $sender, $customerName, $caption, $saveMedia, $fileType, $timestamp);
}
if ($type == 'video') {
$data_message = $this->messageInbound->prepareForVideoGroup($idDeviceOnGroup, $messageIdGroup, $messageId, $sender, $customerName, $caption, $saveMedia, $fileType, $timestamp);
}
if ($type == 'document') {
$data_message = $this->messageInbound->prepareForDocumentGroup($idDeviceOnGroup, $messageIdGroup, $messageId, $sender, $customerName, $fileName, $saveMedia, $fileType, $timestamp);
}
if ($type == 'current_location') {
$data_message = $this->messageInbound->prepareForCurrentLocationGroup($idDeviceOnGroup, $messageIdGroup, $messageId, $sender, $customerName, $locLat, $locLng, $locName, $locAddress, $timestamp);
}
if ($type == 'live_location') {
$data_message = $this->messageInbound->prepareForLiveLocationGroup($idDeviceOnGroup, $messageIdGroup, $messageId, $sender, $customerName, $locLat, $locLng, $locName, $caption, $timestamp);
}
echo "-- data_message --";
print_r($data_message);
$result = $this->data->set('message_inbound_group', $data_message);
print_r($result);
// $dataResponse = array(
// 'success' => true,
// 'message' => 'save outbound ok',
// );
// echo json_encode($dataResponse);
}
public function bulkSendMessagesCustomer(){
// Load data customer yang sudah teregistrasi
$clientId = 7; //id unique di table client_device
$getCustomers = $this->clientDevice->loadGetCustomerByClientId($clientId);
$getCustomers = json_decode($getCustomers);
$getCustomersData = $getCustomers->data;
// Foreach data customer
foreach ($getCustomersData as $gc) {
$loadNotif = $this->fx->loadAutoreplySystem(1);
$provinceId = $gc->customer_province_id;
$getProvinceCustomer = $this->data->get("provinces", "WHERE id = $provinceId");
$replace_message = [
'nama' => $gc->customer_name,
'province' => $getProvinceCustomer->name
];
$message = $loadNotif->message_body;
if(isset($replace_message))
$message = preg_replace_callback('/{{(\w+)}}/', function($match) use($replace_message) {
return $replace_message[$match[1]];
}, $message );
$buttons = array(
"button_1_id" => $loadNotif->button_1_id,
"button_1_label" => $loadNotif->button_1_label,
"button_2_id" => $loadNotif->button_2_id,
"button_2_label" => $loadNotif->button_2_label,
"button_3_id" => $loadNotif->button_3_id,
"button_3_label" => $loadNotif->button_3_label
);
$paramSend = [
"access_key" => $gc->client_device_access_key,
'sender' => $gc->client_device_phone,
"receiver" => $gc->customer_phone,
"message_body" => $message,
'buttons' => $buttons,
'button_1_id' => $loadNotif->button_1_id,
'button_1_label' => $loadNotif->button_1_label,
"message_type" => $loadNotif->message_type,
"device_name" => $gc->device_name,
];
$response = $this->fx->sendApi($gc->device_url_server . '/chat/sendv2', $paramSend);
// Buat interval untuk setiap message
$interval = rand(3, 5);
sleep($interval);
}
}
}
Editor is loading...