Foros del Web » Programando para Internet » PHP » Zend »

Enviar attachments a zendesk con curl

Estas en el tema de Enviar attachments a zendesk con curl en el foro de Zend en Foros del Web. Hola que tal, la pregunta es esta, quisiera saber si alguien a trabajado con zendesk, lo que quiero hacer es poder enviar archivos a zendesk, ...
  #1 (permalink)  
Antiguo 10/06/2011, 16:42
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 9 años
Puntos: 40
Enviar attachments a zendesk con curl

Hola que tal, la pregunta es esta, quisiera saber si alguien a trabajado con zendesk, lo que quiero hacer es poder enviar archivos a zendesk, ya verifiqué la API pero no le entiendo de mucho, ya he tratado diferentes cosas pero no me funcionan, puedo enviar tickets pero aun no me sale lo de enviar los attachments, espero alguien me pueda ayudar, gracias.
  #2 (permalink)  
Antiguo 10/06/2011, 16:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.728
Antigüedad: 9 años, 2 meses
Puntos: 1512
Respuesta: Enviar attachments a zendesk con curl

Desconozco como hacerlo con la librería pero si quieres aprender como hacer peticiones a otros servidores usando cURL, pasa por el área de aportes hay un material que te puede ayudar a como usar cURL.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 10/06/2011, 16:58
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 9 años
Puntos: 40
Respuesta: Enviar attachments a zendesk con curl

Gracias abimaelrc, encontré este codigo en los aportes el cual creo que me puede servir:
Código PHP:
<?php
$ch 
curl_init();
curl_setopt($chCURLOPT_URL"http://example.com/send_file.php");
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_POSTtrue);
// lo mismo que <input type="file" name="nombre_del_input" />
$post = array(
    
"nombre_del_input"=>"@C:/directorio/hacia/el/archivo.jpg",
);
curl_setopt($chCURLOPT_POSTFIELDS$post);
$page curl_exec($ch);
echo 
$page;
?>
solo una pregunta, en esta linea
$post = array(
"nombre_del_input"=>"@C:/directorio/hacia/el/archivo.jpg",
);

tengo que poner la ruta fisica del archivo en esa parte?
  #4 (permalink)  
Antiguo 10/06/2011, 17:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.728
Antigüedad: 9 años, 2 meses
Puntos: 1512
Respuesta: Enviar attachments a zendesk con curl

Exacto, y acuérdate que debe ser la del servidor que está ejecutando el PHP.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 10/06/2011, 17:03
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 10 años, 7 meses
Puntos: 845
Respuesta: Enviar attachments a zendesk con curl

Que tal xtimed,

Has probado el ejemplo de attachments que tiene el API ?
http://www.zendesk.com/api/attachments

Por cierto no conocia el soft y me ha llamado la atención el grado de integración que tiene con las diferentes plataformas, sin dudas un ejemplo de como se debe desarrollar una aplicación hoy en día, abierto a la integración.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 10/06/2011, 17:04
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 9 años
Puntos: 40
Respuesta: Enviar attachments a zendesk con curl

Entonces tendria que subir el archivo primero al servidor para despues enviarlo por curl, o me equivoco?
  #7 (permalink)  
Antiguo 10/06/2011, 17:07
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 9 años
Puntos: 40
Respuesta: Enviar attachments a zendesk con curl

Hola masterpuppet, he intentado pero para serte sincero, no le entiendo al ejemplo, se que al momento de subirlo te regresa un token y ese lo usas en el ticket para ponerle el archivo adjunto, pero hasta ahi, el ticket lo se enviar y todo bien, se donde va ese token pero no he podido hacer que me lo regrese
  #8 (permalink)  
Antiguo 10/06/2011, 17:13
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.728
Antigüedad: 9 años, 2 meses
Puntos: 1512
Respuesta: Enviar attachments a zendesk con curl

Cita:
Iniciado por xtimed Ver Mensaje
Entonces tendria que subir el archivo primero al servidor para despues enviarlo por curl, o me equivoco?
Eso es correcto. Aquella computadora que esté corriendo el PHP.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 10/06/2011, 18:32
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 10 años, 7 meses
Puntos: 845
Respuesta: Enviar attachments a zendesk con curl

