Soft1+CRM+Telephony

630 views
Skip to first unread message

Θεόδωρος Πατσιούρας

unread,
Mar 19, 2008, 2:53:37 AM3/19/08
to so...@googlegroups.com

Καλημέρα σε όλους


Εδω και λίγο καιρό ασχολούμαι με τη σύνδεση τριών πραγμάτων. Ενός open source CRM, ενός open source τηλεφωνικού κέντρου και φυσικά του Soft1. Το CRM και το τηλεφωνικό κέντρο έχουν ήδη συνδεθεί και όταν έρχεται κλήση, εφόσον υπάρχει καταχώρηση στο CRM εμφανίζει τα στοιχεία του καλούντος. Επίσης μπορείς να καλέσεις μέσα από το CRM μια επαφή εφόσον υπάρχει τηλεφωνικός αριθμός στην καρτέλα.

Τα στοιχεία των πελατών που υπάρχουν στο Soft1 τα μεταφέρω στο CRM προς το παρόν χειροκίνητα. Επειδή θέλω να αυτοματοποιήσω τη διαδικασία (π.χ όταν ανοίγεις ένα πελάτη στο Soft1 αυτόματα να μεταφέρεται και στο CRM ή/και το αντίστροφο) θέλω να ρωτήσω:


1. Εχει ασχοληθεί κανείς με παρόμοια διαδικασία μεταφοράς στοιχείων από/σε ετερογενή περιβάλλοντα βάσεων δεδομένων; (π.χ real time ODBC read/write MSSQL/MySQL)

2. Υπάρχει περίπτωση (αν έχει σκεφτεί κανείς κάποιο τρόπο) να "διαβάσω" τον εισερχόμενο αριθμό από το τηλ κέντρο και να τον "εμφανίσω" στο Soft1?

Κάθε ιδέα ή πληροφορία δεκτή.

Θεόδωρος Πατσιούρας
AppSoft O.E


Αθανασιάδης Γιώργος

unread,
Mar 19, 2008, 4:15:34 AM3/19/08
to Softone Developers Network
Η περίπτωση 1 μπορεί να υλοποιηθεί μέσω εξωτερικής εφαρμογής ή οποία
κατά
τακτά χρονικά διατήματα να "διαβάζει" τα δεδομένα απο τα 2 ετερογενή
περιβάλλοντα και να
τα "συγχρονίζει" . Ενα καλό περιβάλλον για τέτοια εργασία είναι το
Delphi γιατί πολύ
εύκολα μπορεί να "δεί" ετερογενή περιβάλλοντα.
Καλό ειναι επίσης η εφαρμογή να τρέχει σαν service .

Αθανασιάδης Γιώργος

Γιάννης Μικρογιαννάκης

unread,
Mar 19, 2008, 7:47:09 AM3/19/08
to so...@googlegroups.com, tpats...@gmail.com

Σύμφωνα με την draft σελίδα των solutions ενδιαφέρον για το θέμα έχει εκδηλώσει ο συνεργάτης μας Terracom πληροφορική πέραν βεβαίως όσων σε επιχειρηματικό επίπεδο κάνει η CPI

 

 

 

Γιάννης Μικρογιαννάκης

JacarandaBill

unread,
Mar 19, 2008, 9:33:29 AM3/19/08
to Softone Developers Network
Θόδωρε,

Σε ποιο CRM και τηλεφωνικό κέντρο αναφέρεσαι;

Σαμαλτάνος Βασίλης
http://www.databank.gr/

mki

unread,
Mar 19, 2008, 11:45:17 AM3/19/08
to Softone Developers Network
Θόδωρε,
Από τη στιγμή που τα data καταχωρούνται σε βάση, μπορείς να
χρησιμοποιήσεις import script.
Σου παραθέτω ένα script που διαβάζει τα δεδομένα από μια βάση
Mysql(τηλεφωνικό κέντρο) και εισάγει στο S1 ενέργειες.
Επίσης ενημερώνει τη βάση του τηλεφωνικού κέντρου αν η εισαγωγή της
ενέργειας είναι επιτυχημένη ή όχι.

