Se agrega nuevo campo en los ajustes del plugin para agregar la API KEY del UNMS con el ID 'unmsApiToken'

This commit is contained in:
server 2025-10-20 15:13:21 -06:00
parent 2e21e09c2c
commit 506615e911
10 changed files with 116 additions and 2607 deletions

View File

@ -4,6 +4,10 @@ Este plugin sincroniza los clientes del sitema UISP CRM con los contactos de Wha
# REGISTRO DE CAMBIOS
## VERSIÓN 2.9.2
### 🟡 Bugs Resueltos
1⃣ Se solucionó un bug que impedía obtener la contraseñas de la bóveda, ya que el response de la API cambió en la última actualización y la esstructura nueva impedía acceder al dato del password
## VERSIÓN 2.8.8
### 🟡 Bugs Resueltos
1⃣ Se solucionó un bug que impedía al BOT del CallBell mostrar el monto de la referencia de OXXO en el mensaje donde se le entrega el voucher al cliente, para el caso donde el cliente elegía crear su referencia con la CANTIDAD TOTAL.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

View File

@ -1 +1 @@
{"ipserver":"172.16.5.134","apitoken":"gvcnIJqXdUjneVSjhl6THLlQcYXJyIFCcwHKVba2bvIrNraanCTb5VeoWuJ0TFZ9","unmsApiToken":"079c28f5-888c-457d-bd7a-0a4202590f75","tokencallbell":"g8thcZkXGd3xBj2g3TtYNYFMH1fuesbJ.b6a940ea7d78cf6c9e42f067b21c8ddf96e9fa2a9e307bfd0c7c7c4d7fa38f79","tokenstripe":"sk_test_51OkG0REFY1WEUtgRH6UxBK5pu80Aq5Iy8EcdPnf0cOWzuVLQTpyLCd7CbPzqMsWMafZOHElCxhEHF7g8boURjWlJ00tBwE0W1M","hostServerFTP":"siip.mx","usernameServerFTP":"siip0001","passServerFTP":"$spGiT,[wa)n","ipPuppeteer":"172.16.5.134","portPuppeteer":"3000","idPaymentAdminCRM":"1180","cashPaymentMethodId":false,"courtesyPaymentMethodId":false,"bankTransferPaymentMethodId":true,"paypalPaymentMethodId":true,"creditCardPaypalPaymentMethodId":true,"creditCardStripePaymentMethodId":true,"stripeSubscriptionCreditCardPaymentMethodId":true,"paypalSubscriptionPaymentMethodId":true,"mercadopagoPaymentMethodId":true,"checkPaymentMethodId":true,"customPaymentMethodId":true,"notificationTypeText":false,"installersDataWhatsApp":"{\r\n \"instaladores\": [\r\n {\r\n \"id\": 1019,\r\n \"nombre\": \"Mucio Robledo\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1173,\r\n \"nombre\": \"Ángel Arvizu\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1172,\r\n \"nombre\": \"Juan Rostro\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1015,\r\n \"nombre\": \"Daniel Humberto\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1131,\r\n \"nombre\": \"Gricelda Avalos\",\r\n \"whatsapp\": \"4181817609\"\r\n }\r\n ]\r\n}","debugMode":true,"logging_level":true}
{"ipserver":"172.16.5.134","apitoken":"gvcnIJqXdUjneVSjhl6THLlQcYXJyIFCcwHKVba2bvIrNraanCTb5VeoWuJ0TFZ9","unmsApiToken":"079c28f5-888c-457d-bd7a-0a4202590f75","tokencallbell":"g8thcZkXGd3xBj2g3TtYNYFMH1fuesbJ.b6a940ea7d78cf6c9e42f067b21c8ddf96e9fa2a9e307bfd0c7c7c4d7fa38f79","tokenstripe":"sk_test_51OkG0REFY1WEUtgRH6UxBK5pu80Aq5Iy8EcdPnf0cOWzuVLQTpyLCd7CbPzqMsWMafZOHElCxhEHF7g8boURjWlJ00tBwE0W1M","hostServerFTP":"siip.mx","usernameServerFTP":"siip0001","passServerFTP":"$spGiT,[wa)n","ipPuppeteer":"172.16.5.134","portPuppeteer":"3000","idPaymentAdminCRM":"1180","cashPaymentMethodId":false,"courtesyPaymentMethodId":false,"bankTransferPaymentMethodId":true,"paypalPaymentMethodId":true,"creditCardPaypalPaymentMethodId":true,"creditCardStripePaymentMethodId":true,"stripeSubscriptionCreditCardPaymentMethodId":true,"paypalSubscriptionPaymentMethodId":true,"mercadopagoPaymentMethodId":true,"checkPaymentMethodId":true,"customPaymentMethodId":true,"notificationTypeText":true,"installersDataWhatsApp":"{\r\n \"instaladores\": [\r\n {\r\n \"id\": 1019,\r\n \"nombre\": \"Mucio Robledo\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1173,\r\n \"nombre\": \"Ángel Arvizu\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1172,\r\n \"nombre\": \"Juan Rostro\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1015,\r\n \"nombre\": \"Daniel Humberto\",\r\n \"whatsapp\": \"4181878106\"\r\n },\r\n {\r\n \"id\": 1131,\r\n \"nombre\": \"Gricelda Avalos\",\r\n \"whatsapp\": \"4181817609\"\r\n }\r\n ]\r\n}","debugMode":true,"logging_level":true}

