Comment créer vos Bizzcardz à partir d’Odoo ?

Dans sa volonté et sa puissance de se connecter aux différentes sources de contacts, BizzCardz vous permet d’importer vos données Odoo. Nous allons, via cet article, voir comment mettre cela en œuvre. Par ailleurs, nous précisons que cet article s’adresse spécifiquement aux développeurs car il s’agira d’écrire du code et d’interagir avec l’API d’Odoo.

A cet effet, vous aurez probablement besoin de savoir comment importer/exporter des données avec BizzCardz. Veuillez suivre cet article : Comment importer/exporter des données avec BizzCardz ?

La communication avec l’API Odoo se fait via le protocole XML-RPC. Cela suppose que vous devez disposer de ce protocole dans le langage utilisé.
Nous allons supposer que votre compte Odoo est accessible à l’url https://monsite.odoo.com.
Ci-dessous, nous vous proposons des exemples de codes dans divers langages. Ces codes sont à titre indicatif. Vous devez les adapter selon votre contexte

Dans le cas de PHP, ce protocole n’est pas activé par défaut. Il faudra alors suivre la documentation officielle de PHP pour rendre fonctionnel ce support : https://www.php.net/manual/fr/book.xmlrpc.php.

 

$url = 'https://monsite.odoo.com'; //URL de votre compte Odoo
$url_auth = $url . '/xmlrpc/2/common'; //URL pour l'authentification
$url_exec = $url . '/xmlrpc/2/object'; //URL pour exécuter un model par exemple

$db = 'monsite'; //Base de données
$username = 'identifiant@monsite.com'; //l'email de connexion à votre compte Odoo
$password = '123c9f88f562e67b8524k9b6sxcf189020524m69'; //Une clé API remplaçant le mot de passe

// Class Ripcord recommandé par odoo : https://github.com/poef/ripcord
require_once('ripcord.php');

// Authentification de l'utilisateur
$common = ripcord::client($url_auth);
$uid = $common->authenticate($db, $username, $password, array());

$models = ripcord::client($url_exec);

//Création des users ou du user
$users_odoo = [['name' => 'Nom & Prénom', 'login' => 'identifiant@monsite.com', 'password' => '12345678']];
$user_id = $models->execute_kw($db, $uid, $password, 'res.users', 'create', $users_odoo);

//Encoder les données en json
$users_bizzcardz = [['first_name' => 'Prénom', 'last_name' => 'Nom', 'user_email' => 'identifiant@monsite.com']];
$json = json_encode($users_bizzcardz);

$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_URL => "https://admin.bizzcardz.eu/fr/api/vcard/import/",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => $json,
    CURLOPT_COOKIE => "Path=%2F",
    CURLOPT_HTTPHEADER => [
        "Accept: application/json",
        "Authorization: Api-Key jsk28faE.hbbdV02aVN0lBI+GB09urlBJIOM36LJ9",
        "Content-Type: application/json"
    ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}

 

A la ligne 20, nous avons la création de l’utilisateur Odoo via l’API Odoo.
A partir de la ligne 22, nous commençons la création de la BizzCardz. Nous reprenons le tableau des utilisateurs avec les mêmes informations mais nous veillons à diviser le nom (name) en nom & prénom et changer de façon conforme le nom des champs. Ensuite, nous encodons en json le tableau des utilisateurs car BizzCardz accepte le format json via son API.
A la ligne 39, vous avez la clé API.


import requests
import json
from flask import Flask

app = Flask(__name__)

