Intégration OTRS et VtigerCRM

Publié le par | Développement

OTRS est le helpdesk que nous utilisons chez Gestion medsécure, il est libre, très personnalisable. Il permet notamment d’avoir plusieurs sources de données de contact et comme l’essentiel de nos contacts se retrouvent dans vtiger CRM, comme il existe peu d’information sur l’intégration entre les deux solutions, j’ai décidé de faire quelques billets sur l’intégration entre les deux produits.

Donc, voici le premier: Comment utiliser les informations contacts de vtiger dans OTRS (Cette solution fonctionne sans vue, par contre l’informations n’est pas complète, une vue doit être créer pour avoir l’ensemble des informations clients, mais ça fera l’objet d’un billet futur). Cette déclaration de CustomerUser doit se retrouver dans votre configuration OTRS et les variables DB_VTIGER, SERVEUR_VTIGER, VTIGER_USER_RO et VTIGER_PASSWD_RO doivent être adaptés en fonction de votre environnement.

    $Self->{CustomerUser} = {
        Name   => 'VTiger CRM',
        Module => 'Kernel::System::CustomerUser::DB',
        Params => {
            DSN => 'DBI:mysql:database=DB_VTIGER;host=SERVEUR_VTIGER',
            User => 'VTIGER_USER_RO',
            Password => 'VTIGER_PASSWD_RO',
            Table => 'vtiger_contactdetails',
            CaseSensitive => 0,
        },

        CustomerKey => 'email',

        CustomerID             => 'accountid',
        CustomerUserListFields => [ 'firstname', 'lastname', 'email' ],

        CustomerUserSearchFields           => [ 'firstname', 'lastname', 'email'],
        CustomerUserSearchPrefix           => '*',
        CustomerUserSearchSuffix           => '*',
        CustomerUserSearchListLimit        => 250,
        CustomerUserPostMasterSearchFields => ['email'],
        CustomerUserNameFields     => [ 'title', 'firstname', 'lastname' ],
        CustomerUserEmailUniqCheck => 1,

        CustomerUserExcludePrimaryCustomerID => 0,
        CustomerCompanySupport => 1,
        ReadOnly => 1,
        Map => [
        Map => [
            [ 'UserTitle',      'Title',      'title',      1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'firstname', 1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'lastname',  1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'email',      1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email', 'email',           1, 1, 'var', '$Env{"CGIHandle"}?Action=AgentTicketCompose&ResponseID=1&TicketID=$Data{"TicketID"}&ArticleID=$Data{"ArticleID"}', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'accountid', 0, 1, 'var', '', 0 ],
           [ 'UserCompanyID',  'CompanyID',  'accountid',  0, 1, 'var', '', 0 ],
            [ 'UserPhone',        'Phone',       'phone',        1, 0, 'var', '', 0 ],
            [ 'UserFax',          'Fax',         'fax',          1, 0, 'var', '', 0 ],
            [ 'UserMobile',       'Mobile',      'mobile',       1, 0, 'var', '', 0 ],
        ],
        },
    };

Maintenant les informations de vtiger devrait s’afficher dans les champs clients lors de la réception d’une nouvelle demande.

One response to “Intégration OTRS et VtigerCRM

  1. Merci pour ces infos!
    Pour ceux que ca interesse, voici le code pour mapper les entreprises.
    (Au passage, je chercher à pouvoir ajouter des contacts à partir d’otrs, mais il faut d’abord inserer dans la table entity pour récupérer l’id du contact à insérer. Est-ce que c’est faisable avec une vue ???? )

    $Self->{CustomerCompany} = {
    Params => {
    DSN => ‘DBI:mysql:database=xxxx;host=xxxx’,
    User => ‘xxxxx’,
    Password => ‘xxxxx’,
    Table => ‘vtiger_account’,
    ForeignDB => 1,
    },

    # company unique id
    ReadOnly => 1,
    CustomerCompanyKey => ‘accountid’,
    CustomerCompanyValid => ‘otrs_valid_id’,
    CustomerCompanyListFields => [ ‘accountid’, ‘accountname’ ],
    CustomerCompanySearchFields => [‘accountid’, ‘accountname’],
    CustomerCompanySearchPrefix =>  »,
    CustomerCompanySearchSuffix => ‘*’,
    CustomerCompanySearchListLimit => 250,
    Map => [

    # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
    [ ‘CustomerID’, ‘CustomerID’, ‘accountid’, 0, 1, ‘var’,  », 0 ],
    [ ‘CustomerCompanyName’, ‘Company’, ‘accountname’, 1, 1, ‘var’,  », 0 ],
    [ ‘CustomerCompanyURL’, ‘URL’, ‘website’, 1, 0, ‘var’, ‘$Data{« CustomerCompanyURL »}’, 0 ],

    [ ‘ValidID’, ‘Valid’, ‘otrs_valid_id’, 0, 1, ‘int’,  », 0 ],
    ],
    };

Comments are closed.