Το script είναι το εξής:

//----------------------------------------------------------------------------------------------------------------------
// help <form script>
// TableName = OriginalTableName; DomainFieldName {SoDtype or
CustType}; DomainFieldValue {12,51}; LocateStr; Caption; FieldType
{0,1,2,3=Sql, Report, Function}; 1 to 1 relation
// panelname = PanelType; Caption; Level; Info;
// filename = DataType; DisplaySize; Require; Visible; ReadOnly;
Caption; Editor; TblEditor; Forced; Default
// datatype = 1=ftString, 2=ftSmallint, 3=ftInteger, 4=ftWord,
6=ftFloat, 11=ftDateTime, 16=ftMemo

form {
[TABLES]
ImpTable=;;;;Master;3;0

[ImpTable]
vImpOk=2;15;1;1;0;Επιβεβαίωση εκτέλεσης;$Y;;;1
vTrndate=11;25;1;1;0;Hμερ/νία
Παραστατικού;;;:X.SYS.LOGINDATE;:X.SYS.LOGINDATE
vSeries=2;15;1;1;0;Σειρά;SERIES(W[SOSOURCE=2021]);;;
vImpMess=16;64000;0;1;1;Μηνύματα μεταφοράς...;;;;

[PANELS]
PANEL11=0;;0;50,G10,N
PANEL12=0;;0;50,G10,N
PANEL13=4;Μηνύματα μεταφοράς...;0;100,G10,N,L3

[PANEL11]
ImpTable.vImpOk

[PANEL12]
ImpTable.vTrndate
ImpTable.vSeries

[PANEL13]
ImpTable.vImpMess

}
var
vDD, vMM, vYY, vd;
Import ImpSoAction(SoAction) into 'SOACTION,IMPORT:1' {
SoAction SoAction {

vd = DateOfDateTime(SoAction.TRNDATE);
SERIES = :ImpTable.vSeries;
TRNDATE = vd;
BRANCH = :X.SYS.BRANCH;
FROMDATE = SoAction.TRNDATE;
FINALDATE = SoAction.TRNDATE;
}
}

