top_es
Log In
Su Bitrix24
Autorizar a ingresar
a su compañía Bitrix24.
Log In

Soporte Bitrix24

Webhooks

Clasificación:

Como bien sabrá, Bitrix24 incluye API REST que puede utilizarse para extender las funciones de Bitrix24 e integrar sistemas de terceros. Estos métodos pueden crear y editar entidades de CRM y sus tareas, enviar mensajes a Flujo de Actividad, y de hecho, pueden hacer casi cualquier cosa.

Hasta hace poco, sin embargo, la vida de un desarrollador de API, estaba perturbada por la amenaza de una sombra del protocolo OAuth 2.0 que figuraba como requisito, y su complicada implementación estaba presente. A pesar de que ya transcurrió un tiempo desde que se introdujo, y está actualmente en uso por las principales empresas de software, muchos desarrolladores aún sufren cuando el protocolo debe ser implementado desde cero. Otra desventaja es que tendría que actualizar los tokens de autenticación si su requisito fuera un intercambio de datos continuo automatizado y sin supervisión con Bitrix24.

A veces todo lo que se le pide a un desarrollador es conectar la instancia Bitrix24 a un sistema de terceros, o simplemente a un simple formulario web. Digamos que el jefe sufre de un terrible dolor de cabeza después de un evento y de repente quiere tener informes de almacén publicado en la secuencia de actividad. ¿Qué hace Usted? Por supuesto que, no tiene otra opción que ponerse a trabajar... 

En este caso, nosotros hicimos su vida más fácil: un nuevo sistema de integración Bitrix24 fue ideado, y es sólo un ajuste perfecto para soluciones internas. Estoy hablando de los conocidos ganchos web o los Webhooks. De hecho, son famosos por brindarles la felicidad a los desarrolladores. 

Con webhooks utiliza los métodos REST API mientras se ahorra la molestia de tener que implementar OAuth 2.0.

Webhooks entrantes 

Bien, veamos. Supongamos que tenemos un formulario de comentarios en nuestro sitio web que todavía no está utilizando los Formularios de Bitrix24 CRM y, en lugar de ir por él, somos lo suficientemente tercos como para dejar el formulario como lo es mientras agregamos la información para que un nuevo prospecto sea creado en Bitrix24 cuando se envía el formulario.

Debe ir a Aplicaciones > Webhooks y hacer clic en "Agregar webhook": 

1.png

Seleccione "Webhook entrante" como tipo de webhook (nuestra intención es conectarse a Bitrix24 externamente) y aquí viene el formulario de parámetros de webhook.

Introduzca el nombre y la descripción del webhook y seleccione el módulo cuyo acceso es necesario. En este caso necesitamos acceso al módulo de CRM porque queremos agregar clientes potenciales.

2.png

 Haga clic en Guardar, el formulario mostrará ahora la nueva información:

3.png


Qué incluye esta URL:


1.Este es el ID de usuario cuyos permisos de acceso se aplicarán al webhook. Obviamente, la URL especifica el ID de un usuario que acaba de crear el webhook.
2. El código webhook. Manténgalo seguro. No publique un selfie con este código en Instagram.3A método REST para ejecutar. El método de "perfil" es sólo un ejemplo; Vamos a usar crm.lead.add en su lugar.
3. Todo lo que tenemos que hacer ahora es renombrar la URL que fue creada para nosotros en forma automática, para eso sólo tiene que incluir un nombre de método necesario. Eso es todo al respecto.

Aquí es cómo se puede hacer:


<?
/**
 * Write data to log file.
 *
 * @param mixed $data
 * @param string $title
 *
 * @return bool
 */
function writeToLog($data, $title = '') {
 $log = "\n------------------------\n";
 $log .= date("Y.m.d G:i:s") . "\n";
 $log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n";
 $log .= print_r($data, 1);
 $log .= "\n------------------------\n";
 file_put_contents(getcwd() . '/hook.log', $log, FILE_APPEND);
 return true;
}