@app.route('/')
def import_users():
    url = 'https://monsite.odoo.com'  # URL de votre compte Odoo
    url_auth = url + '/xmlrpc/2/common'  # URL pour l'authentification
    url_exec = url + '/xmlrpc/2/object'  # URL pour exécuter un modèle par exemple

    db = 'monsite'  # Base de données
    username = 'identifiant@monsite.com'  # L'email de connexion à votre compte Odoo
    password = '123c9f88f562e67b8524k9b6sxcf189020524m69'  # Une clé API remplaçant le mot de passe

    # Authentification de l'utilisateur
    common = requests.session()
    uid = common.post(url_auth, json={'jsonrpc': '2.0', 'method': 'authenticate',
                                      'params': {'db': db, 'login': username, 'password': password,
                                                 'base_location': url}, 'id': None}).json()['result']

    models = requests.session()
    
    # Création des utilisateurs dans Odoo
    users_odoo = [{'name': 'Nom & Prénom', 'login': 'identifiant@monsite.com', 'password': '12345678'}]
    user_id = models.post(url_exec, json={'jsonrpc': '2.0', 'method': 'execute_kw',
                                          'params': {'db': db, 'uid': uid, 'password': password,
                                                     'model': 'res.users', 'method': 'create',
                                                     'args': [users_odoo]}, 'id': None}).json()['result']

    # Encoder les données en JSON
    users_bizzcardz = [{'first_name': 'Prénom', 'last_name': 'Nom', 'user_email': 'identifiant@monsite.com'}]
    json_data = json.dumps(users_bizzcardz)

    # Effectuer une requête POST vers l'API Bizzcardz pour importer les données
    headers = {
        "Accept": "application/json",
        "Authorization": "Api-Key jsk28faE.hbbdV02aVN0lBI+GB09urlBJIOM36LJ9",
        "Content-Type": "application/json"
    }
    response = requests.post("https://admin.bizzcardz.eu/fr/api/vcard/import/", data=json_data, headers=headers)

    if response.status_code == 200:
        return response.json()
    else:
        return "Error: " + str(response.status_code)

if __name__ == '__main__':
    app.run()

 

Dans ce code, nous utilisons le framework flask et l’API XML-RPC.
Vous devez veiller à installer les dépendances nécessaires, à savoir Flask et requests, avant d’exécuter ce code. Dans votre environnement Python, l’installaion de ces dépendances peut se faire en exécutant pip install flask requests.


const rp = require('request-promise');
const ripcord = require('./ripcord'); // Assurez-vous que le fichier ripcord.js est présent dans le même répertoire que votre fichier JavaScript

const url = 'https://monsite.odoo.com'; // URL de votre compte Odoo
const url_auth = url + '/xmlrpc/2/common'; // URL pour l'authentification
const url_exec = url + '/xmlrpc/2/object'; // URL pour exécuter un modèle, par exemple

const db = 'monsite'; // Base de données
const username = 'identifiant@monsite.com'; // L'email de connexion à votre compte Odoo
const password = '123c9f88f562e67b8524k9b6sxcf189020524m69'; // Une clé API remplaçant le mot de passe

// Authentification de l'utilisateur
const common = ripcord.client(url_auth);
let uid;
common.authenticate(db, username, password, [])
  .then(result => {
    uid = result;

    const models = ripcord.client(url_exec);

    // Création des utilisateurs ou d'un utilisateur
    const users_odoo = [{ 'name': 'Nom & Prénom', 'login': 'identifiant@monsite.com', 'password': '12345678' }];
    return models.execute_kw(db, uid, password, 'res.users', 'create', [users_odoo]);
  })
  .then(user_id => {
    // Encodage des données en JSON
    const users_bizzcardz = [{ 'first_name': 'Prénom', 'last_name': 'Nom', 'user_email': 'identifiant@monsite.com' }];
    const json = JSON.stringify(users_bizzcardz);

    const options = {
      method: 'POST',
      uri: 'https://admin.bizzcardz.eu/fr/api/vcard/import/',
      body: json,
      headers: {
        'Accept': 'application/json',
        'Authorization': 'Api-Key jsk28faE.hbbdV02aVN0lBI+GB09urlBJIOM36LJ9',
        'Content-Type': 'application/json'
      }
    };

    return rp(options);
  })
  .then(response => {
    console.log(response);
  })
  .catch(error => {
    console.error(error);
  });

Veuillez installer les dépendances nécessaires dans votre projet projet Node.js en exécutant cette commande :

npm install request-promise
BizzCardz Team
AboutBizzCardz Team