use FacebookAds\Api; use FacebookAds\Object\Business; use Brick\PhoneNumber\PhoneNumber; use Brick\PhoneNumber\PhoneNumberParseException; add_action('wp_ajax_nopriv_hubspot_channel_notification', 'hubspot_channel_notification'); function hubspot_channel_notification(){ wp_die(); } add_action('wp_ajax_nopriv_get_whatsapp_template_from_hubspot', 'get_whatsapp_template_from_hubspot'); function get_whatsapp_template_from_hubspot(){ global $log; $input = json_decode(file_get_contents('php://input')); // $log->add(__FUNCTION__, "========================="); // $log->add(__FUNCTION__, 'input - ' . print_r( $input, true )); $inputFieldName = $input->inputFieldName; $inputFields = $input->inputFields; $result = new stdClass(); $result->options = new stdClass(); $options = false; $use_transient = false; if( isset( $inputFields->whatsapp_origin_number->value ) && isset( $inputFields->whatsapp_template->value ) ){ $transient_name = 'whatsapp_template_from_hubspot_' . $inputFieldName . $inputFields->whatsapp_origin_number->value . '_' . $inputFields->whatsapp_template->value; $use_transient = true; } else { $transient_name = 'whatsapp_template_from_hubspot_' . $inputFieldName; } if( $use_transient ){ $options = get_transient( $transient_name ); } // if( !$options){ $options = []; if( $inputFieldName == 'whatsapp_origin_number' ){ Api::init(get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_id' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_secret' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_token' )); $business = new Business(get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_business_id' )); $owned_wabas = $business->getOwnedWhatsAppBusinessAccounts(); foreach( $owned_wabas as $waba) { $waba_account = New Whatsapp_Business_Account( $waba->id, get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_id' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_secret' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_token' ), ); $numbers = $waba_account->get_numbers(); foreach( $numbers->data as $number ){ $response = new stdClass(); $response->label = $number->verified_name; $response->description = $number->display_phone_number; $response->value = $waba->id. '|' .$number->id; $options[] = $response; // $options[ $number->verified_name.' ( '.$number->display_phone_number.' )' ] = $waba->id. '|' .$number->id; } } } if( $inputFieldName == 'whatsapp_template' ){ if( isset( $inputFields->whatsapp_origin_number->value ) ) { Api::init(get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_id' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_secret' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_token' )); $business = new Business(get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_business_id' )); $owned_wabas = $business->getOwnedWhatsAppBusinessAccounts(); // $options['Sin plantilla'] = 'no_template'; $selected = explode('|', $inputFields->whatsapp_origin_number->value); $waba_id = $selected[0]; $number_id = $selected[1]; $waba_account = New Whatsapp_Business_Account( $waba_id, get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_id' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_secret' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_token' ), ); $templates = $waba_account->get_templates(); $templates_found = false; foreach( $templates->data as $template ){ if( strpos( $template->name, 'hubspot' ) !== false || strpos( $template->name, 'difusion' ) !== false ){ $response = new stdClass(); $response->label = $template->name; $response->description = $template->category.'/'.$template->status.' - '. $template->language; $response->value = $template->name.'|'.$waba_id.'|'.$number_id.'|'.$template->language; $options[] = $response; $templates_found = true; } } if( !$templates_found ){ $response = new stdClass(); $response->label = 'No se encontraron plantillas'; $response->value = 'no_template'; $options[] = $response; } } } if( $inputFieldName == 'whatsapp_header_params_count' ){ if( isset( $inputFields->whatsapp_template->value ) ) { Api::init(get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_id' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_secret' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_token' )); $business = new Business(get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_business_id' )); $selected = explode('|', $inputFields->whatsapp_template->value); $template_name = $selected[0]; $waba_id = $selected[1]; $number_id = $selected[2]; $language = $selected[3]; $waba_account = New Whatsapp_Business_Account( $waba_id, get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_id' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_secret' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_token' ), ); $template = $waba_account->get_template( $template_name ); // $log->add(__FUNCTION__, "========================="); // $log->add(__FUNCTION__, 'template - ' . print_r( $template, true )); $params_found = false; $supported_headers = [ 'IMAGE' => [ 'text' => 'URL de imágen', 'params' => 1 ], 'VIDEO' => [ 'text' => 'URL del video', 'params' => 1 ], 'DOCUMENT' => [ 'text' => 'URL del documento', 'params' => 1 ], 'TEXT' => [ 'text' => 'Texto', 'params' => 1 ], ]; foreach( $template->components as $component ){ if( $component->type == 'HEADER' ){ if( in_array( $component->format, array_keys( $supported_headers ) ) ){ $params_found = true; $response = new stdClass(); $response->label = $supported_headers[$component->format]['params'] . ' parámetros ('. $component->format .')'; if( $component->format == 'TEXT' ){ foreach( $component->example as $header_text ){ $params_desc = implode('|', $header_text ); $response->description = $params_desc; } } else { $response->description = $supported_headers[$component->format]['text']; } $response->value = $component->format; $options[] = $response; } } } if( !$params_found ){ $response = new stdClass(); $response->label = '0 parámetros'; $response->value = 'none'; $options[] = $response; } } } if( $inputFieldName == 'whatsapp_body_params_count' ){ if( isset( $inputFields->whatsapp_template->value ) ) { Api::init(get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_id' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_secret' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_token' )); $business = new Business(get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_business_id' )); $selected = explode('|', $inputFields->whatsapp_template->value); $template_name = $selected[0]; $waba_id = $selected[1]; $number_id = $selected[2]; $language = $selected[3]; $waba_account = New Whatsapp_Business_Account( $waba_id, get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_id' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_secret' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_token' ), ); $template = $waba_account->get_template( $template_name ); $params_found = false; foreach( $template->components as $component ){ if( $component->type == 'BODY' && isset( $component->example->body_text ) && count( $component->example->body_text ) > 0 ){ foreach( $component->example->body_text as $body_text ){ $params_desc = implode('|', $body_text ); $params_found = true; $response = new stdClass(); $response->label = count( $body_text ) . ' parámetros'; $response->description = $params_desc; // $response->description = $component->text; $response->value = $component->type; $options[] = $response; } } } if( !$params_found ){ $response = new stdClass(); $response->label = '0 parámetros'; $response->value = 'none'; $options[] = $response; } } } if( $inputFieldName == 'whatsapp_footer_params_count' ){ if( isset( $inputFields->whatsapp_template->value ) ) { Api::init(get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_id' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_secret' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_token' )); $business = new Business(get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_business_id' )); $selected = explode('|', $inputFields->whatsapp_template->value); $template_name = $selected[0]; $waba_id = $selected[1]; $number_id = $selected[2]; $language = $selected[3]; $waba_account = New Whatsapp_Business_Account( $waba_id, get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_id' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_secret' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_token' ), ); $template = $waba_account->get_template( $template_name ); $params_found = false; $params_count = 0; $params_desc = []; foreach( $template->components as $component ){ if( $component->type == 'BUTTONS' ){ foreach( $component->buttons as $button ){ if( isset( $button->example ) ){ // $params_desc .= implode('|', $button->example ); $params_desc[] = $button->text . ' ('.$button->type.')'; $params_found = true; $params_count ++; } } if( $params_found ){ $response = new stdClass(); $response->label = $params_count . ' parámetros'; // $response->description = $params_desc; $response->description = implode('|', $params_desc ); $response->value = $component->type; $options[] = $response; } } } if( !$params_found ){ $response = new stdClass(); $response->label = '0 parámetros'; $response->value = 'none'; $options[] = $response; } } } if( $use_transient ){ set_transient( $transient_name, $options, HOUR_IN_SECONDS ); } // } $result->options = new stdClass(); $result->options = $options; // $log->add(__FUNCTION__, "========================="); // $log->add(__FUNCTION__, $inputFieldName . ' result - ' . print_r( $result, true )); // $log->add(__FUNCTION__, $inputFieldName . ' result - ' . json_encode( $result )); wp_send_json( $result, 200 ); } add_action('wp_ajax_nopriv_send_whatsapp_message_from_hubspot', 'send_whatsapp_message_from_hubspot'); function send_whatsapp_message_from_hubspot(){ global $log; $input = json_decode(file_get_contents('php://input')); // $log->add(__FUNCTION__, "========================="); // $log->add(__FUNCTION__, 'input - ' . print_r( $input, true )); $fields = $input->fields; $whatsapp_template = $fields->whatsapp_template; $whatsapp_destination_number = $fields->whatsapp_destination_number; $whatsapp_header_params_count = $fields->whatsapp_header_params_count; $whatsapp_header_params_content = isset($fields->whatsapp_header_params_content) ? $fields->whatsapp_header_params_content : ''; $whatsapp_body_params_count = $fields->whatsapp_body_params_count; $whatsapp_body_params_content = isset($fields->whatsapp_body_params_content) ? $fields->whatsapp_body_params_content : ''; $whatsapp_footer_params_count = $fields->whatsapp_footer_params_count; $whatsapp_footer_params_content = isset($fields->whatsapp_footer_params_content) ? $fields->whatsapp_footer_params_content : ''; $output = new stdClass(); $output->outputFields = new stdClass(); try { $number_info = bot_getPhoneNumberInfo( $whatsapp_destination_number ); if( !$number_info ){ // $log->add('error_' . __FUNCTION__, "========================="); // $log->add('error_' . __FUNCTION__, 'input - ' . print_r( $input, true )); $output->outputFields->errorCode = 'NUMBER_NOT_VALID'; $output->outputFields->whatsapp_destination_number = $fields->whatsapp_destination_number; $output->outputFields->hs_execution_state = "FAIL_CONTINUE"; // $log->add('error_' . __FUNCTION__, 'output ' . print_r( $output, true) ); wp_send_json( $output, 400 ); return; } $whatsapp_template = explode('|', $whatsapp_template); $template_name = $whatsapp_template[0]; $waba_id = $whatsapp_template[1]; $number_id = $whatsapp_template[2]; $template_language = $whatsapp_template[3]; // // $log->add(__FUNCTION__, 'template_name - ' . print_r( $template_name, true )); // // $log->add(__FUNCTION__, 'waba_id - ' . print_r( $waba_id, true )); // // $log->add(__FUNCTION__, 'number_id - ' . print_r( $number_id, true )); // // $log->add(__FUNCTION__, 'template_language - ' . print_r( $template_language, true )); $waba_account = New Whatsapp_Business_Account( $waba_id, get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_id' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_secret' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_token' ), ); $template = $waba_account->get_template( $template_name ); // $log->add(__FUNCTION__, 'template - ' . print_r( $template, true )); $session = New Whatsapp_Session_Handler( str_replace("+", "", $number_info ) , $number_id, 'whatsapp_api' ); if ( ! $session->get_session() ) { /**Si no hay una sesion creada no salta el contacto actual */ $session->create_session(); } Whatsapp_Webhook_Payload::init($number_id, (string) $number_info); $wa_webhook = Whatsapp_Webhook_Payload::instance(); $wa_message_api = New Whatsapp_Message_Api( $wa_webhook, get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_id' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_secret' ), get_option( WHATSAPP_BOT_PLUGIN_PREFIX . 'facebook_app_token' ) ); $template_params = []; if( !empty( $whatsapp_header_params_content ) && !empty( $whatsapp_header_params_count ) && $whatsapp_header_params_count != 'none' ){ $template_params['header'][$whatsapp_header_params_count] = $whatsapp_header_params_content; } if( !empty( $whatsapp_body_params_content ) ){ $params = explode('|', $whatsapp_body_params_content); $params = array_map('trim', $params); $template_params['body'] = $params; } if( !empty( $whatsapp_footer_params_content ) ){ $params = explode('|', $whatsapp_footer_params_content); $params = array_map('trim', $params); $template_params['buttons'] = $params; } // $log->add(__FUNCTION__, 'template_params - ' . print_r( $template_params, true )); $components = $waba_account->prepare_components_v2($template_name , $template_params ); // $log->add(__FUNCTION__, 'components - ' . print_r( $components, true )); $result = $wa_message_api->send_template( $template_name, $template_language, $components['components'] ); // $log->add(__FUNCTION__, 'result - ' . print_r( $result, true )); try { $message_send = $waba_account->get_template_body( $template_name, $template_params ); $output->outputFields->message_send = $message_send; } catch (Exception $e) { $output->outputFields->message_send = 'Error: ' . $e->getMessage(); } if( isset($session) ){ $session->set_variable( 'outgoing_message_created', date( 'Y-m-d' ) ); $session->set_variable( 'outgoing_message_type', 'workflow' ); } $output->outputFields->message_id = $result; $output->outputFields->whatsapp_destination_number = $whatsapp_destination_number; $output->outputFields->hs_execution_state = "SUCCESS"; $output->outputFields->whatsapp_template_send = $template_name; $output->outputFields->whatsapp_template_params = $template_params; } catch (Exception $e) { $log->add('error_' . __FUNCTION__, "========================="); $log->add('error_' . __FUNCTION__, 'input - ' . print_r( $input, true )); $log->add('error_' . __FUNCTION__, 'whatsapp_template - ' . print_r( $whatsapp_template, true )); $log->add('error_' . __FUNCTION__, 'whatsapp_body_params_count - ' . print_r( $whatsapp_body_params_count, true )); $log->add('error_' . __FUNCTION__, 'whatsapp_destination_number - ' . print_r( $whatsapp_destination_number, true )); $log->add('error_' . __FUNCTION__, 'number_info - ' . print_r( $number_info, true )); $log->add('error_' . __FUNCTION__, 'template_params - ' . print_r( $template_params, true )); $log->add('error_' . __FUNCTION__, 'Exception - ' . print_r( $e->getMessage(), true )); $output->outputFields->errorCode = 'API_ERROR'; $output->outputFields->exceptionMessage = $e->getMessage(); $output->outputFields->hs_execution_state = "FAIL_CONTINUE"; wp_send_json( $output, 400 ); return; } wp_send_json( $output, 200 ); return; }{"id":476294,"date":"2021-02-12T15:38:57","date_gmt":"2021-02-12T20:38:57","guid":{"rendered":"https:\/\/dev2025.infinitekparis.com\/?p=476294"},"modified":"2021-07-22T12:22:32","modified_gmt":"2021-07-22T17:22:32","slug":"home-spa-couple-care-routine","status":"publish","type":"post","link":"https:\/\/dev2025.infinitekparis.com\/us-en\/blog\/experiences\/home-spa-couple-care-routine\/","title":{"rendered":"Home Spa: Couple Care Routine"},"content":{"rendered":"
Surprise your partner with a special date without leaving home: A spa day is an excellent idea to share and to pamper yourself and your loved one! Spend a magical day with our TIPS to make the perfect spa day.<\/span><\/p>\n Our 3 TIPS:<\/span><\/p>\n How to do it?<\/p>\n<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\n\n\t Prepare the space<\/em><\/span><\/p>\n You must create an environment that encourages the feeling of relaxation. Adapt your house, take into account the lighting, and make sure to let in a little natural light but keep it attenuated. You can also use some candles for a romantic touch <\/span><\/p>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\n