$defaults = array('first_name' => '', 'last_name' => '', 'phone' => '', 'email' => '');

if (array_key_exists('saved', $_REQUEST)) {
 $defaults = $_REQUEST;
 writeToLog($_REQUEST, 'webform');

 $queryUrl = 'https://restapi.bitrix24.ru/rest/1/31uhq2q855fk1foj/crm.lead.add.json';
 $queryData = http_build_query(array(
 'fields' => array(
 "TITLE" => $_REQUEST['first_name'].' '.$_REQUEST['last_name'],
 "NAME" => $_REQUEST['first_name'],
 "LAST_NAME" => $_REQUEST['last_name'],
 "STATUS_ID" => "NEW",
 "OPENED" => "Y",
 "ASSIGNED_BY_ID" => 1,
 "PHONE" => array(array("VALUE" => $_REQUEST['phone'], "VALUE_TYPE" => "WORK" )),
 "EMAIL" => array(array("VALUE" => $_REQUEST['email'], "VALUE_TYPE" => "WORK" )),
 ),
 'params' => array("REGISTER_SONET_EVENT" => "Y")
 ));

 $curl = curl_init();
 curl_setopt_array($curl, array(
 CURLOPT_SSL_VERIFYPEER => 0,
 CURLOPT_POST => 1,
 CURLOPT_HEADER => 0,
 CURLOPT_RETURNTRANSFER => 1,
 CURLOPT_URL => $queryUrl,
 CURLOPT_POSTFIELDS => $queryData,
 ));

 $result = curl_exec($curl);
 curl_close($curl);

 $result = json_decode($result, 1);
 writeToLog($result, 'webform result');

 if (array_key_exists('error', $result)) echo "Error saving lead: ".$result['error_description']."<br/>";
}

?>
<fo rm method="post" action="">
    Name: <input type="text" name="first_name" size="15" value="<?=$defaults['first_name']?>"><br/>
    Last name: <input type="text" name="last_name" size="15" value="<?=$defaults['last_name']?>"><br/>
    Phone: <input type="phone" name="phone" value="<?=$defaults['phone']?>"><br/>
    E-mail: <input type="email" name="email" value="<?=$defaults['email']?>"><br/>
    <input type="hidden" name="saved" value="yes">
    <input type="submit" value="send">
</form> 

Notas importantes
En primer lugar, nunca haga que sus formularios web sean tan feos e inseguros como el del ejemplo a continuación, casi todos los enfoques de integración de Bitrix24 se reducen a estos sencillos pasos: 
  • crear una URL: debe rellenar la variable $ queryData (lea más aquí); 
  • Iniciar curl e invocar Bitrix24: utilizando una llamada a curl_exec. 
  • procese la respuesta JSON: eso es todo.
Vamos a resumir los tres sencillos pasos:

1. agregue un webhook y utilice el formulario de parámetros de webhook para obtener una nueva URL caliente y crepitante, directamente en su Bitrix24.
2. reemplace el nombre del método REST predeterminado por el que desee. Cree la matriz de datos de consulta.
3. llame su Bitrix24 utilizando la URL.

Si desea probar esta nueva idea, abra el formulario, rellene los campos y envíelo. Ahora navegue por su Bitrix24 para ver el nuevo prospecto agregado. 

 Webhooks salientes 


La integración puede provenir de ambos lados. A veces se necesita desesperadamente enviar alguna información a un sistema de terceros siempre que se produzca un cambio en Bitrix24. Una vez más, abra Aplicaciones > Webhooks > Webhooks salientes.

Esto traerá una forma diferente porque no tenemos que crear una clave entrante. Sin embargo, tenemos que seleccionar un evento que, cuando se active, llamará a nuestro manejador.