connect DBDriver DocData {
connect( 'XADODrv.bpl', 'CUSTOM', 'Provider=MSDASQL.1;Persist
Security Info=False;Data Source=cpi' );

SoAction = select calldate as trndate
,duration as duration
,uniqueid as uniqueid
,impfld as impfld
from cdr_bak
where impfld=0;

}

Connect Xplorer XplorerData {
connect();
}
var
x, y, vCnt, vTot, vRow, vRowCancel, UserResp, vMess, vMessMemo,
vFinDoc;
{
if (:ImpTable.vImpOk=1) {
vTot=0;
vRow=0;
vRowCancel=0;
vMess='';
vMessMemo='';
fetch SoAction vTot = vTot + 1;
if (vTot=0)
{
UserResp=SendResponse( vTot, 0, 0, 'Μεταφορά
παραστατικών......',
'RESULTS.TOTREC;RESULTS.CURREC;RESULTS.CANREC;RESULTS.LABELTEXT' );
vMessMemo=vMessMemo+'Δεν υπάρχουν εγγραφές προς
μεταφορά.....'+#10+#10;
UserResp=SendResponse(vMessMemo,'ImpTable.vImpMess');
}
else
{
UserResp=SendResponse( vTot, 0, 0, 'Μεταφορά
παραστατικών......',
'RESULTS.TOTREC;RESULTS.CURREC;RESULTS.CANREC;RESULTS.LABELTEXT' );
vMessMemo=vMessMemo+'Έναρξη Εργασίας.....'+#10+#10;
UserResp=SendResponse(vMessMemo,'ImpTable.vImpMess');
}

x=StartTrans('XplorerData');

fetch SoAction {
ImpSoAction(SoAction);
if (ImportError=0)
{
vRow=vRow+1;
vFindoc=ResultNum;
y=ExecSql('DocData','update cdr_bak set impfld=1 where
uniqueid='+VarToStr(SoAction.uniqueid)+' and impfld=0',null);
x=GetQueryResults('XplorerData','select soactioncode
from SOACTION where SOACTION=:1',VarArray(vFindoc,1));
vMessMemo=vMessMemo+'Έγινε εισαγωγή της ενέργειας:
'+VarToStr(x)+#10;
UserResp=SendResponse(vMessMemo,'ImpTable.vImpMess');
x = Commit('XplorerData');
}
else
{
vRowCancel=vRowCancel+1;
vMessMemo=vMessMemo+'Απέτυχε η εισαγωγή ενέργειας'+
#10;
UserResp=SendResponse(vMessMemo,'ImpTable.vImpMess');
x=Rollback('XplorerData');
}
UserResp=SendResponse(vRow, vRowCancel,
'RESULTS.CURREC;RESULTS.CANREC');
} // End fetch
vMessMemo=vMessMemo+'Τέλος Μεταφοράς...'+#10;
UserResp=SendResponse(vRow, vRowCancel, vMessMemo, 'Τέλος
μεταφοράς ............',
'RESULTS.CURREC;RESULTS.CANREC;ImpTable.vImpMess;RESULTS.LABELTEXT');
}
else
{
UserResp=SendResponse( 0,0,0,'Επιλέξτε επιβεβαίωση (Ναί)......',
'RESULTS.TOTREC;RESULTS.CURREC;RESULTS.CANREC;RESULTS.LABELTEXT');
vMessMemo = vMessMemo + 'Απαιτείται επιβεβαίωση εργασίας για την
εισαγωγή των ενεργειών.'+#10+#10;
UserResp=SendResponse(vMessMemo,'ImpTable.vImpMess');
}
} // End Script

Θεόδωρος Πατσιούρας

unread,
Mar 20, 2008, 11:57:08 AM3/20/08
to so...@googlegroups.com
Καλησπέρα Γιώργο

Σ'ευχαριστώ πολύ γιατην απάντηση. Κάπως έτσι το σκέφτηκα κι εγώ και το έκανα με μια εφαρμογή σε java. Προς το παρόν δουλεύει χειροκίνητα. Στόχος είναι να γίνει ένα service (αν είναι από τη μεριά των windows) ή daemon (αν είναι από τη μεριά του τηλ κέντρου.
Συγγνώμη για την καθυστέρηση στην απάντηση αλλά είναι από τις "δύσκολες" εβδομάδες...
Φιλικά
Πατσιούρας Θεόδωρος

2008/3/19 Αθανασιάδης Γιώργος <cfo...@otenet.gr>:

Θεόδωρος Πατσιούρας

unread,
Mar 20, 2008, 12:07:54 PM3/20/08
to so...@googlegroups.com
Βασίλη καλησπέρα

Συγγνώμη για την καθυστέρηση... Αναφέρομαι στο Asterisk και συγκεκριμένα στην έκδοση 1.4.... Η οποιαδήποτε λύση μπορεί πάντως να υλοποιηθεί με οποιαδήποτε λύση PBX (όπως π.χ το 3CX). Θα μπορούσε επίσης να υλοποιηθεί και μέσω SIP server (π.χ OpenSER).

Φιλικά
Πατσιούρας Θεόδωρος

2008/3/19 JacarandaBill <jacara...@gmail.com>:

Θεόδωρος Πατσιούρας

unread,
Mar 20, 2008, 12:20:15 PM3/20/08
to so...@googlegroups.com
Κώστα καλησπέρα

Σ'ευχαριστώ πολύ για την απάντησή σου. Το δοκίμασα και δουλεύει θαυμάσια. Με το script αυτό βασιζόμαστε όμως σε κάποιες παραδοχές. Οτι ο χρήστης θα "θυμάται" να το "τρέξει". Ή θα έχει τα "δικαιώματα" να το "τρέξει". Ή....Ή.... (συμληρώνετε εσείς τις υπόλοιπες παραδοχές).
Θα μπορούσε ίσως η διαδικασία να αυτοματοποιηθεί σε επίπεδο π.χ βάσεων;
Επίσης μια άλλης μορφής αυτοματοποίηση θα ήταν η δημιουργία μιας εφαρμογής ή ενός δαίμονα για να κάνει αυτό που κάνει το script...
Καμιά ιδέα;

Φιλικά
Πατσιούρας Θεόδωρος


2008/3/19 mki <Kostas....@gmail.com>:

John Malakoudis

unread,
Mar 21, 2008, 3:45:29 AM3/21/08
to Softone Developers Network
Οσον αφορά τη σύνδεση κεντρου asterisk με popup σε Softone μας
ενδιαφέρει και εμάς.
Πρέπει όμως η Softone να μας δώσει κάποιο Event π.χ. afterlogin για να
ξεκινήσουμε το
δέμονα μας. Αυτό έχει να κάνει με Inprocess και αυτό είναι το καλύτερο
γιατί σε περίπτωση
που το κάνουμε με Outprocess τότε θα πρέπει να καταλαμβάνουμε χρήστη
για κάθε τερματικό
που θέλει να τρέχει αυτή τη διαδκασία.
Αυτή είναι η άποψή μου για το παραπάνω θέμα.
Οσον αφορά τον κώδικα που πρέπει να γραφεί την επικοινωνία με asterisk
ή τελικά για
οποιοδήποτε κεντρο (voip:sip h iax - iax2) μπορούμε να τον
δημοσιεύσουμε οταν έχουμε
κάποιο event για να τον ξεκινήσουμε, υπάρχουν αρκετά παραδείγματα και
στο Internet.

παραθέτω ενα link: http://www.voip-info.org/wiki/index.php?page=Asterisk+manager+Example%3A+C+Sharp

Εαν υπάρχει κάποια ιδέα πως να το ξεκινήσουμε χωρίς το παραπάνω event
δεκτή.

Giorgoylakis Giannis

unread,
Mar 21, 2008, 5:48:38 AM3/21/08
to so...@googlegroups.com
Ίσως το θέμα να μην είναι τόσο απλό, ας πούμε ότι η Softone αύριο
δίνει για το dotNET (που θα δώσει σε επόμενη έκδοση κάποιο System
object) , γιατί για τα COM DLLs υπάρχει ήδη το initialization, ένα
Event για να ξεκινήσει να ακούει κάποιο InProcess Dll.
Εντάξει με αυτό, αλλά τη ακριβός θα ακούει ;
Δεδομένου ότι υπάρχει μια εγκατάσταση (Asterisk + Softone) σε μια
επιχείρηση όπου κάποιοι από το προσωπικό έχουν συμβατικά τηλέφωνα και
κάποιοι χρησιμοποιούν την κάρτα δικτύου του υπολογιστή τους ως
τηλέφωνο, τη ακριβός θα παρακολουθεί το process;
Στην περίπτωση βέβαια της κάρτας δικτύου, παρακολουθείς την κάρτα,
αλλά στην περίπτωση του συμβατικού τηλεφώνου τη κάνεις ;
Αυτό κυρίως το θέτω για προβληματισμό, το ουσιαστικό όμως είναι ότι θα
δοθεί δυνατότητα μέσα από dotNET να κάνεις αυτό που θέλεις.


2008/3/21 John Malakoudis <jo...@protasys.gr>:

John Malakoudis

unread,
Mar 21, 2008, 8:40:43 AM3/21/08
to Softone Developers Network
Ουσιαστικά θέλω ενα event για ξεκινήσει η δικιά μας εφαρμογή.
Το τι θα παρακολουθεί η διαδικασία είναι, μεταξύ της εφαρμογής μας και
του Asterisk.
Οτι αφορά τον σταθμό που εργάζομαι μαζί με το εσωτερικο τηλ. 16 πχ.
έχω voip συσκευή ή Softfone και δουλεύω σε ενα τερματικό που κάνω
login στο softone και κάνω login απο την voip συσκευή μου ή απο το
Softfone μου στο asterisk. Αρα έχω τις εισερχόμενές μου και ολες τις
άλλες διαδικασίες
που θέλουμε να βάλουμε.

Στην περίπτωση που εχω συμβατικές συσκευές πάνω σε astrerisk αυτές
είναι πάλι voip οπότε
δεν εχω πρόβλημα.





On 21 Μαρ, 11:48, "Giorgoylakis Giannis" <john4...@gmail.com> wrote:
> Ίσως το θέμα να μην είναι τόσο απλό, ας πούμε ότι η Softone αύριο
> δίνει για το dotNET (που θα δώσει σε επόμενη έκδοση κάποιο System
> object) , γιατί για τα COM DLLs υπάρχει ήδη το initialization, ένα
> Event για να ξεκινήσει να ακούει κάποιο InProcess Dll.
> Εντάξει με αυτό, αλλά τη ακριβός θα ακούει ;
> Δεδομένου ότι υπάρχει μια εγκατάσταση (Asterisk + Softone) σε μια
> επιχείρηση όπου κάποιοι από το προσωπικό έχουν συμβατικά τηλέφωνα και
> κάποιοι χρησιμοποιούν την κάρτα δικτύου του υπολογιστή τους ως
> τηλέφωνο, τη ακριβός θα παρακολουθεί το process;
> Στην περίπτωση βέβαια της κάρτας δικτύου, παρακολουθείς την κάρτα,
> αλλά στην περίπτωση του συμβατικού τηλεφώνου τη κάνεις ;
> Αυτό κυρίως το θέτω για προβληματισμό, το ουσιαστικό όμως είναι ότι θα
> δοθεί δυνατότητα μέσα από dotNET να κάνεις αυτό που θέλεις.
>
> 2008/3/21 John Malakoudis <j...@protasys.gr>:
>
> > Οσον αφορά τη σύνδεση κεντρου asterisk με popup σε Softone μας
> > ενδιαφέρει και εμάς.
> > Πρέπει όμως η Softone να μας δώσει κάποιο Event π.χ. afterlogin για να
> > ξεκινήσουμε το
> > δέμονα μας. Αυτό έχει να κάνει με Inprocess και αυτό είναι το καλύτερο
> > γιατί σε περίπτωση
> > που το κάνουμε με Outprocess τότε θα πρέπει να καταλαμβάνουμε χρήστη
> > για κάθε τερματικό
> > που θέλει να τρέχει αυτή τη διαδκασία.
> > Αυτή είναι η άποψή μου για το παραπάνω θέμα.
> > Οσον αφορά τον κώδικα που πρέπει να γραφεί την επικοινωνία με asterisk
> > ή τελικά για
> > οποιοδήποτε κεντρο (voip:sip h iax - iax2) μπορούμε να τον
> > δημοσιεύσουμε οταν έχουμε
> > κάποιο event για να τον ξεκινήσουμε, υπάρχουν αρκετά παραδείγματα και
> > στο Internet.
>
> > παραθέτω ενα link: http://www.voip-info.org/wiki/index.php?page=Asterisk+manager+Example...

JohnG

unread,
Mar 21, 2008, 12:58:24 PM3/21/08
to Softone Developers Network

Κάντο με Delphi DLL στο initialization!
> > > δεκτή.- Απόκρυψη κειμένου σε παράθεση -
>
> - Εμφάνιση κειμένου σε παράθεση -
Reply all
Reply to author
Forward
0 new messages