bot->types(); sleep(0.5); $this->showEcardMenu(); } protected function showEcardMenu() { log_message('error', ('showEcardMenu function called')); $chat_session_info = get_chatbot_session_info(); $policy_list = ChatbotHelper::getListOfPolicies($chat_session_info); $buttons = []; $question = 'Choose Policy to Download Ecard:'; // log_message('error', ('policy_list : ' . json_encode($policy_list))); if(is_array($policy_list) && count($policy_list)) { foreach($policy_list as $policy) { // $question = Question::create("Choose Policy to Download Ecard:") // ->addButtons([ // Button::create("🔹 $policy['policy_name']")->value("$policy['emp_policy_id']"), // Button::create("◀️ Go Back")->value("go_back"), // ]); $this->buttonsData[$policy['emp_policy_id'].'#'.$policy['rand_string']] = ['response_text' => "🔹 {$policy['policy_name']}"] ; $buttons[] = Button::create("{$policy['policy_name']}")->value($policy['emp_policy_id'].'#'.$policy['rand_string']); } } else { $question = 'No policy found'; } $this->buttonsData['go_back'] = ['response_text' => '◀️ Go Back'] ; $buttons = array_merge($buttons,[Button::create("◀️ Go Back")->value("go_back")]); $question = Question::create($question) ->addButtons($buttons); $temp = $this->buttonsData; $this->bot->ask($question, function ($answer) use ($temp) { log_message('error', 'showEcardMenu answer received'); log_message('error', ($answer)); $selectedOption = $answer->getText(); $this->say("You have selected {$temp[$selectedOption]['response_text']}"); switch ($answer->getValue()) { case "go_back": $this->bot->startConversation(new MainMenuConversation()); break; case is_string($answer->getValue()) && is_array(explode('#',$answer->getValue())) && count((explode('#',$answer->getValue()))) == 2: $link = base_url().'/download-e-card/' . explode('#',$answer->getValue())[1].'/1'; $this->say('Click here to downlad: Ecard'); $this->bot->startConversation(new doYouWantToContinueConversation()); // ✅ Restart the break; default: $this->say("Invalid selection. Please choose an option."); $this->bot->startConversation(new EcardDownloadConversation()); // ✅ Restart the conversation break; } }); } }