513 lines
28 KiB
PHP
513 lines
28 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Rapiwha;
|
|
use App\Models\Session;
|
|
use Illuminate\Support\Str;
|
|
use App\Http\Requests\LambdaRequest;
|
|
use Illuminate\Support\Facades\Http;
|
|
use App\Http\Requests\Creation;
|
|
use Log;
|
|
use DB;
|
|
use App\Models\User;
|
|
use App\Services\SessionCommunicationService;
|
|
|
|
class BotController extends LocalController
|
|
{
|
|
protected $comm;
|
|
|
|
public function __construct(SessionCommunicationService $comm)
|
|
{
|
|
$this->comm = $comm;
|
|
}
|
|
|
|
protected function interaktAuthHeader(): string
|
|
{
|
|
return env('INTERAKT_API_AUTH', 'Basic S1BnVWoxRGZUcWpTYVl2OG9ZN3lEbkk2YjlXTzUtZXhvOWpMQ3RIN3ZJVTo=');
|
|
}
|
|
|
|
protected function sendMsg($number, $message) {
|
|
Log::debug(print_r([$number, $message], true));
|
|
$params = ["countryCode" => "+91",
|
|
"phoneNumber" => $number,
|
|
"callbackData" => "some text here",
|
|
"type" => "Text",
|
|
"data" => ["message" => $message]
|
|
];
|
|
$response = Http::withHeaders(['Authorization' => $this->interaktAuthHeader()])
|
|
->post('https://api.interakt.ai/v1/public/message/', $params);
|
|
Log::debug(print_r($response, true));
|
|
}
|
|
|
|
protected function deliverSessionText($number, $message, $session, $contact): void
|
|
{
|
|
if (!$session || !$contact) {
|
|
$this->sendMsg($number, $message);
|
|
return;
|
|
}
|
|
|
|
$mode = $this->comm->resolveMode($session);
|
|
|
|
if ($this->comm->shouldSendWhatsApp($mode)) {
|
|
$this->sendMsg($number, $message);
|
|
}
|
|
|
|
if ($this->comm->shouldSendEmail($mode)) {
|
|
$this->comm->queueEmailFromText($session, $contact, $message);
|
|
}
|
|
}
|
|
|
|
public function webhook(Request $request) {
|
|
Log::debug('===== Webhook ======');
|
|
$post = $request->all();
|
|
Log::debug(print_r($post, true));
|
|
if(isset($post['type']) && $post['type'] == "message_received") {
|
|
return response()->json([]);
|
|
}
|
|
if(!isset($post['entry'][0]['changes'][0]['value']['messages'][0])) {
|
|
return response()->json([]);
|
|
}
|
|
|
|
$post = $post['entry'][0]['changes'][0]['value']['messages'][0];
|
|
|
|
//Log::debug(print_r($post, true));
|
|
$domain = 'https://road.xltr.in/';
|
|
|
|
// $number = $post['data']['customer']['phone_number'];
|
|
// $data['from'] = '91'.$post['data']['customer']['phone_number'];
|
|
// $data['text'] = $post['data']['message']['message'];
|
|
$number = substr($post['from'], -10);
|
|
$data['from'] = $post['from'];
|
|
$data['text'] = $post['text']['body'];
|
|
//CREST_VERIFY_LMS_1692788174-76994ced-b2da-4920-814b-df2cbb10aC4c
|
|
$reply = '';
|
|
$session_data = [];
|
|
$sessions = [];
|
|
$finalised = false;
|
|
$botSess = Rapiwha::where('from', $data['from'])->where('created_at', '>=', date("Y-m-d H:i:s", strtotime("now")-88200 ) )->orderby('created_at', 'desc')->first();
|
|
Log::debug(print_r($data, true));
|
|
if(strpos($data['text'],'CREST_VERIFY_') === 0) {
|
|
list($code, $uid) = explode('_', str_replace('CREST_VERIFY_', '', $data['text']) );
|
|
|
|
if($code == 'LMS') {
|
|
$contact = LambdaRequest::getrequest('contact', 'contact/get_one', ['id'=>$uid], env('LAMBDA_ACCESS_TOKEN', 'default_value') );
|
|
$contact = $contact->data->item;
|
|
$access_token = User::where('user_id', $contact->user_id)->first()->access_token;
|
|
$response = LambdaRequest::postrequest('contact', 'contact/update', ['id' => $uid, 'position'=>$contact->position, 'is_verified' => true ], $access_token );
|
|
$reply = 'Greetings ' . $response->data->item->name ."\n";
|
|
$reply .= 'You have Successfully registered for Paramedic Training Course'."\n";
|
|
$reply .= "\n" . 'Please click on the below link to view the available courses and start learning.';
|
|
$reply .= "\n" . 'https://road.xltr.in/lmscourse/'.$response->data->item->id;
|
|
|
|
$rsdata = ['to' => $number,
|
|
'text' => json_encode(['countryCode'=>'+91','phoneNumber'=>$number,'callbackData'=>rand(10000,99999).'-'.$response->data->item->id,'type'=>'Template','template'=>['name'=>'paramedic_course_registration_success','languageCode'=>'en','bodyValues'=>[$response->data->item->name,$response->data->item->id] ] ]),
|
|
'is_sent' => 0,
|
|
'session_id' => 0,
|
|
'contact_id' => $response->data->item->id,
|
|
'status' => 1
|
|
];
|
|
DB::table("raphiwa_send")->insert($rsdata);
|
|
return response()->json([]);
|
|
} else if($code == 'USER') {
|
|
$user = LambdaRequest::getrequest('ums', 'users/get_one', ['id'=>$uid], env('LAMBDA_ACCESS_TOKEN', 'default_value') );
|
|
$user = $user->data->item;
|
|
$toupdate = ['id' => $user->id, 'pincode' => $user->pincode, 'address' => $user->address, 'city' => $user->city, 'state' => $user->state, 'email' => $user->email, 'is_active' => true, 'status' => 'active' ];
|
|
$response = LambdaRequest::postrequest('ums', 'users/update', $toupdate, env('LAMBDA_ACCESS_TOKEN', 'default_value') );
|
|
Log::debug(print_r($toupdate, true));
|
|
$reply = 'Dear ' . $user->firstname .','."\n";
|
|
$reply .= 'You have successfully verified your CREST account'."\n";
|
|
$reply .= "\n" . 'You can now login to your CREST app using the email and password you have used while registering';
|
|
$reply .= "\n" . 'Email: '.$user->email;
|
|
$reply .= "\n" . 'Password: '.$user->password;
|
|
$reply .= "\n" ."\n" . 'Greetings'."\n" .'CREST Team';
|
|
|
|
} else {
|
|
$response = LambdaRequest::postrequest('contact', 'contact/update', ['id' => $uid, 'position'=>'india', 'is_verified' => true ], env('LAMBDA_ACCESS_TOKEN', 'default_value') );
|
|
$session = Session::where('code', $code)->first();
|
|
$contact = $response->data->item;
|
|
$reply = 'Greetings ' . $contact->name ."\n";
|
|
$reply .= 'You have Successfully registered for Crest session "'.$session->number.' ('.$session->type.') "'."\n";
|
|
$reply .= 'Please find the details below'."\n";
|
|
$reply .= 'Venue: ' . $session->venue . "\n";
|
|
$reply .= 'Address: ' . $session->address . "\n";
|
|
$reply .= 'Timings:' . "\n";
|
|
$dates = json_decode($session->dates);
|
|
foreach($dates->date as $i => $date){
|
|
$reply .= date("d M, Y", strtotime($date) ) . ' at ' . date("h:iA", strtotime($dates->start[$i]) ) .' - ' . date("h:iA", strtotime($dates->end[$i]) ) . "\n";
|
|
}
|
|
$reply .= "\n" . 'You can use this chat as your self assistance for getting details, download your certificate etc.';
|
|
Session::where('code', $code)->increment('reg_confirmed');
|
|
$this->deliverSessionText($number, $reply, $session, $contact);
|
|
return response()->json([]);
|
|
}
|
|
|
|
$this->sendMsg($number, $reply);
|
|
return response()->json([]);
|
|
// if($code == 'Y8WUVES7VIdRNB4gOEe7') {
|
|
// return response()->json(['autoreply' => $reply]);
|
|
// } else {
|
|
// return response()->json([]);
|
|
// }
|
|
}
|
|
|
|
if($botSess && !$finalised) {
|
|
$session_data = (array)json_decode($botSess->session_data);
|
|
Log::debug(print_r($session_data, true));
|
|
if(isset($session_data['session'])) {
|
|
$sess = $session_data['session_data'];
|
|
$reply = 'We can see that you have registered for '.ucwords($sess->type).' ('.$sess->number.') on '.date("d M Y", strtotime($sess->start_date)). ' at ' . $sess->venue."\n\n";
|
|
//$finalised = true;
|
|
}
|
|
}
|
|
//Log::debug($reply);
|
|
if(!$botSess && !$finalised) {
|
|
$response = LambdaRequest::getrequest('contact', 'contact/get_all', ['source'=>'dynamodb', 'search' => json_encode(['phone' => $number]), 'fields' => json_encode(['session_code', 'present', 'type']) ], env('LAMBDA_ACCESS_TOKEN', 'default_value') );
|
|
$users = [];
|
|
|
|
Log::debug(print_r($response, true));
|
|
if( sizeof($response->data->items) > 0 ) {
|
|
foreach($response->data->items as $item) {
|
|
if(isset($item->type) && $item->type == 'lmsuser') {
|
|
$reply = 'Greetings ' . $item->name ."\n";
|
|
$reply .= 'You have Successfully registered for Paramedic Training Course'."\n";
|
|
$reply .= "\n" . 'Please click on the below link to view the available courses and start learning.';
|
|
$reply .= "\n" . 'https://road.xltr.in/lmscourse/'.$item->id;
|
|
$this->sendMsg($number, $reply);
|
|
|
|
$rsdata = ['to' => $number,
|
|
'text' => json_encode(['countryCode'=>'+91','phoneNumber'=>$number,'callbackData'=>rand(10000,99999).'-'.$item->id,'type'=>'Template','template'=>['name'=>'paramedic_course_registration_success','languageCode'=>'en','bodyValues'=>[$item->name,$item->id] ] ]),
|
|
'is_sent' => 0,
|
|
'session_id' => 0,
|
|
'contact_id' => $item->id,
|
|
'status' => 1
|
|
];
|
|
DB::table("raphiwa_send")->insert($rsdata);
|
|
return response()->json([]);
|
|
|
|
|
|
return response()->json([]);
|
|
}
|
|
if( isset($item->session_code) ) {
|
|
$sessions[] = $item->session_code;
|
|
$users[$item->session_code] = $item->id;
|
|
}
|
|
}
|
|
|
|
//Log::debug(print_r($sessions, true));
|
|
$sessions = DB::table('sessions')->wherein('code', $sessions)->orderby('created_at', 'desc')->get();
|
|
//$sessions = DB::table('sessions')->wherein('code', $sessions)->where('start_date', '>=', date("Y-m-d 00:00:00", strtotime("now") ) )->orderby('created_at', 'desc')->get();
|
|
//Log::debug(print_r($sessions, true));
|
|
if($sessions->count() > 1) {
|
|
$reply = 'We can see that you have registered for multiple future Crest events. Please reply for which crest session you want to communicate'."\n\n";
|
|
$session_data['available_sessions'] = $sessions->toArray();
|
|
$session_data['available_users'] = $users;
|
|
$count = 1;
|
|
foreach($sessions->toArray() as $sess) {
|
|
$session_data['session_selection'] = [(string)$count => $sess->code ];
|
|
$reply .= 'Reply '.$count.' if you want to select '.ucwords($sess->type).' ('.$sess->number.') on '.date("d M Y", strtotime($sess->start_date)). ' at ' . $sess->venue."\n\n";
|
|
$count++;
|
|
}
|
|
$finalised = true;
|
|
} else {
|
|
$sess = $sessions->toArray();
|
|
$sess = $sess[0];
|
|
$session_data['session'] = $sess->code;
|
|
$session_data['session_data'] = $sess;
|
|
$session_data['user'] = $users[$sess->code];
|
|
$reply = 'We can see that you have registered for '.ucwords($sess->type).' ('.$sess->number.') on '.date("d M Y", strtotime($sess->start_date)). ' at ' . $sess->venue."\n\n";
|
|
}
|
|
} else {
|
|
$reply = 'Thank you for your interest in Crest. we can see that you have not registered for amy future Crest event.';
|
|
$finalised = true;
|
|
}
|
|
}
|
|
|
|
//echo '<pre>'; print_r($session_data); exit;
|
|
|
|
if(!isset($session_data['session']) && !$finalised ) {
|
|
$count = 1;
|
|
if(isset($session_data['available_sessions'])) {
|
|
foreach($session_data['available_sessions'] as $sess) {
|
|
if($count == $data['text']) {
|
|
$session_data['session'] = $sess->code;
|
|
$session_data['session_data'] = $sess;
|
|
$session_data['user'] = $session_data['available_users']->{$sess->code};
|
|
$reply = 'You have selected '.ucwords($sess->type).' ('.$sess->number.') on '.date("d M Y", strtotime($sess->start_date)). ' at ' . $sess->venue."\n\n";
|
|
$data['text'] = 'hi';
|
|
//$finalised = true;
|
|
}
|
|
$count++;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(isset($session_data['session']) && !$finalised) {
|
|
switch(Str::slug($data['text'], '_')) {
|
|
case '1':
|
|
$reply = 'Here is the link to the session website: ' . $domain . 'microsite/' . $session_data['session_data']->type . '-' . $session_data['session_data']->code;
|
|
break;
|
|
case '2':
|
|
$reply = 'Please find the details below'."\n\n";
|
|
$reply .= 'Venue: ' . $session_data['session_data']->venue . "\n\n";
|
|
$reply .= 'Address: ' . $session_data['session_data']->address . "\n\n" . "\n\n";
|
|
$reply .= 'Timings:' . "\n\n";
|
|
$dates = json_decode($session_data['session_data']->dates);
|
|
foreach($dates->date as $i => $date){
|
|
$reply .= date("d M, Y", strtotime($date) ) . ' at ' . date("h:iA", strtotime($dates->start[$i]) ) .' - ' . date("h:iA", strtotime($dates->end[$i]) ) . "\n\n";
|
|
}
|
|
break;
|
|
case '3':
|
|
$reply = 'Here is the link to the session website: ' . $domain . 'brochure/' . $session_data['session_data']->code;
|
|
break;
|
|
case '4':
|
|
$response = LambdaRequest::getrequest('contact', 'contact/get_one', ['id'=>$session_data['user']], env('LAMBDA_ACCESS_TOKEN', 'default_value') );
|
|
$doctor = $response->data->item;
|
|
if(isset($doctor->present) && $doctor->present == 'yes' && isset($doctor->feedback) && $doctor->feedback == 'yes') {
|
|
$output = Creation::certificate($session_data['session_data'], $doctor);
|
|
$filename = $output['filename'];
|
|
$certUrl = $domain . 'storage/certificate/'.$session_data['session_data']->type.'/'.$filename;
|
|
$sess = Session::find($session_data['session_data']->id);
|
|
|
|
if ($sess) {
|
|
$this->comm->dispatchForContact($sess, $doctor, [
|
|
'id' => 0,
|
|
'template_code' => 'crest_certificate_attached',
|
|
'template_body' => "Dear {{RECIPIENT_NAME}},\n\nYour certificate for {{SESSION_NAME}} on {{SESSION_DATE}} is ready.\n\nView your certificate: " . $certUrl,
|
|
'template_title' => 'Your CREST Certificate',
|
|
'header_values' => [$certUrl],
|
|
'body_params' => 'RECIPIENT_NAME||SESSION_NAME||SESSION_DATE',
|
|
'button_params' => '',
|
|
]);
|
|
}
|
|
|
|
$reply = 'We will generate your certificate and send it to you in a while, please give us few minutes.';
|
|
} else if(isset($doctor->present) && $doctor->present == 'yes') {
|
|
$reply = 'You have not filled up the feedback form sent to you. Please submit the feedback and request for certificate again.';
|
|
} else {
|
|
$reply = 'You have not attended the session or not marked attended.';
|
|
}
|
|
break;
|
|
|
|
default:
|
|
$reply .= 'Please select what do you want to do'."\n\n";
|
|
$reply .= 'Reply 1 if you want link to the session website'."\n\n";
|
|
$reply .= 'Reply 2 if you want to know about session location and timings'."\n\n";
|
|
//$reply .= 'Reply 3 if you want to know about session agenda and speakers'."\n\n";
|
|
$reply .= 'Reply 3 if you want to download session brochure'."\n\n";
|
|
$reply .= 'Reply 4 if you want to download your certificate'."\n\n";
|
|
break;
|
|
}
|
|
}
|
|
|
|
$data['session_data'] = json_encode($session_data);
|
|
//echo $reply; echo '<pre>'; print_r($data); exit;
|
|
if($botSess) {
|
|
unset($data['event']);
|
|
$data['msg_history'] = json_decode($botSess->msg_history);
|
|
$data['msg_history'][] = $data['text'];
|
|
$data['msg_history'] = json_encode($data['msg_history']);
|
|
Rapiwha::where('id', $botSess->id)->update($data);
|
|
} else {
|
|
$data['msg_history'] = json_encode([$data['text']]);
|
|
Rapiwha::create($data);
|
|
}
|
|
$this->deliverBotReply($number, $reply, $session_data);
|
|
return response()->json([]);
|
|
}
|
|
|
|
protected function deliverBotReply($number, $reply, array $session_data): void
|
|
{
|
|
if (!isset($session_data['session_data']) || !isset($session_data['user'])) {
|
|
$this->sendMsg($number, $reply);
|
|
return;
|
|
}
|
|
|
|
$sess = Session::find($session_data['session_data']->id ?? 0);
|
|
if (!$sess) {
|
|
$this->sendMsg($number, $reply);
|
|
return;
|
|
}
|
|
|
|
$response = LambdaRequest::getrequest(
|
|
'contact',
|
|
'contact/get_one',
|
|
['id' => $session_data['user']],
|
|
env('LAMBDA_ACCESS_TOKEN', 'default_value')
|
|
);
|
|
$contact = $response->data->item ?? null;
|
|
|
|
if ($contact) {
|
|
$this->deliverSessionText($number, $reply, $sess, $contact);
|
|
} else {
|
|
$this->sendMsg($number, $reply);
|
|
}
|
|
}
|
|
|
|
public function receive(Request $request) {
|
|
Log::debug('===== Receive ======');
|
|
$domain = 'https://road.xltr.in/';
|
|
$post = $request->input();
|
|
$data = (array)json_decode($post['data']);
|
|
//$data = (array)($post['data']);
|
|
Log::debug(print_r($data, true));
|
|
$number = substr($data['from'], -10);
|
|
$reply = '';
|
|
$session_data = [];
|
|
$sessions = [];
|
|
$finalised = false;
|
|
$botSess = Rapiwha::where('from', $data['from'])->where('created_at', '>=', date("Y-m-d H:i:s", strtotime("now")-88200 ) )->orderby('created_at', 'desc')->first();
|
|
|
|
if(strpos($data['text'],'CREST_VERIFY_') === 0) {
|
|
list($code, $uid) = explode('_', str_replace('CREST_VERIFY_', '', $data['text']) );
|
|
$response = LambdaRequest::postrequest('contact', 'contact/update', ['id' => $uid, 'position'=>'india', 'is_verified' => true ], env('LAMBDA_ACCESS_TOKEN', 'default_value') );
|
|
$session = (object)Session::where('code', $code)->first()->toArray();
|
|
$reply = 'Greetings ' . $response->data->item->name ."\n";
|
|
$reply .= 'You have Successfully registered for Crest session "'.$session->number.' ('.$session->type.') "'."\n";
|
|
$reply .= 'Please find the details below'."\n";
|
|
$reply .= 'Venue: ' . $session->venue . "\n";
|
|
$reply .= 'Address: ' . $session->address . "\n";
|
|
$reply .= 'Timings:' . "\n";
|
|
$dates = json_decode($session->dates);
|
|
foreach($dates->date as $i => $date){
|
|
$reply .= date("d M, Y", strtotime($date) ) . ' at ' . date("h:iA", strtotime($dates->start[$i]) ) .' - ' . date("h:iA", strtotime($dates->end[$i]) ) . "\n";
|
|
}
|
|
$reply .= "\n" . 'You can use this chat as your self assistance for getting details, download your certificate etc.';
|
|
Session::where('code', $code)->increment('reg_confirmed');
|
|
Log::debug($reply);
|
|
Log::debug($code);
|
|
if($code == 'Y8WUVES7VIdRNB4gOEe7') {
|
|
return response()->json(['autoreply' => $reply]);
|
|
} else {
|
|
return response()->json([]);
|
|
}
|
|
}
|
|
|
|
if($botSess && !$finalised) {
|
|
$session_data = (array)json_decode($botSess->session_data);
|
|
if(isset($session_data['session'])) {
|
|
$sess = $session_data['session_data'];
|
|
$reply = 'We can see that you have registered for '.ucwords($sess->type).' ('.$sess->number.') on '.date("d M Y", strtotime($sess->start_date)). ' at ' . $sess->venue."\n\n";
|
|
//$finalised = true;
|
|
}
|
|
}
|
|
|
|
if(!$botSess && !$finalised) {
|
|
$response = LambdaRequest::getrequest('contact', 'contact/get_all', ['source'=>'dynamodb', 'search' => json_encode(['phone' => $number]), 'fields' => json_encode(['session_code', 'present']) ], env('LAMBDA_ACCESS_TOKEN', 'default_value') );
|
|
$users = [];
|
|
if( sizeof($response->data->items) > 0 ) {
|
|
foreach($response->data->items as $item) {
|
|
if( isset($item->session_code) ) {
|
|
$sessions[] = $item->session_code;
|
|
$users[$item->session_code] = $item->id;
|
|
}
|
|
}
|
|
//Log::debug(print_r($sessions, true));
|
|
$sessions = DB::table('sessions')->wherein('code', $sessions)->orderby('created_at', 'desc')->get();
|
|
//$sessions = DB::table('sessions')->wherein('code', $sessions)->where('start_date', '>=', date("Y-m-d 00:00:00", strtotime("now") ) )->orderby('created_at', 'desc')->get();
|
|
//Log::debug(print_r($sessions, true));
|
|
if($sessions->count() > 1) {
|
|
$reply = 'We can see that you have registered for multiple future Crest events. Please reply for which crest session you want to communicate'."\n\n";
|
|
$session_data['available_sessions'] = $sessions->toArray();
|
|
$session_data['available_users'] = $users;
|
|
$count = 1;
|
|
foreach($sessions->toArray() as $sess) {
|
|
$session_data['session_selection'] = [(string)$count => $sess->code ];
|
|
$reply .= 'Reply '.$count.' if you want to select '.ucwords($sess->type).' ('.$sess->number.') on '.date("d M Y", strtotime($sess->start_date)). ' at ' . $sess->venue."\n\n";
|
|
$count++;
|
|
}
|
|
$finalised = true;
|
|
} else {
|
|
$sess = $sessions->toArray();
|
|
$sess = $sess[0];
|
|
$session_data['session'] = $sess->code;
|
|
$session_data['session_data'] = $sess;
|
|
$session_data['user'] = $users[$sess->code];
|
|
$reply = 'We can see that you have registered for '.ucwords($sess->type).' ('.$sess->number.') on '.date("d M Y", strtotime($sess->start_date)). ' at ' . $sess->venue."\n\n";
|
|
}
|
|
} else {
|
|
$reply = 'Thank you for your interest in Crest. we can see that you have not registered for amy future Crest event.';
|
|
$finalised = true;
|
|
}
|
|
}
|
|
|
|
//echo '<pre>'; print_r($session_data); exit;
|
|
|
|
if(!isset($session_data['session']) && !$finalised ) {
|
|
$count = 1;
|
|
foreach($session_data['available_sessions'] as $sess) {
|
|
if($count == $data['text']) {
|
|
$session_data['session'] = $sess->code;
|
|
$session_data['session_data'] = $sess;
|
|
$session_data['user'] = $session_data['available_users']->{$sess->code};
|
|
$reply = 'You have selected '.ucwords($sess->type).' ('.$sess->number.') on '.date("d M Y", strtotime($sess->start_date)). ' at ' . $sess->venue."\n\n";
|
|
$data['text'] = 'hi';
|
|
//$finalised = true;
|
|
}
|
|
$count++;
|
|
}
|
|
}
|
|
|
|
if(isset($session_data['session']) && !$finalised) {
|
|
switch(Str::slug($data['text'], '_')) {
|
|
case '1':
|
|
$reply = 'Here is the link to the session website: ' . $domain . 'microsite/' . $session_data['session_data']->type . '-' . $session_data['session_data']->code;
|
|
break;
|
|
case '2':
|
|
$reply = 'Please find the details below'."\n\n";
|
|
$reply .= 'Venue: ' . $session_data['session_data']->venue . "\n\n";
|
|
$reply .= 'Address: ' . $session_data['session_data']->address . "\n\n" . "\n\n";
|
|
$reply .= 'Timings:' . "\n\n";
|
|
$dates = json_decode($session_data['session_data']->dates);
|
|
foreach($dates->date as $i => $date){
|
|
$reply .= date("d M, Y", strtotime($date) ) . ' at ' . date("h:iA", strtotime($dates->start[$i]) ) .' - ' . date("h:iA", strtotime($dates->end[$i]) ) . "\n\n";
|
|
}
|
|
break;
|
|
case '3':
|
|
$reply = 'Here is the link to the session website: ' . $domain . 'brochure/' . $session_data['session_data']->code;
|
|
break;
|
|
case '4':
|
|
$response = LambdaRequest::getrequest('contact', 'contact/get_one', ['id'=>$session_data['user']], env('LAMBDA_ACCESS_TOKEN', 'default_value') );
|
|
$doctor = $response->data->item;
|
|
$output = Creation::certificate($session_data['session_data'], $doctor);
|
|
$filename = $output['filename'];
|
|
DB::table('raphiwa_send')->insert(['to'=> $data['from'], 'text' => $domain . 'storage/certificate/'.$session_data['session_data']->code.'/'.$session_data['session_data']->type.'/'.$filename ]);
|
|
$reply = 'We will generate your certificate and send it to you in a while, please give us few minutes.';
|
|
break;
|
|
|
|
default:
|
|
$reply .= 'Please select what do you want to do'."\n\n";
|
|
$reply .= 'Reply 1 if you want link to the session website'."\n\n";
|
|
$reply .= 'Reply 2 if you want to know about session location and timings'."\n\n";
|
|
//$reply .= 'Reply 3 if you want to know about session agenda and speakers'."\n\n";
|
|
$reply .= 'Reply 3 if you want to download session brochure'."\n\n";
|
|
$reply .= 'Reply 4 if you want to download your certificate'."\n\n";
|
|
break;
|
|
}
|
|
}
|
|
|
|
$data['session_data'] = json_encode($session_data);
|
|
//echo $reply; echo '<pre>'; print_r($data); exit;
|
|
if($botSess) {
|
|
unset($data['event']);
|
|
$data['msg_history'] = json_decode($botSess->msg_history);
|
|
$data['msg_history'][] = $data['text'];
|
|
$data['msg_history'] = json_encode($data['msg_history']);
|
|
Rapiwha::where('id', $botSess->id)->update($data);
|
|
} else {
|
|
$data['msg_history'] = json_encode([$data['text']]);
|
|
Rapiwha::create($data);
|
|
}
|
|
|
|
return response()->json(['autoreply' => $reply]);
|
|
|
|
// if(Str::slug($data['text'], '_') == 'hi_pulmoflix') {
|
|
// return response()->json(['autoreply' => 'Thank you for showing interest in Pulmoflix. To access the website use the link https://pulmoflix.com']);
|
|
// } elseif(Str::slug($data['text'], '_') == 'hi_napcon') {
|
|
// return response()->json(['autoreply' => 'Dear Doctor, Please click on the link and download the NAPCON 2022 Application, for a better NAPCON Experience'."\n\n".'Android:'."\n".'https://play.google.com/store/apps/details?id=com.startawiz.napcon'."\n\n".'iOS:'."\n".'https://apps.apple.com/in/app/napcon/id1615285887']);
|
|
// } else {
|
|
// return response()->json([]);
|
|
// }
|
|
|
|
}
|
|
} |