top_fr
Se connecter
Votre Bitrix24
Se connecter
Autoriser à entrer dans
le Bitrix24 de votre entreprise.
Se connecter

Bitrix24Help

WebHooks

Évaluation:
Comme vous pouvez le savoir, Bitrix24 comprend une REST API étendue qui peut être utilisée pour étendre les fonctionnalités de Bitrix24 et intégrer les systèmes des tierces parties. Les méthodes REST peuvent créer et éditer les entités et tâches CRM, et publier des messages sur le flux d'activités. En fait, elles peuvent faire quasiment tout. 

Jusqu'à récemment, cependant, la vie de développeur REST apparemment nonchalante était perturbée par l'ombre menaçante du protocole OAuth 2.0 qui était une obligation plutôt compliquée à intégrer. Même si son introduction n'est maintenant plus toute jeune qu'il est actuellement utilisé par les sociétés de logiciel majeures, de nombreux développeurs ont une perte de motivation quand le protocole doit être intégralement implémenté. Un autre inconvénient est que vous devez maintenant mettre à jour les jetons d'authentification si vous avez besoin d'un échange de données continuant et sans supervision avec Bitrix24. 

De temps en temps, tout ce qu'un développeur demande est une connexion d'une instance Bitrix24 à un système tiers connu, ou juste à un simple formulaire web. Imaginons que votre supérieur, qui souffre d'un terrible mal au crâne après une fête chez ses voisins, veut que les rapports d'entrepôt soient publiés sur le flux d'activités. Que répondez-vous ? 

Du calme, messieurs. Nous vous avons facilité la vie : un nouveau système d'intégration Bitrix24 a été conçu et il colle parfaitement aux solutions maison. Je veux bien sûr parler des tristement célèbres web hooks. Enfin, tristement n'est peut être pas le plus approprié : ils sont célèbres pour rendre heureux les développeurs ! 

Grâce aux webhooks, vous pouvez profiter des méthodes REST API tout en vous évitant le problème que représente l'implémentation d'OAuth 2.0. 

Webhooks entrants

Voyons voir comment cela fonctionne. Imaginons que notre site comporte un formulaire de commentaire qui n'utilise toujours pas les formulaires CRM Bitrix24 pour une raison ou une autre. À la place, nous sommes suffisamment bornés pour laisser le formulaire tel quel tout en ajoutant divers trucs pour qu'un nouveau prospect soit créé dans Bitrix24 quand le formulaire est envoyé. 

Tout ce que nous faisons, c'est ouvrir Applications > Webhooks et cliquer sur "Ajouter un webhook" : 

