codigoencasa / bot-whatsapp

🤖 Crear Chatbot WhatsApp en minutos. Únete a este proyecto OpenSource (Typescript Version Pronto)
https://bot-whatsapp.netlify.app
MIT License
2.18k stars 766 forks source link

fix(provider): :bug: manejo de TextMessagBody.to al usar sendMessageT… #1044

Closed rodrimarchese closed 2 months ago

rodrimarchese commented 2 months ago

…oApi para números de teléfono de Argentina con META (en modo de prueba)

Que tipo de Pull Request es?

Descripción

Este error se origina al usar el modo de prueba de META, luego de haber configurado lo necesario y tenerlo conectado. Al recibir cualquier mensaje, la librería intenta mandarle a meta el mensaje, y retorna error. (la causa es que no coincide el numero que le habla, con los números habilitados para hablar que se configuran en Meta)

Al usar META, y agregar números de prueba, facebook no considera el código de area +549, sino que solo +54. Pero, al usar el método para enviar mensajes a la api desde la librería, el numero llega con el 9. Así, es que nunca coinciden los números autorizados de test de META.

El cambio hace que ahora verifica si el numero comienza con el prefijo de ARG (549), y le saca el 9 para solucionar el problema.

Soluciona al error:

image

Forma parte de este proyecto.

leifermendez commented 2 months ago

Muy bien, lo reviso y merged, tengo entendió que número mexicanos puede pasar algo similar sería ideal si creamos un objeto {XX:YY} así como tener un índice de número que necesiten un parseo

rodrimarchese commented 2 months ago

Perfecto! buena idea. Lo hago y subo los cambios asi facilitamos posibles nuevos fixes. (pd: ignore el force-push, me confundi y pushie otro fix a la misma rama y tuve que rollbackear)

rodrimarchese commented 2 months ago

@leifermendez Hare un mapeo para poder agregar codigos de prefijos de varios paises. Pero tengo una duda de la cual desconozco.

Seran todos de 3 digitos? Estaba pensando en hacer un mapa, sin cantidad estricta de numeros de prefijo, y que compruebe si el prefijo existe en el mapa, sea de longitud que sea. quizas es un poco menos eficiente, pero mas escalable. Que opinas?

lo mas eficiente que se me ocurrio seria algo asi:

 const prefixMap = {
    '549': '54',
    '1234': '123',
    '12': '1'
};

function findLongestPrefix(phoneNumber) {
    for (let i = phoneNumber.length; i > 0; i--) {
        const prefix = phoneNumber.substring(0, i);
        if (prefix in prefixMap) {
            return prefixMap[prefix] + phoneNumber.substring(i);
        }
    }
    return phoneNumber;  // Retorna el número original si no se encuentra ningún prefijo
}
leifermendez commented 2 months ago

@leifermendez Hare un mapeo para poder agregar codigos de prefijos de varios paises. Pero tengo una duda de la cual desconozco.

Seran todos de 3 digitos? Estaba pensando en hacer un mapa, sin cantidad estricta de numeros de prefijo, y que compruebe si el prefijo existe en el mapa, sea de longitud que sea. quizas es un poco menos eficiente, pero mas escalable. Que opinas?

lo mas eficiente que se me ocurrio seria algo asi:

const prefixMap = {
   '549': '54',
   '1234': '123',
   '12': '1'
};

function findLongestPrefix(phoneNumber) {
   for (let i = phoneNumber.length; i > 0; i--) {
       const prefix = phoneNumber.substring(0, i);
       if (prefix in prefixMap) {
           return prefixMap[prefix] + phoneNumber.substring(i);
       }
   }
   return phoneNumber;  // Retorna el número original si no se encuentra ningún prefijo
}

Estuve probando que te parece

const prefixMap = {
   '549': '54',
   '1234': '123',
   '12': '1'
};

function fixMetaNumber(phoneNumber){
    for (const [prev, current] of Object.entries(prefixMap)) {
      if(phoneNumber.startsWith(prev)) {
        return phoneNumber.replace(prev, current)
      }
    }
}

console.log(fixMetaNumber('549888888888'))
leifermendez commented 2 months ago

@rodrimarchese mira justo dejaron un issue con los numero mexicanos #1004

rodrimarchese commented 2 months ago

@leifermendez Implementé la forma que sugeriste. Probé y es mucho mas eficiente. Tambien agregue prefix de MEX según el issue que marcaste.

leifermendez commented 2 months ago

Gracias!