Cita:
Iniciado por xtimed Ver Mensaje
Hola masterpuppet, he intentado pero para serte sincero, no le entiendo al ejemplo, se que al momento de subirlo te regresa un token y ese lo usas en el ticket para ponerle el archivo adjunto, pero hasta ahi, el ticket lo se enviar y todo bien, se donde va ese token pero no he podido hacer que me lo regrese
Si no te regresa el token, te debería retornar algún mensaje de error, en cualquier caso te comento que Zend tiene un componente que te puede interesar Zend_Rest_Client.

Cualquier cosa que se te complique, postea el codigo que tengas y vemos que puede ser, muy interesante el tema
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 10/06/2011, 18:52
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 9 años
Puntos: 40
Respuesta: Enviar attachments a zendesk con curl

Hola que tal, ya pude realizar lo que necesitaba, este es mi codigo:
Código PHP:
 $ch1 curl_init($url);
 
curl_setopt($ch1CURLOPT_POST      ,1);
 
curl_setopt($ch1CURLOPT_POSTFIELDS    ,$urlVars);
 
curl_setopt($ch1CURLOPT_FOLLOWLOCATION  ,1); 
 
curl_setopt($ch1CURLOPT_HEADER      ,0);  // DO NOT RETURN HTTP HEADERS 
 
curl_setopt($ch1CURLOPT_RETURNTRANSFER  ,1);  // RETURN THE CONTENTS OF THE CALL
 
$Rec_Data curl_exec($ch1);
 
 echo 
$Rec_Data
Ahora ocupo sacar el valor del token, lo que me regresa es algo parecido a esto:

<uploads token="igv7urxem3p4lrt">
<attachments>
<attachment>49304973</attachment>
</attachments>
</uploads>

Y ocupo el valor de "token", con strip_tags() no se puede por que me borra todo excepto el numero, tampoco creo que pueda aserlo con subtrings por que el token cambia de longitud, alguna idea?
  #11 (permalink)  
Antiguo 10/06/2011, 19:16
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.728
Antigüedad: 9 años, 2 meses
Puntos: 1512
Respuesta: Enviar attachments a zendesk con curl

Usa DOM o SimpleXML. Hay otro tema en el area de aportes que te puede ayudar.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 10/06/2011, 19:24
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 10 años, 7 meses
Puntos: 845
Respuesta: Enviar attachments a zendesk con curl

Creo que el API soporta formato JSON tambien, podrías aplicar json_decode al resultado, seria cuestion de probar, lo único que tendrias que hacer es cambiar la extension al endpoint, en vez de ser upload.xml deberia ser upload.json.

Si funciona me parece mas cómodo que xml para tan pocos datos.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #13 (permalink)  
Antiguo 10/06/2011, 19:28
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 9 años
Puntos: 40
Respuesta: Enviar attachments a zendesk con curl

Curl trabaja con JSON? por lo que he leido, debe ser xml para poder subir el attachment, aparte, para obtener los tickets, tambien tomo un xml de donde extraigo todos los datos de los tickets
  #14 (permalink)  
Antiguo 10/06/2011, 19:38
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.728
Antigüedad: 9 años, 2 meses
Puntos: 1512
Respuesta: Enviar attachments a zendesk con curl

cURL lo que hace es una petición y el resultado te lo muestra, si es que hay algún resultado. Tu usas ese resultado como quieras.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #15 (permalink)  
Antiguo 10/06/2011, 20:13
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 10 años, 7 meses
Puntos: 845
Respuesta: Enviar attachments a zendesk con curl

Creo que el API lo soporta(al JSON) pero no estoy seguro, igual obtener el token con DOM como te sugirió abimaelrc, es bastante simple, algo asi:

Código PHP:
Ver original
  1. $xml = <<<XML
  2. <uploads token="abc123">
  3.   <attachments>
  4.     <attachment>789</attachment>
  5.  </attachments>
  6. </uploads>
  7. XML;
  8.  
  9. $dom   = DOMDocument::loadXML($xml);
  10. $token = $dom->documentElement->getAttribute('token');
  11. echo $token . PHP_EOL;

