Státusz: webre kitehető tudásbázis cikk
Rendszer: SOMACRM / CRM Webservice 8.3
Cél: külső rendszerek biztonságos kapcsolása a SOMACRM rendszerhez API-n keresztül.
A SOMACRM webservice segítségével külső rendszerek kapcsolhatók a CRM-hez. Tipikus felhasználási esetek:
Az API fejlesztőknek és integrátoroknak készült. Nyilvános frontend JavaScriptből közvetlenül nem javasolt hívni, mert az access key nem kerülhet ki a böngészőbe.
A webservice végpont minden SOMACRM rendszerben az adott CRM domain alatt érhető el:
https://sajat-crm-domain.hu/webservice.php
A kapcsolódáshoz szükséges adatok:
| Adat | Leírás |
|---|---|
| CRM URL | A SOMACRM rendszer alap URL-je vagy közvetlenül a webservice.php végpont. |
| Felhasználónév | A CRM-ben létrehozott API vagy integrációs felhasználó neve. |
| Hozzáférési kulcs | A felhasználó profil oldalának alján található access key. |
| Modulnév | Annak a CRM modulnak az API neve, amelyben dolgozni szeretnénk. Például Leads, Accounts, Contacts. |
A hozzáférési kulcs jelszóként kezelendő. Ne kerüljön GitHubra, WordPress oldal forrásába, böngészőbe vagy e-mailben továbbított nyílt kódba.
Éles kapcsolathoz javasolt külön integrációs felhasználót létrehozni. Ennek csak azokhoz a modulokhoz és mezőkhöz legyen joga, amelyekre az integrációnak ténylegesen szüksége van.
Javasolt szabályok:
A SOMACRM webservice kétlépcsős azonosítást használ.
GET /webservice.php?operation=getchallenge&username=FELHASZNALONEV
A válaszban érkezik egy token érték.
A belépéshez nem a nyers hozzáférési kulcsot kell beküldeni, hanem az alábbi MD5 hash-t:
$generatedKey = md5($token . $accessKey);
POST /webservice.php
operation=login
username=FELHASZNALONEV
accessKey=GENERALT_MD5_KULCS
Sikeres válasz esetén a rendszer visszaadja a sessionName értéket. A további API műveletekhez ezt kell használni.
A CRM rekordok webservice azonosítója nem csak a sima CRM ID. A formátum:
modulPrefixxCRMID
Példa:
13x746840
A modul prefix a modul leírásából kérdezhető le describe művelettel. A mellékelt PHP osztály ezt automatikusan kezeli a getCrmModuleIdPrefix() metódussal.
A modul mezőinek, kötelező mezőinek és prefixének ellenőrzésére használható:
GET /webservice.php?sessionName=SESSION_ID&operation=describe&elementType=Contacts
Ez különösen fontos új rekord létrehozása előtt, mert a kötelező mezők modulonként és testreszabásonként eltérhetnek.
A csomagban található javított PHP minta:
php-pelda/SomacrmWebserviceClient.php
php-pelda/pelda_hasznalat.php
A minta szerveroldali használatra készült. A belépési adatokat környezeti változókból is tudja olvasni:
export SOMACRM_URL="https://sajat-crm-domain.hu/"
export SOMACRM_USERNAME="api_felhasznalo"
export SOMACRM_ACCESS_KEY="felhasznalo_hozzaferesi_kulcsa"
<?php
require_once 'SomacrmWebserviceClient.php';
$client = new SomacrmWebserviceClient(
'https://sajat-crm-domain.hu/',
'api_felhasznalo',
'felhasznalo_hozzaferesi_kulcsa'
);
$record = $client->retrieve(12345, 'Contacts');
var_dump($record);
Ahol:
12345: a lekérendő adat CRM ID-ja;Contacts: a modul API neve, amelyből a lekérés történik.Ha már webservice ID áll rendelkezésre, például 12x12345, azt is meg lehet adni. A minta felismeri, és nem tesz elé új prefixet.
<?php
require_once 'SomacrmWebserviceClient.php';
$client = new SomacrmWebserviceClient(
'https://sajat-crm-domain.hu/',
'api_felhasznalo',
'felhasznalo_hozzaferesi_kulcsa'
);
$record = $client->create('Contacts', [
'lastname' => 'Teszt',
'firstname' => 'Kapcsolat',
'assigned_user_id' => '19x1'
]);
var_dump($record);
Megjegyzés: az assigned_user_id értékének olyan felhasználóra kell mutatnia, amelyhez a rekord hozzárendelhető. Sok rendszerben a felhasználói azonosító is webservice formátumú, például 19x1. Egyedi rendszereknél ezt előzetesen egyeztetni kell.
<?php
require_once 'SomacrmWebserviceClient.php';
$client = new SomacrmWebserviceClient(
'https://sajat-crm-domain.hu/',
'api_felhasznalo',
'felhasznalo_hozzaferesi_kulcsa'
);
$success = $client->updateFields(12345, 'Contacts', [
'lastname' => 'Módosított vezetéknév',
'firstname' => 'Módosított keresztnév'
]);
var_dump($success);
A módosítás előtt a minta osztály lekéri az aktuális rekordot, ráírja a megadott mezőket, majd teljes rekordként küldi vissza az update művelethez.
$result = $client->query("select * from Contacts where lastname='Teszt';");
Query használatakor minden külső bemenetet validálni és tisztítani kell. Ne építsünk ellenőrizetlen felhasználói adatból közvetlen query-t.
curl "https://sajat-crm-domain.hu/webservice.php?operation=getchallenge&username=api_felhasznalo"
curl -X POST "https://sajat-crm-domain.hu/webservice.php" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "operation=login" \
--data-urlencode "username=api_felhasznalo" \
--data-urlencode "accessKey=GENERALT_MD5_KULCS"
curl "https://sajat-crm-domain.hu/webservice.php?sessionName=SESSION_ID&operation=describe&elementType=Contacts"
curl "https://sajat-crm-domain.hu/webservice.php?sessionName=SESSION_ID&operation=retrieve&id=12x12345"
| Modulnév | SOMACRM jelentés |
|---|---|
Calendar |
Naptár, teendők, események |
Leads |
Vevőjelöltek |
Accounts |
Cégek |
Contacts |
Kapcsolatok |
Potentials |
Lehetőségek |
Products |
Termékek |
Documents |
Dokumentumok |
Emails |
E-mailek |
HelpDesk |
Ügyfélszolgálati kérések / hibajegyek |
Faq |
Tudásbázis / GYIK |
Vendors |
Beszállítók |
PriceBooks |
Árlisták |
Quotes |
Ajánlatok |
PurchaseOrder |
Beszerzési rendelések |
SalesOrder |
Megrendelések |
Invoice |
Számlák / díjbekérők, rendszerbeállítástól függően |
Campaigns |
Kampányok |
Events |
Események |
Users |
Felhasználók |
Groups |
Felhasználói csoportok |
Currency |
Pénznemek |
Egyedi SOMACRM moduloknál az API modulnevet külön egyeztetni kell, mert az eltérhet a képernyőn látható magyar megnevezéstől.
| Hiba | Lehetséges ok | Teendő |
|---|---|---|
| Sikertelen login | Rossz felhasználónév vagy access key | Ellenőrizze a CRM felhasználói profilban az access key-t. |
ACCESS_DENIED vagy jogosultsági hiba |
Az API felhasználónak nincs joga a modulhoz vagy mezőhöz | Jogosultság ellenőrzése a CRM-ben. |
INVALID_SESSIONID |
Lejárt vagy hibás session | Új login folyamat indítása. |
MANDATORY_FIELDS_MISSING |
Hiányzik egy kötelező mező | describe művelettel ellenőrizze a modul kötelező mezőit. |
| Nem jó rekord ID | Hiányzik a modul prefix | Használja a describe művelet idPrefix értékét. |
| SSL hiba | Hibás vagy lejárt tanúsítvány | Tanúsítvány javítása; ne kapcsolja ki élesben az SSL ellenőrzést. |
| Nem JSON válasz | Szerver oldali PHP hiba, HTML hibaoldal vagy jogosultsági probléma | Ellenőrizze a CRM logot és a HTTP státuszkódot. |
Integráció előtt javasolt tisztázni:
assigned_user_id)?A SOMACRM rendszerek egyedileg testreszabhatók, ezért az egyes modulok mezői, kötelező mezői és státuszai ügyfelenként eltérhetnek. Éles integráció előtt mindig ellenőrizni kell a konkrét rendszer modulstruktúráját és jogosultságait.