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;
}
Kit Trío Perfecto - Infinitek Paris
Esta es una tienda de demostración para realizar pruebas — no se completará ningún pedido. Descartar
Skip to content
“Mascarilla de Barro del Mar Muerto” se ha añadido a tu carrito.
Ver carrito
$ 1,628.10 MXN $ 1,809.00 MXN Ahorra $ 180.90 MXN
Mejora la textura, aclara y unifica el tono de tu piel.
Disminuye visiblemente manchas y poros dilatados.
Reafirman y fortalece tu piel.
Textura ligera y no grasa.
Contienen activos con estudios de efectividad.
Nuestro Kit Trío Perfecto , es perfecto para prevenir, combatir y disminuir manchas en tu piel. Es ideal para iluminar, hidratar, reafirmar y unificar el tono de tu piel revelando una piel más sana y joven gracias a nuestro trío de Sérums de Vitamina C + Silicio Orgánico, Ácido Hialurónico + Silicio Orgánico y Sérum Crystal Rose.
Contiene ingredientes activos dermatológicamente probados.
¿Para qué sirven?
Sérum Vitamina C + Silicio Orgánico – Su fórmula de tecnología avanzada fortalece la piel para combatir los efectos nocivos de los radicales libres, la polución y el daño solar. Actúa como un potenciador de la luminosidad, mientras promueve la renovación celular. Ideal para tu rutina AM.
Sérum Ácido Hialurónico + Silicio Orgánico – Poderoso aliado en la rutina de cuidado facial que, además de hidratar a profundidad, combate la pérdida de firmeza y aumenta la producción natural de colágeno. Disminuye y previene signos de envejecimiento como arrugas, líneas de expresión y flacidez. Mejora la textura y el grosor de la piel. Ideal para tu rutina AM y PM.
Sérum Crystal Rose – Formulado para combatir manchas, aclara y unifica el tono de la piel mientras disminuye visiblemente la apariencia de poros dilatados, manchas por el sol o acné mientras mejora visiblemente la textura de la piel. Ideal para tu rutina PM.
Para mayor información, comunícate con una de nuestras asesoras al número (+52) 55 8789 4808.
Kit Trío Perfecto
$ 1,628.10 MXN $ 1,809.00 MXN Ahorra $ 180.90 MXN
¿Cambiar de idioma?
Estás cambiando de ubicación y hay elementos en el carrito. Si continuas a México, se vaciará el carrito y tendrás que agregar al mismo los elementos nuevamente.
Cambiar a México
Volver a Colombia
Ingrid Marcela Alape Giraldo (propietario verificado) –
Lo recomiendo, se nota el cambio edades el primer uso
Ingrid Marcela Alape Giraldo (propietario verificado) –
Lo recomiendo, se nota el cambio edades el primer uso