en tu caso el $xml seria la respuesta de CURL.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #16 (permalink)  
Antiguo 11/06/2011, 11:33
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 9 años
Puntos: 40
Respuesta: Enviar attachments a zendesk con curl

Gracias por sus respuestas, me sirvió de mucho, ya quedó lo que queria hacer, ahora lo voy a implementar con asterisk, muchas gracias =)
  #17 (permalink)  
Antiguo 14/06/2011, 17:30
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 9 años
Puntos: 40
Respuesta: Enviar attachments a zendesk con curl

Hola de nuevo, continuando con el tema de zendesk, me surgió otro problema, ya puedo subir los archivos, solamente que al visualizarlos, por ejemplo, si subí un txt, el contenido de ese txt tiene la ruta del archivo que le pasé en la variable filename al momento de subirlo, y no contiene el texto original, igual al tratar de subir cualquier otro archivo, al momento de bajarlo me marca error el archivo, por ejemplo, un archivo de audio de 600kb no lo abre, el codigo que tengo es el siguiente:
Código PHP:
/************ENVIAR ATTACHMENT**************/

$url "http://xtimed2.zendesk.com/uploads.xml";
 
$urlVars "[email protected]".$archivo['name'];
 

 
$ch1 curl_init($url);
 
curl_setopt($ch1CURLOPT_POST      ,1);
 
curl_setopt($ch1CURLOPT_POSTFIELDS    ,$urlVars);
 
curl_setopt($ch1CURLOPT_FOLLOWLOCATION  ,1); 
 
curl_setopt($ch1CURLOPT_HEADER      ,0);  // DO NOT RETURN HTTP HEADERS 
 
curl_setopt($ch1CURLOPT_RETURNTRANSFER  ,1);  // RETURN THE CONTENTS OF THE CALL 
 
$token curl_exec($ch1);
 
 
$dom   DOMDocument::loadXML(curl_exec($ch1));
 
$token $dom->documentElement->getAttribute('token');
 echo 
"TOKEN " $token PHP_EOL;
 
/************FIN ENVIAR ATTACHMENT**************/ 
Alguna idea de por que este pasando?
De antemano gracias.
  #18 (permalink)  
Antiguo 15/06/2011, 12:42
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.728
Antigüedad: 9 años, 2 meses
Puntos: 1512
Respuesta: Enviar attachments a zendesk con curl

Ya te mencioné un ejemplo, del área de aportes.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #19 (permalink)  
Antiguo 15/06/2011, 13:11
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 9 años
Puntos: 40
Respuesta: Enviar attachments a zendesk con curl

Cita:
Iniciado por abimaelrc Ver Mensaje
Ya te mencioné un ejemplo, del área de aportes.
Si lo seguí, si sube el archivo, pero tengo el detalle que menciono arriba, cuando es un txt por ejemplo, ese contiene la ruta del archivo original y no el contenido que deberia tener
  #20 (permalink)  
Antiguo 15/06/2011, 14:10
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.728
Antigüedad: 9 años, 2 meses
Puntos: 1512
Respuesta: Enviar attachments a zendesk con curl

¿Pero no se supone que vas a subir un archivo? Si es el contenido, con tan solo usar file_get_contents en el archivo, almacenar el contenido en una variable y esta variable indicarla por medio del método de POST o GET lo envias.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #21 (permalink)  
Antiguo 15/06/2011, 14:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 12 años, 2 meses
Puntos: 2126
Respuesta: Enviar attachments a zendesk con curl

La cuestión es que lo que se espera como esa parte no es el nombre del archivo, si no el contenido binario del archivo.

Si ves el ejemplo de curl, la opción de --data-binary se usa para enviar un archivo, al tu poner @archivo.txt, curl busca el archivo, y lo codifica con urlencode y lo envia, para hacer eso con PHP, vas a tener que hacer uso de file_get_contents + urlencode y pasarlo en la cadena.

Saludos.

Etiquetas: curl, php, zendesk
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 05:19.