Lo scenario che viene affrontato è quello di un NethService (con WebTop) e di un NethVoice 14 (con NethCTI) installati su macchine differenti.
In questo caso, per poter consentire l'accesso ai campi personalizzati dei contatti da parte delle schede clienti di NethVoice (da remoto) è necessario fare queste attività:
INDICE


sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /var/lib/pgsql/data/postgresql.conf
mkdir -p /etc/e-smith/templates-custom/var/lib/pgsql/data/pg_hba.conf/
cp -p /etc/e-smith/templates/var/lib/pgsql/data/pg_hba.conf/20auth /etc/e-smith/templates-custom/var/lib/pgsql/data/pg_hba.conf/20auth
Se ad esempio si desidera aggiungere tutta la rete 192.168.5.0/0:
vim /etc/e-smith/templates-custom/var/lib/pgsql/data/pg_hba.conf/20auth
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.5.0/0 md5 <==== RETE DA AGGIUNGERE
expand-template /var/lib/pgsql/data/pg_hba.conf systemctl restart postgresql
su - postgres -c 'psql webtop5'
CREATE ROLE "ro-webtop" WITH LOGIN PASSWORD 'XXXXXXXX' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity';
GRANT CONNECT ON DATABASE webtop5 TO "ro-webtop";
GRANT USAGE ON SCHEMA contacts TO "ro-webtop";
GRANT SELECT ON ALL TABLES IN SCHEMA contacts TO "ro-webtop";
GRANT SELECT ON ALL SEQUENCES IN SCHEMA contacts TO "ro-webtop";
GRANT USAGE ON SCHEMA core TO "ro-webtop";
GRANT SELECT ON core.custom_fields TO "ro-webtop";
\q (per uscire)
A questo punto si potrà procedere con la configurazione della scheda cliente sul NethVoice (remoto) creando la connessione al database e costruendo una query adatta a recuperare il valore dal campo personalizzato che vogliamo mostrare.
Ipotizziamo di voler mostrare sulla scheda del CTI se il cliente che ci sta chiamando ha un contratto di assistenza remota attivo.
Procediamo in questo modo:
(ad esempio)
1) ricerca del category_id della rubrica di proprietà dell'utente "pippo" da cui prelevare i dati:
su - postgres -c 'psql webtop5'
select name,category_id from contacts.categories where user_id='pippo';
name | category_id
---------------+-------------
Privata | 8
WebTop | 5 <== RUBRICA DA UTILIZZARE
(2 rows)2) recupero del custom_field_id relativo al campo personalizzato di cui vogliamo mostrare il
valore, riportato in basso a destra nella finestra del campo personalizzato.
Nel nostro caso utilizzeremo questo ID 2XcsCkTNLMIbRqJOsNunIZ relativo al campo "Assistenza_remota":

select CASE WHEN boolean_value='t' THEN 'ATTIVO' ELSE 'NON ATTIVO' END stato from contacts.contacts_custom_values where contact_id=(select contact_id from contacts.contacts where category_id='5' and revision_status!='D' and (work_mobile like '%$NUMBER' or work_telephone like '%$NUMBER')) and custom_field_id='2XcsCkTNLMIbRqJOsNunIZ';
Trattandosi di un campo di tipo "Casella di spunta" viene cercato boolean_value e come risultato verrà riportato 'ATTIVO' (campo selezionato) o 'NON ATTIVO' (campo non selezionato).
Basterà creare la scheda cliente su NethVoice ricopiando la query ricavata:
e questo sarà il risultato del test:

Esempi di query da utilizzare per le altre tipologie di campi
(sostituendo alle XXX l'ID del proprio campo custom e alle YY l'ID della rubrica da interrogare):
(esempio di query per recuperare il "Codice Cliente")
select number_value as "Codice Cliente" from contacts.contacts_custom_values where contact_id=(select contact_id from contacts.contacts where category_id='YY' and revision_status!='D' and (work_mobile like '$NUMBER' or work_telephone like '$NUMBER')) and custom_field_id='XXXXXXXXXXXXXXXXX';
(esempio di query per recuperare "Appunti da Fiera")
select text_value as "Appunti da Fiera" from contacts.contacts_custom_values where contact_id=(select contact_id from contacts.contacts where category_id='YY' and revision_status!='D' and (work_mobile like '$NUMBER' or work_telephone like '$NUMBER')) and custom_field_id='XXXXXXXXXXXXXXXXX';
string_value (per campi testo)
(esempio di query per recuperare "Appunti da Fiera")
select string_value as "Appunti da Fiera" from contacts.contacts_custom_values where contact_id=(select contact_id from contacts.contacts where category_id='YY' and revision_status!='D' and (work_mobile like '$NUMBER' or work_telephone like '$NUMBER')) and custom_field_id='XXXXXXXXXXXXXXXXX';
(esempio di query per recuperare la data di scadenza del contratto di assistenza)
select to_char(date_value,'DD-MM-YYYY') as "Scadenza contratto" from contacts.contacts_custom_values where contact_id=(select contact_id from contacts.contacts where category_id='YY' and revision_status!='D' and (work_mobile like '%$NUMBER' or work_telephone like '%$NUMBER')) and custom_field_id='XXXXXXXXXXXXXXXXX';
Attualmente per questo tipo di campo non è supportata la ricerca all'interno dei valori possibili.
(NON E' SUPPORTATA LA RICERCA ALL'INTERNO DI CAMPI JSON - SERVE POSTGRESQL => 9.3)