File diff suppressed because one or more lines are too long

View File

@ -5,7 +5,7 @@
"displayName": "SIIP - Procesador de Pagos en línea con Stripe, Oxxo y Transferencia, Sincronizador de CallBell y Envío de Notificaciones y comprobantes vía WhatsApp",
"description": "Este plugin sincroniza los clientes del sistema UISP CRM con los contactos de WhatsApp en CallBell, además procesa pagos de Stripe como las trasferencias bancarias y genera referencias de pago vía OXXO, además envía comprobantes de pago en formato imagen PNG o texto vía Whatsapp a los clientes",
"url": "https://siip.mx/",
"version": "2.9.1",
"version": "2.9.2",
"unmsVersionCompliancy": {
"min": "2.1.0",
"max": null

View File

@ -1208,7 +1208,8 @@ abstract class AbstractMessageNotifierFacade
$configManager = \Ubnt\UcrmPluginSdk\Service\PluginConfigManager::create();
$config = $configManager->loadConfig();
$ucrmBaseUri = $config['ipserver'];
$authToken = $config['apitoken'];
$crmAuthToken = $config['apitoken'];
$unmsAuthToken = $config['unmsApiToken'];
if ($ucrmBaseUri === '172.16.5.134') { //opción solo para el servidor de pruebas
return 'gYAIEK:Be}SK*01z5+/V';
@ -1246,7 +1247,7 @@ abstract class AbstractMessageNotifierFacade
try {
$responseSitesByIP = $clientUnms->request('GET', 'sites/search?query=' . $dataToSearch . '&count=1&page=1', [
'headers' => [
'X-Auth-Token' => $authToken,
'X-Auth-Token' => $unmsAuthToken,
],
]);
@ -1273,7 +1274,7 @@ abstract class AbstractMessageNotifierFacade
$devicesBySiteId = $clientUnms->request('GET', 'devices?siteId=' . $siteId, [
'headers' => [
'X-Auth-Token' => $authToken,
'X-Auth-Token' => $unmsAuthToken,
],
]);
@ -1308,7 +1309,7 @@ abstract class AbstractMessageNotifierFacade
$responsePasswordVault = $clientUnms->request('GET', 'vault/' . $deviceID . '/credentials', [
'headers' => [
'X-Auth-Token' => $authToken,
'X-Auth-Token' => $unmsAuthToken,
],
]);
@ -1317,8 +1318,8 @@ abstract class AbstractMessageNotifierFacade
// $jsonPasswordVault = json_encode($dataPasswordVault, JSON_PRETTY_PRINT);
//print_r($jsonPasswordVault . PHP_EOL); //Credenciales del dispositivo
if (isset($dataPasswordVault['credentials']['password'])) {
$dataPasswordVault = $dataPasswordVault['credentials']['password'];
if (isset($dataPasswordVault['credentials'][0]['password'])) {
$dataPasswordVault = $dataPasswordVault['credentials'][0]['password'];
} else {
$this->logger->error('No se encontró una contraseña en la bóveda para la antena de este cliente, es altamente probable que conserve una contraseña conocida.' . PHP_EOL);
return "Error: No se encontró una contraseña en la bóveda para la antena de este cliente, es altamente probable que conserve una contraseña conocida."; // Return early if the password is not found
@ -1364,7 +1365,7 @@ abstract class AbstractMessageNotifierFacade
// $logger->appendLog('Consulta por dirección MAC: ' . $dataToSearch );
$responseDeviceByMAC = $clientUnms->request('GET', 'devices/mac/' . $dataToSearch, [
'headers' => [
'X-Auth-Token' => $authToken,
'X-Auth-Token' => $unmsAuthToken,
],
]);
@ -1389,15 +1390,15 @@ abstract class AbstractMessageNotifierFacade
$responsePasswordVault = $clientUnms->request('GET', 'vault/' . $deviceId . '/credentials', [
'headers' => [
'X-Auth-Token' => $authToken,
'X-Auth-Token' => $unmsAuthToken,
],
]);
if ($responsePasswordVault->getStatusCode() === 200) {
$dataPasswordVault = json_decode((string) $responsePasswordVault->getBody(), true);
if (isset($dataPasswordVault['credentials']['password'])) {
$dataPasswordVault = $dataPasswordVault['credentials']['password'];
if (isset($dataPasswordVault['credentials'][0]['password'])) {
$dataPasswordVault = $dataPasswordVault['credentials'][0]['password'];
} else {
$this->logger->error('No se encontró una contraseña en la bóveda para la antena de este cliente, es altamente probable que conserve una contraseña conocida.' . PHP_EOL);
return "Error: No se encontró una contraseña en la bóveda para la antena de este cliente, es altamente probable que conserve una contraseña conocida."; // Return early if the password is not found
@ -1440,7 +1441,7 @@ abstract class AbstractMessageNotifierFacade
//Obtener id del sitio por medio del servicio
$responseServices = $clientUcrm->get('clients/services?clientId=' . $IpAddressClientId, [
'headers' => [
'X-Auth-Token' => $authToken,
'X-Auth-Token' => $unmsAuthToken,
'Content-Type: application/json',
],
]);
@ -1484,7 +1485,7 @@ abstract class AbstractMessageNotifierFacade
try {
$responseDevicesBySite = $clientUnms->request('GET', 'devices?siteId=' . $unmsSiteID, [
'headers' => [
'X-Auth-Token' => $authToken,
'X-Auth-Token' => $unmsAuthToken,
],
]);
} catch (RequestException $requestException) {
@ -1538,7 +1539,7 @@ abstract class AbstractMessageNotifierFacade
try {
$responseDevicesBySite = $clientUnms->request('GET', 'devices/' . $deviceID, [
'headers' => [
'X-Auth-Token' => $authToken,
'X-Auth-Token' => $unmsAuthToken,
],
]);
} catch (RequestException $requestException) {
@ -1571,7 +1572,7 @@ abstract class AbstractMessageNotifierFacade
//print_r('ID del device al que está conectado el cliente: ' . $idDevice . PHP_EOL);
$responsePasswordVault = $clientUnms->request('GET', 'vault/' . $idClientDevice . '/credentials', [
'headers' => [
'X-Auth-Token' => $authToken,
'X-Auth-Token' => $unmsAuthToken,
],
]);
} catch (RequestException $requestException) {
@ -1597,8 +1598,8 @@ abstract class AbstractMessageNotifierFacade
if ($responsePasswordVault->getStatusCode() === 200) {
$dataPasswordVault = json_decode($responsePasswordVault->getBody()->getContents(), true);
$jsonPasswordVault = json_encode($dataPasswordVault, JSON_PRETTY_PRINT);
if (isset($dataPasswordVault['credentials']['password'])) {
$passwordVault = $dataPasswordVault['credentials']['password'];
if (isset($dataPasswordVault['credentials'][0]['password'])) {
$passwordVault = $dataPasswordVault['credentials'][0]['password'];
return $passwordVault;
} else {
$this->logger->error('No se encontró una contraseña en la bóveda para la antena de este cliente, es altamente probable que conserve una contraseña conocida.' . PHP_EOL);
@ -1625,8 +1626,8 @@ abstract class AbstractMessageNotifierFacade
$configManager = \Ubnt\UcrmPluginSdk\Service\PluginConfigManager::create();
$config = $configManager->loadConfig();
$ipServer = $config['ipserver'];
$ucrmToken = $config['apitoken'];
$unmsToken = $config['unmsApiToken'];
$crmAuthToken = $config['apitoken'];
$unmsAuthToken = $config['unmsApiToken'];
if ($ipServer === '172.16.5.134') { //opción solo para el servidor de pruebas
return 'gYAIEK:Be}SK*01z5+/V';
@ -1655,7 +1656,7 @@ abstract class AbstractMessageNotifierFacade
//Obtener id del sitio por medio del servicio
$responseServices = $clientUcrm->get('clients/services?clientId=' . $clientId, [
'headers' => [
'X-Auth-Token' => $ucrmToken,
'X-Auth-Token' => $crmAuthToken,
'Content-Type: application/json',
],
]);
@ -1699,7 +1700,7 @@ abstract class AbstractMessageNotifierFacade
try {
$responseDevicesBySite = $clientUnms->request('GET', 'devices?siteId=' . $unmsSiteID, [
'headers' => [
'X-Auth-Token' => $unmsToken,
'X-Auth-Token' => $unmsAuthToken,
],
]);
} catch (RequestException $requestException) {
@ -1753,7 +1754,7 @@ abstract class AbstractMessageNotifierFacade
try {
$responseDevicesBySite = $clientUnms->request('GET', 'devices/' . $deviceID, [
'headers' => [
'X-Auth-Token' => $unmsToken,
'X-Auth-Token' => $unmsAuthToken,
],
]);
} catch (RequestException $requestException) {
@ -1786,7 +1787,7 @@ abstract class AbstractMessageNotifierFacade
//print_r('ID del device al que está conectado el cliente: ' . $idDevice . PHP_EOL);
$responsePasswordVault = $clientUnms->request('GET', 'vault/' . $idClientDevice . '/credentials', [
'headers' => [
'X-Auth-Token' => $unmsToken,
'X-Auth-Token' => $unmsAuthToken,
],
]);
} catch (RequestException $requestException) {
@ -1812,8 +1813,8 @@ abstract class AbstractMessageNotifierFacade
if ($responsePasswordVault->getStatusCode() === 200) {
$dataPasswordVault = json_decode($responsePasswordVault->getBody()->getContents(), true);
$jsonPasswordVault = json_encode($dataPasswordVault, JSON_PRETTY_PRINT);
if (isset($dataPasswordVault['credentials']['password'])) {
$passwordVault = $dataPasswordVault['credentials']['password'];
if (isset($dataPasswordVault['credentials'][0]['password'])) {
$passwordVault = $dataPasswordVault['credentials'][0]['password'];
return $passwordVault;
} else {
$this->logger->error('No se encontró una contraseña en la bóveda para la antena de este cliente, es altamente probable que conserve una contraseña conocida.' . PHP_EOL);

View File

@ -438,7 +438,7 @@ class Plugin
// Comprobar si 'isLead' cambió de true a false
if ($isLeadBefore === true && $isLeadAfter === false) {
$this->logger->debug('El cliente cambió de potencial a cliente');
$this->pluginNotifierFacade->createStripeClient($notification);
//$this->pluginNotifierFacade->createStripeClient($notification); //Se comenta esta línea para que no se cree el cliente en Stripe al convertir el lead a cliente, ya que se hará al agregar la etiqueta 'CREAR CLABE STRIPE'
} else {
$this->logger->debug('El cliente no cambió de potencial a cliente');
}
@ -486,7 +486,7 @@ class Plugin
$this->logger->warning('El campo tags no existe en entity o entityBeforeEdit');
}
} else {
} else {
$this->logger->warning('Los datos entityBeforeEdit o entity no están presentes en extraData');
}

View File

@ -1 +1 @@
{"ucrmPublicUrl":"https://venus.siip.mx/crm/","ucrmLocalUrl":"http://localhost/crm/","unmsLocalUrl":"http://unms:8081/nms/","pluginPublicUrl":"https://venus.siip.mx/crm/_plugins/siip-whatsapp-notifications/public.php","pluginAppKey":"5dVI22XIa9NSK0tiDeiQ3SLDBa1UZVT7g5s/tJzi944Bygx89WIHH7I2/niVPiBK","pluginId":16}
{"ucrmPublicUrl":"https://venus.siip.mx/crm/","ucrmLocalUrl":"http://localhost/crm/","unmsLocalUrl":"http://unms-api:8081/nms/","pluginPublicUrl":"https://venus.siip.mx/crm/_plugins/siip-whatsapp-notifications/public.php","pluginAppKey":"5dVI22XIa9NSK0tiDeiQ3SLDBa1UZVT7g5s/tJzi944Bygx89WIHH7I2/niVPiBK","pluginId":16}

View File

@ -5,7 +5,7 @@
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
'reference' => 'a0f286969a749f063a8ef33a9ffd5327155c2fbf',
'reference' => '2e21e09c2c0bf6b481fa5c3cab13a5aec6487c74',
'name' => 'ucrm-plugins/sms-twilio',
'dev' => false,
),
@ -307,7 +307,7 @@
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
'reference' => 'a0f286969a749f063a8ef33a9ffd5327155c2fbf',
'reference' => '2e21e09c2c0bf6b481fa5c3cab13a5aec6487c74',
'dev_requirement' => false,
),
),