Webhooks_1.png 
Sélectionnez "Webhook entrant" comme type de webhook (le but est de connecter Bitrix24 extérieurement, n'est-ce pas ?) et voilà ! Le légendaire formulaire des paramètres du webhook. 

Saisissez le nom et la description du webhook, puis sélectionnez le module dont l'accès est requis. Dans le cas présent, nous avons besoin d'un accès au module CRM parce que nous voulons ajouter des prospects. 

Webhooks_2.png 
Cliquez sur "Enregistrer". Le formulaire affiche de nouvelles informations : 

Webhooks_3.png 
Voyons maintenant ce que contient cette URL. 

1.Voici l'ID d'utilisateur dont les droits d'accès seront appliquées au webhook. Bien entendu, l'URL indique l'ID de l'utilisateur qui vient de créer le webhook. 
2. Le code du webhook. Conservez-le en sécurité. Évitez de publier un selfie de ce code sur Instagram. 3A REST méthode à exécuter. La méthode "profil" est seulement un exemple. Nous allons utiliser crm.lead.add à la place. 
3. Nous devons à présent tout simplement appeler la bonne URL, c'est-à-dire celle que la machine intelligente a créée pour nous. Ajoutez le bon nom de méthode. C'est tout. 

Et voici comment procéder : 

<?
/**
 * Écrire les données dans le fichier journal.
 *
 * @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>  


Maintenant, des remarques importantes. Tout d'abord : évitez absolument que vos formulaires web soient aussi moches que celui de l'exemple J. Ensuite, presque toutes les approches d'intégrations Bitrix24 peuvent êtres réduites à ces procédures simples : créez une URL ; remplissez la variable $queryData (plus d'informations ici) ; initialisez curl et invoquez Bitrix24 grâce à un appel à curl_exec. Traitez la réponse JSON. Et hop, tout le monde est heureux. Même la gueule de bois de votre patron ne l'est plus. 

Résumons donc les trois manipulations : 

1. Ajoutez un webhook et utilisez le formulaire de ses paramètres pour obtenir une bonne grosse URL, directement dans votre Bitrix24. 
2. Remplacez le nom par défaut de la méthode REST par celui de celle dont vous avez besoin. Créez un tableau de données de requêtes. 
3. Appelez Bitrix24 grâce à l'URL. 

Si vous voulez tester votre petit dernier, ouvrez le formulaire, remplissez les champs et envoyez. Parcourrez maintenant votre Bitrix24 pour voir le nouveau prospect être ajouté. C'est tout, vous pouvez maintenant vous reposer. 

Webhooks sortants

Maintenant que vous avez bien récupéré, vous allez être heureux d'apprendre qu'on peut s'éclater encore plus ! L'intégration peut être faite dans les deux sens. Des fois, quelqu'un peut avoir désespérément besoin d'envoyer des informations à un tiers à chaque fois que quelque chose est modifié dans Bitrix24. Comme, par exemple, vous pouvez vouloir créer un ERP personnalisé quand un commercial attribue un certain statut à une transaction Bitrix24. 

Pour changer, ouvrez Applications > Webhooks, mais cette fois cliquez sur "Webhook sortant". Cela ouvrira un formulaire différent, parce que vous n'avez pas besoin de créer de clé entrante. Cependant, nous devons sélectionner un événement qui, une fois activé, appellera notre gestionnaire. 

Webhooks_4.png 

Précisez l'URL du gestionnaire, donnez un nom clair au nouveau webhook et, le plus important, sélectionnez l'événement ONCRMDEALUPDATE. Envoyez le formulaire pour créer une clé d'authentification qui sera utilisée dans notre gestionnaire pour vérifier si l'appel vient de Bitrix24 et est automatique. Cela ne semble pas être le summum de la sécurité, mais cela suffira la plupart du temps. 

Webhooks_5.png 

Le gestionnaire de cet exemple s'occupe du boulot le plus simple : consigner tout ce qui passe par lui. 

<?

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;
}  


À présent, si nous ouvrons une transaction pour la modifier et que nous enregistrons, nous verrons une entrée dans le journal : 

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] => ???
     )

)
  

Vous avez vu à quel point il était facile d'obtenir les information sur les modifications de transaction ? Nous pouvons maintenant utiliser le webhook entrant décrit plus tôt pour obtenir les détails en appelant la méthode crm.deal.get.

Prise en charge de l'automatisation de la CRM

Nous avons trouvé les webhooks si simples et utiles que nous avons voulu aller plus loin et permettre la prise en charge de l'automatisation du CRM ! 

Ouvrez le formulaire des préférences du CRM, sélectionnez Automatisation dans le menu et cliquez sur Transactions. 

Webhooks_6.png 
Pour garder simple le tout, nous allons utiliser le gestionnaire de webhook sortant créé plus tôt. Nous allons juste l'appeler explicitement. 

Cliquez sur "Configurer les règles d'automatisation" et ajoutez-en une à n'importe quelle étape de transaction en sélectionnant "Webhook" en type de règle. Une fois le type de règle sélectionné, un nouveau formulaire sera affiché et vous permettra de préciser l'URL du gestionnaire et les paramètres à lui transférer. 

Webhooks_7.png 
En exemple, donnons au gestionnaire l'étape de transaction: 

Webhooks_8.png 
Enregistrez tout (cliquez sur "Enregistrer" dans les formulaires). Ouvrez n'importe quelle transaction et changez son étape en celle pour laquelle nous avons créé une règle. Cela déclenchera le webhook sortant, et le gestionnaire ajoutera les données de la transaction au journal : 

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
     )

) 

Merci, cela m'a aidé Merci :) Ça ne m'a pas aidé Nous sommes désolés
Pourriez-vous nous préciser pourquoi:
Ce n'est pas ce que je cherche
C'est trop compliqué

Vous n'avez pas trouvé de réponse à votre question?

Envoyez votre question à l'équipe Bitrix24Help
L'accès aux spécialistes du support technique nécessite un abonnement au plan commercial et n'est pas disponible pour les utilisateurs de compte gratuit. Les comptes gratuits sont limités aux ressources d'auto-assistance telles que les guides de produit, les articles d'assistance technique, les tutoriels vidéo et les webinaires gratuits. L'assistance technique, la formation, la configuration, la personnalisation et d'autres services à valeur ajoutée peuvent également être achetés directement auprès de partenaires Bitrix24 locaux.