4.png

  • especifique la dirección URL del comerciante, otorgue al nuevo webhook un nombre claro y agradable y, lo más importante, seleccione el evento ONCRMDEALUPDATE
  • envíe el formulario para crear una clave de autenticación que utilizaremos en nuestro controlador para comprobar si se llama desde Bitrix24 y la llamada es auténtica. 
  • en cuanto a la seguridad, esto puede ser que no sea la medida a prueba de balas, pero será suficiente en la mayoría de los casos.
5.png

El manejador en este ejemplo, realiza todo el trabajo.
Registra todo lo transmitido a él.

<?

print_r($_REQUEST);
writeToLog($_REQUEST, 'incoming');

/**
 * Write data to log file.
 *
 * @param mixed $data
 * @param string $title
 *
 * @return bool
 */
function writeToLog($data, $title = '') {
 $log = "\n------------------------\n";
 $log .= date("Y.m.d G:i:s") . "\n";
 $log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n";
 $log .= print_r($data, 1);
 $log .= "\n------------------------\n";
 file_put_contents(getcwd() . '/hook.log', $log, FILE_APPEND);
 return true;
}  

Ahora sí, si abrimos un acuerdo para editar y guardar los cambios, veremos una entrada en el registro:

2017.01.17 12:58:29
incoming
Array
(
    [event] => ONCRMDEALUPDATE
    [data] => Array
     (
      [FIELDS] => Array
          (
           [ID] => 662
          )

     )

    [ts] => õõõ
    [auth] => Array
     (
      [domain] => õõõ.bitrix24.com
      [client_endpoint] => https://õõõ.bitrix24.com/rest/
      [server_endpoint] => https://oauth.bitrix.info/rest/
      [member_id] => õõõ
      [application_token] => õõõ
     )

)

Entonces podremos usar el webhook entrante discutido anteriormente para obtener detalles del reparto llamando al método crm.deal.get. 
Soporte de automatización de CRM
¡Hemos encontrado los webhooks tan simples y útiles, que dimos un paso más para que sea compatible con la automatización de CRM!

Abra la Configuracion de CRM, seleccione Automatización en el menú y haga clic en Negociaciones:

6.png



Para mantener las cosas simples, usaremos el mismo controlador de webhook de salida que hemos creado anteriormente. Sin embargo, lo llamaremos explícitamente.

Haga clic en "Configurar reglas de automatización" y agregue una regla a cualquier etapa de transacción mientras selecciona "Webhook" como tipo de regla. Una vez seleccionado el tipo de regla, se seguirá un nuevo formulario en el que se especificará la dirección URL del controlador y los parámetros que se pasarán a él.


7.png

 
Como ejemplo, vamos a llenar al manejador con la etapa de acuerdo:



8.png

Después de Guardar los cambios realizados, abra cualquier negociación y cambie su escenario a aquél para el que hemos creado la regla. Esto activará el webhook de salida y el manejador agregará los datos de transacción al registro:


2017.01.17 12:58:27
incoming
Array
(
    [status] => New
    [document_id] => Array
     (
      [0] => crm
      [1] => CCrmDocumentDeal
      [2] => DEAL_662
     )

    [auth] => Array
     (
      [domain] => xxx.bitrix24.com
      [client_endpoint] => https://xxx.bitrix24.com/rest/
      [server_endpoint] => https://oauth.bitrix.info/rest/
      [member_id] => xxx
     )

) 


Esto me ha ayudado Gracias :) Esto no me ha ayudado Lo sentimos mucho :(
¿Nos podría decir por qué?
Esto no es lo que estoy buscando
Esto es demasiado complicado

¿No encontró respuesta a su pregunta?

Envíe sus preguntas a nuestro equipo de Soporte de Bitrix24
El acceso a soporte técnico requiere suscripción a un plan comercial y no está disponible para usuarios de cuentas gratuitas. Las cuentas gratuitas están limitadas a los recursos de autoayuda, como manuales de productos, artículos de Help Desk, tutoriales de video y seminarios web gratuitos. La asistencia técnica, capacitación, configuración, personalización y otros servicios de valor agregado también se pueden comprar directamente a los socios locales de Bitrix24