• 0
Ricardo Infante

Api para enviar mensajes a compradores de mercadolibre

Question

 
Hola buenas,
Somos una empresa que publicamos en mercadolibre.
 
Necesitamos que nos guíen como usar la api para enviar mensajes a clientes de forma automática cada vez que ofertan.
 
Necesitamos enviar información de contacto, instrucciones y cuenta bancarias.
 
Gracias de antemano.

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0
On 7/21/2018 at 7:17 AM, Ricardo Infante said:

Hola, no lo obtienes directo de la notificación, te vas al recurso que viene siendo el número de orden. Ejmp:

$data = json_decode(file_get_contents('php://input'), true);//Con esto atrapas la informacion que te envia ML
$resource = $data['resource']; //Aqui creas tu variable que contiene el resource

$meli = new Meli($appId, $secretKey, $token); //Crea la sesion de ML
$params = array('access_token' => $token);
$order_data = $meli->get($resource, $params);//Haces un GET a la API para obtener los datos de la orden


$order_data_buyerid = $order_data['body']->buyer->id;
$order_data_id = $order_data['body']->id;


//SACAMOS MAS DATOS DE LA ORDEN

$urlorden = '/orders/'.$order_data_id.'';
$orden = $meli->get($urlorden, $params);

 

En la variable $orden están todos los atributos de la orden. Si quieres sacar el nombre del cliente sería algo así: 

//nombre de comprador
$first_name = $orden['body']->buyer->first_name;
$last_name = $orden['body']->buyer->last_name;
$nombre_comprador = $first_name .' '. $last_name;
 

 

 

Hola, 

Estas llamando a la API dos veces a lo mismo, tu urlorden es lo mismo que el resource.

Generalmente el resource te dice a que objeto llamar en la api, por ejemplo $resource = '/orders/14848394' y eso te lo envia la misma notificacion.

Analiza un poco el codigo amigo y trata de visualizar y entenderlo un poco mas.

Saludos

Share this post


Link to post
Share on other sites
  • 0

Hola que tal hace un año que estoy corriendo los mensajes sin problemas gracias a su  gran ayuda des el dia 17/01/20202 dejo de funcionar y no logro encontrar cual es el problema el error es:

