advertisement

The Elastix Call Center Protocol Revealed

71 %
29 %
advertisement
Information about The Elastix Call Center Protocol Revealed
Technology

Published on February 25, 2014

Author: elastixorg

Source: slideshare.net

Description

Asterisk World, Thursday, January 30, 2014
ITEXPO EAST 2014
Miami USA
Speaker: Eduardo Sellanes
advertisement

Eduardo Sellanes January 28–31, 2014 | Miami Beach Convention Center

ECCP? Elastix Call Center Protocol Protocol developed by Elastix for the community

Goal? • Allow client applications to communicate easily with a Call Center Server. • Provide scalability and organization. • Send asynchronous events.

What do we need? Elastix • Download from www.elastix.org

Elastix…? • Elastix is an Open Source Software to establish Unified Communications It’s Free !!

Asterisk World Pavilion

What else do we need? CallCenter Addon • Installable from the Elastix Market Place • > v2.0.0-14 It’s Free also !!

Install with a click

ECCP Architecture CLIENT APPLICATIONs ECCP SERVER CLIENT APPLICATIONs CLIENT APPLICATIONs

ECCP Architecture ECCP SERVER dialerd Main service is called „dialerd‟

ECCP Architecture dialerd → /opt/elastix/dialer/dialerd • daemon doesn‟t execute as root user [root@localhost [root@localhost [root@localhost [root@localhost [root@localhost dialer]# dialer]# dialer]# dialer]# cd /opt/elastix/dialer/ dialer]# ./dialerd start SECURITY WARNING: Sorry, I STRONGLY OBJECT to run as root. This program requires only network access and therefore does not require root privileges. [root@localhost dialer]#

ECCP Architecture Start/Stop from Elastix Dashboard

ECCP Architecture ECCP SERVER 20005 dialerd Server is listening on port 20005 CLIENT APPLICATIONs

ECCP Architecture libs ECCP SERVER dialerd /opt/elastix/dialer/ php files

ECCP Architecture dialerd libs [root@localhost dialer]# [root@localhost dialer]# ls *.php AMIClientConn.class.php ECCPConn.class.php AMIEventProcess.class.php ECCPProcess.class.php AbstractProcess.class.php ECCPServer.class.php Agente.class.php HubProcess.class.php AppLogger.class.php HubServer.class.php CampaignProcess.class.php ListaAgentes.class.php Campania.class.php ListaLlamadas.class.php ConfigDB.class.php Llamada.class.php [root@localhost dialer]# [root@localhost dialer]# MultiplexConn.class.php MultiplexServer.class.php Predictivo.class.php TuberiaMensaje.class.php TuberiaProcess.class.php phpagi.php

ECCP Architecture CallCenter Database ECCP SERVER dialerd

ECCP Architecture Configuration file: → /opt/elastix/dialer/dialerd.conf [database] # Credenciales para base de datos call_center dbhost=localhost dbuser=asterisk dbpass=asterisk (Credentials for database "call_center”)

ECCP Architecture Asterisk - AMI ECCP SERVER dialerd

ECCP Architecture

ECCP Architecture Logs files ECCP SERVER dialerd

ECCP Architecture Logs file: → /opt/elastix/dialer/dialerd.log logrotate configure file → /etc/logrotate.d/elastixdialer dialerd.log.1 dialerd.log.2 .. dialerd.log.5

Protocol Simple – plain text Based on XML (elements and attributes) <event> <agentloggedin> <agent>Agent/9000</agent> <queues> <queue>8001</queue> <queue>8000</queue> </queues> </agentloggedin> </event>

Protocol Session oriented Listen to multiple clients at the same time • • • Client login (user/secret), Server create session Client logout, Server destroy session Timeout (5minutes), Server destroy session

Protocol Three kinds of information packets • Event • Request • Response Each one is a well formed XML document

Protocol Events • Generated asynchronously from the server-side <event> … </event>

Protocol Events <event> <agentloggedin> <agent>Agent/9000</agent> <queues> <queue>8001</queue> <queue>8000</queue> </queues> </agentloggedin> </event>

Protocol Requests Message sent from the client to the server <request id="identificador"> ... </request> id identify each request id = ‘timestamp LINUX‘ ‘dot’ ‘6 char random number’ id = 1292899827.123456

Protocol Responses Server response based on a client's previous requirement <response id="identificador" > ... </response> response id is the same as request id

Protocol Request - Responses request id=“x" CLIENT APPLICATION response id=“x" response id=“x" SERVER

Protocol Request - Responses <request id="1292899827.123456"> ... </request> <response id="1292899827.123456"> ... </response> <response id="1292899827.123456"> ... </response>

Protocol Request - Responses <request id="1292899827.123456"> <getagentstatus> <agent_number>Agent/9000</agent_number> </getagentstatus> </request > <response id="1292899827.123456"> <getagentstatus_response> <status>offline</status> </getagentstatus_response> </response>

Protocol Error Responses <response id="identificador"> <failure> <code>XXX</code> <message>Error message</message> </failure> </response> An error is a response with failure element

Protocol Error type Protocol Error: < response id="identificador"> < failure > <code>XXX</code> <message>Error messages</message> </ failure > </ response >

Protocol Error type Error at processing time: < response id="identificador"> < failure > <request_response> <code>XXX</code> <message>Error messages</message> </request_response > </ failure > </ response >

Protocol Error Samples <response id="1292899827.123456"> <failure> <code>401</code> <message>Unauthorized</message> </failure> </response> <response id="1292899827.123456"> <login_response> <failure> <code>401</code> <message>Invalid username or password </message> </failure> </login_response > </response>

Protocol Complete list of requests-response-events-error : → /opt/elastix/dialer/Protocolo ECCP.txt Source code It’s OPENSOURCE !! → /opt/elastix/dialer/dialerd → /opt/elastix/dialer/*.php (libs)

Create agent login/logout application

Application We need… ECCP user/secret - server connection Agent user/secret - queue login

Application ECCP user/secret

Application ECCP user/secret

Application AGENT user/secret

Application AGENT user/secret

Application Login request • Authenticate a client application • Establish a session

Application ECCP Login request : <request id="1292899827.123456"> <login> <username>userECCP</username> <password>secretECCP</password> </login> </request>

Application OK response : <response id="1292899827.123456"> <login_response> <success/> <app_cookie>35d290884ef77a78cc6c0006b7e1d576</app_cookie> </login_response> </response> Fail response : <response id="1292899827.123456"> <login_response> <failure> <code>401</code> <message>Invalid username or password</message> </failure> </login_response> </response>

Application AGENT Queue Login request : <request id="1292899827.123456"> <loginagent> <agent_number>Agent/9000</agent_number> <agent_hash>XXXXXXXXXXXXXXXXXXXXXXXXX</agent_hash> <extension>1064</extension> </loginagent> </request> <response id="1292899827.123456"> <loginagent_response> <status>logging</status> </loginagent_response> </response>

Application app_cookie - agent_hash login request CLIENT APPLICATION CLIENT APPLICATION response “app_cookie” loginagent request agent_hash SERVER SERVER

Application app_cookie - agent_hash <response id="1292899827.123456"> <login_response> <success/> <app_cookie>35d290884ef77a78cc6c0006b7e1d576</app_cookie> </login_response> </response> <request id="1292899827.123456"> <loginagent> <agent_number>Agent/9000</agent_number> <agent_hash>XXXXXXXXXXXXXXXXXXXXXXXXX</agent_hash> <extension>1064</extension> </loginagent> </request>

Application app_cookie - agent_hash s = app_cookie + "Agent/9000" + "AgentSecret“ agent_hash = MD5(s) + implies concatenate

Application AGENT Queue Logout request : <request id="1292899827.123456"> <logoutagent> <agent_number>Agent/9000</agent_number> <agent_hash>XXXXXXXXXXXXXXXXXXXXXXXXX</agent_hash> </logoutagent> </request> <response id="1292899827.123456"> < logoutagent_response> <status>logged-out</status> </logoutagent_response> </response>

Application ECCP Logout request : <request id="1292899827.123456"> <logout></logout> </request> <response id="1292899827.123456"> <logout_response> <success/> </logout_response> </response>

Do we have to parse XML every time?

The answer is …

NO, of course…

Elastix does it for us

ECCP.class /var/www/html/modules/agent_console/libs/ECCP.class.php It’s OPENSOURCE !! Take a look, read it, use it

How we use it? It‟s a class!!, #!/usr/bin/php <?php require_once("libs/ECCP.class.php"); $obj = new ECCP();

#!/usr/bin/php <?php require_once("libs/ECCP.class.php"); $obj = new ECCP(); $host = “Elastix_Server_IP"; $eccp_user = "ECCP_user"; $eccp_pass = "ECCP_pass"; $agent = "Agent/9000"; $agent_pass = "secret"; $agent_extension = "2120"; print "Connecting.....n"; //try $obj->connect($host, $eccp_user, $eccp_pass); obj->setAgentNumber($agent); obj->setAgentPass($eccp_pass); $ag_obj = $obj->loginagent($agent_extension); //check if login ok? Failure? print "Disconnecting...n"; $obj->disconnect(); //error ?>

Download a complete example from: http://elx.ec/eccpexample

What else?

Call Center PRO

Call Center PRO

Call Center PRO

Smart Assistant Worldwide release 19th of February, 2014

-

disconnect()

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

The Elastix Call Center Protocol Revealed - Technology

Asterisk World, Thursday, January 30, 2014 ITEXPO EAST 2014 Miami USA Speaker: Eduardo Sellanes
Read more

Agenda - TMCnet

Agenda. Asterisk 123. ... The Elastix Call Center Protocol Revealed. ... Well take a close look to the open protocol for call centers developed by Elastix.
Read more

Elastix call center_manual_eng - Engineering - documents

Share Elastix call center_manual_eng. ... The Elastix Call Center Protocol Revealed. Login or Join. Processing Login successful.
Read more

Asterisk World Delivers Latest Strategies for Creating ...

Asterisk World Delivers Latest Strategies for Creating Flexible Telephony ... Schmooze Com Inc., Elastix, ... The Elastix Call Center Protocol Revealed;
Read more

It Call Center | LinkedIn

ResNet / IT Call Center Manager at The Ohio State University ... The Elastix Call Center Protocol Revealed. 5,062 Views. View the next set of presentations.
Read more

Elastix - News

... DozVox Randall Jimenez, Jorge Ledezma, Jason Zeledón, Sebastian Davicco. | Elastix: Erick Guillén Elastix México, Centroamérica y Caribe, ...
Read more

0001728: interrupted, drop out of words ... - Elastix Bugs

0001728: interrupted, drop out of words ... working protocol SIP ... after parsing the call wireshark'om revealed that the packets from the IP ...
Read more

Elastix | LinkedIn

Current Elastix Certified Engineer #205799156 at Freelance Elastix Consultant Past Commvault Consultant at TSI Empresarial See less
Read more