Array
(
    [body] => stdClass Object
        (
            [error] => resource not found
            [message] => Si quieres conocer los recursos de la API que se encuentran disponibles visita el Sitio de Desarrolladores de MercadoLibre (http://developers.mercadolibre.com)
        )

    [httpCode] => 404
)
Array
(
    [body] => stdClass Object
        (
            [message] => Resource not found.
            [error] => not_found
            [status] => 404
            [cause] => Array
                (
                )

        )

    [httpCode] => 404
)

////////////////PHP///////


$query = mysqli_query($conexion,"SELECT * FROM mensajes WHERE id = '1'") or die(mysqli_error());
$row = mysqli_fetch_array($query);

$token = $row['token'];
    $r_token = $row['r_token'];
    $usuarioid = $row['usuarioid'];


 # CONSULTAMOS LAS NOTIFICACIONES

$data = json_decode(file_get_contents('php://input'), true);//Con esto atrapas la informacion que te envia ML
$resource = $data['resource']; //Aqui creas tu variable que contiene el resource

$meli = new Meli($appId, $secretKey, $token); //Crea la sesion de ML
$params = array('access_token' => $token);
$order_data = $meli->get($resource, $params);//Haces un GET a la API para obtener los datos de la orden


//creacion de mensaje
$urlorden = '/orders/XXXXXXX';
$orden = $meli->get($urlorden, $params);

 $body = array( 'from' => array(
        'user_id' => $usuarioid //Aquí colocan su user Id
    ),
    'to' => [array('user_id' => XXXXXXX,
            'resource' => 'orders',
            'resource_id' => XXXXXXX,
            'site_id' => 'MLU')],
    'subject' => 'PRUEBA',
    'text' => array('plain' => 'Hola'),
);      

$response = $meli->post('/messages', $body, $params);

echo '<pre>';
print_r($order_data);
print_r($response);
echo '</pre>';
 

Estaria muy agradecido si me podría dar una mano ya que llevo noches sin dormir intentando que funciones saludos y gracias.

Edited by damian106

Share this post


Link to post
Share on other sites
  • 0
20 hours ago, damian106 said:

Hola que tal hace un año que estoy corriendo los mensajes sin problemas gracias a su  gran ayuda des el dia 17/01/20202 dejo de funcionar y no logro encontrar cual es el problema el error es:


Array
(
    [body] => stdClass Object
        (
            [error] => resource not found
            [message] => Si quieres conocer los recursos de la API que se encuentran disponibles visita el Sitio de Desarrolladores de MercadoLibre (http://developers.mercadolibre.com)
        )

    [httpCode] => 404
)
Array
(
    [body] => stdClass Object
        (
            [message] => Resource not found.
            [error] => not_found
            [status] => 404
            [cause] => Array
                (
                )

        )

    [httpCode] => 404
)

////////////////PHP///////


$query = mysqli_query($conexion,"SELECT * FROM mensajes WHERE id = '1'") or die(mysqli_error());
$row = mysqli_fetch_array($query);

$token = $row['token'];
    $r_token = $row['r_token'];
    $usuarioid = $row['usuarioid'];


 # CONSULTAMOS LAS NOTIFICACIONES

$data = json_decode(file_get_contents('php://input'), true);//Con esto atrapas la informacion que te envia ML
$resource = $data['resource']; //Aqui creas tu variable que contiene el resource

$meli = new Meli($appId, $secretKey, $token); //Crea la sesion de ML
$params = array('access_token' => $token);
$order_data = $meli->get($resource, $params);//Haces un GET a la API para obtener los datos de la orden


//creacion de mensaje
$urlorden = '/orders/XXXXXXX';
$orden = $meli->get($urlorden, $params);

 $body = array( 'from' => array(
        'user_id' => $usuarioid //Aquí colocan su user Id
    ),
    'to' => [array('user_id' => XXXXXXX,
            'resource' => 'orders',
            'resource_id' => XXXXXXX,
            'site_id' => 'MLU')],
    'subject' => 'PRUEBA',
    'text' => array('plain' => 'Hola'),
);      

$response = $meli->post('/messages', $body, $params);

echo '<pre>';
print_r($order_data);
print_r($response);
echo '</pre>';
 

Estaria muy agradecido si me podría dar una mano ya que llevo noches sin dormir intentando que funciones saludos y gracias.

Hola! La forma de usar este recurso fue modificado hace tiempo. De hecho extendieron el tiempo mas de lo previsto para dar tiempo de que se adaptaran las aplicaciones. Aquí podrás encontrar detalles al respecto. Saludos.

Share this post


Link to post
Share on other sites
  • 0
21 hours ago, damian106 said:

Hola que tal hace un año que estoy corriendo los mensajes sin problemas gracias a su  gran ayuda des el dia 17/01/20202 dejo de funcionar y no logro encontrar cual es el problema el error es:


Array
(
    [body] => stdClass Object
        (
            [error] => resource not found
            [message] => Si quieres conocer los recursos de la API que se encuentran disponibles visita el Sitio de Desarrolladores de MercadoLibre (http://developers.mercadolibre.com)
        )

    [httpCode] => 404
)
Array
(
    [body] => stdClass Object
        (
            [message] => Resource not found.
            [error] => not_found
            [status] => 404
            [cause] => Array
                (
                )

        )

    [httpCode] => 404
)

////////////////PHP///////


$query = mysqli_query($conexion,"SELECT * FROM mensajes WHERE id = '1'") or die(mysqli_error());
$row = mysqli_fetch_array($query);

$token = $row['token'];
    $r_token = $row['r_token'];
    $usuarioid = $row['usuarioid'];


 # CONSULTAMOS LAS NOTIFICACIONES

$data = json_decode(file_get_contents('php://input'), true);//Con esto atrapas la informacion que te envia ML
$resource = $data['resource']; //Aqui creas tu variable que contiene el resource

$meli = new Meli($appId, $secretKey, $token); //Crea la sesion de ML
$params = array('access_token' => $token);
$order_data = $meli->get($resource, $params);//Haces un GET a la API para obtener los datos de la orden


//creacion de mensaje
$urlorden = '/orders/XXXXXXX';
$orden = $meli->get($urlorden, $params);

 $body = array( 'from' => array(
        'user_id' => $usuarioid //Aquí colocan su user Id
    ),
    'to' => [array('user_id' => XXXXXXX,
            'resource' => 'orders',
            'resource_id' => XXXXXXX,
            'site_id' => 'MLU')],
    'subject' => 'PRUEBA',
    'text' => array('plain' => 'Hola'),
);      

$response = $meli->post('/messages', $body, $params);

echo '<pre>';
print_r($order_data);
print_r($response);
echo '</pre>';
 

Estaria muy agradecido si me podría dar una mano ya que llevo noches sin dormir intentando que funciones saludos y gracias.

Soy novato en esto es mas si me funciona fue gracias a que subieron un ejemplo aca ,es mucho pedir si me podrias indicar que tengo que cambiar de este codigo estoy muy perdido gracias.

Share this post


Link to post
Share on other sites
  • 0
2 hours ago, damian106 said:

Soy novato en esto es mas si me funciona fue gracias a que subieron un ejemplo aca ,es mucho pedir si me podrias indicar que tengo que cambiar de este codigo estoy muy perdido gracias.

si con este código listo aun tienes dudas, necesita estudiar más el language de programación y la documentación

Share this post


Link to post
Share on other sites
  • 0
Les hago una consulta, siguiendo con esta conversación.

Cómo puedo hacer para añadirle un break line al plain text y que se envíe de esa manera el mensaje?

Muchas veces me sucede que los mensajes que quisiera enviar son más extensos, por lo que el dejar espacios queda visiblemente mejor.

array('plain' => 'Hola muchas gracias por tu compra, Ten un excelente dia'),

Share this post


Link to post
Share on other sites
  • 0

Hola, no habia regresado a este mensajes desde aquella vez que respondi hace como 2 años y aun sigue activo.

Concuerdo con @mldev aqui el problema no es la API y la documentacion, si no que estan teniendo dudas tan basicas de programacion que la verdad nos hace dudar en si ayudar o no. Es decir todo bien, podemos ayudar, pero si nos dicen que gracias a que copiaron el codigo basico de prueba que les pusimos que con eso resolvieron su problema y que si podemos hacerles mas codigo, algo anda mal.

Aqui creo que la mayoria se mete a resolver dudas y a pasar un buen rato, pero tampoco estamos para hacer el trabajo gratis, podemos dar ejemplos para sacarlos del apuro, pero ya implementar algo mas seguro y real para produccion, es parte de ustedes.

Y por ejemplo, arriba de mi respuesta esta una pregunta que si como divide en parrafos un texto, puedes usar ciertos tags de html en el texto que enviar, por ejemplo, <br>, y con ese ya daras el brinco de parrafo. Y esto tal vez no esta en la API de ML pero lo aprendi a prueba y error, no hay de otra.

Es el tema que le hemos dado mil vueltas, la API de ML no les va a dar todo en charola de oro jajajaja, hay que meterle algo de bussiness logic de nuestra parte.

Saludos a todos.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now