Elastix Call Center Protocol

download Elastix Call Center Protocol

of 14

Transcript of Elastix Call Center Protocol

  • 7/25/2019 Elastix Call Center Protocol

    1/14

    Ejemplos de uso del protocolo ECCP(ELASTIX CALL CENTER PROTOCOL)

    Elaborado por:Departamento de Desarrollo ElastixVersin:1.0 alpha

  • 7/25/2019 Elastix Call Center Protocol

    2/14

    VERSIONAMIENTO

    Versin Versin deElastix

    Fecha Editado por Aprobado Por Detalles

    1 2.0.4-beta2 13-Abr-2011 Ing. Eduardo Cueva Ing. Bruno Macias Documentacin Inicial

  • 7/25/2019 Elastix Call Center Protocol

    3/14

    Uso del protocolo de Callcenter ECCP

    El protocolo de Callcenter fue desarrollado para que aplicaciones cliente puedan comunicarsecon el servidor de CallCenter a travs de un puerto TCP para de este modo realizar peticiones,as como escuchar eventos asincrnicos a travs de dicho puerto.

    El presente documento describe ejemplos de implementacin del protocolo ECCP usandolenguaje PHP. El propsito de los ejemplos es meramente ilustrativo y no han sido pensadocomo aplicaciones optimizadas para produccin.

    Los ejemplos usados se encuentran disponibles a travs de Internet en la ruta:

    http://elx.ec/eccpexample

    El archivo comprimido contiene los siguientes programas en PHP:

    agentlogin.php hangup.php hold.php unhold.php libs/ECCP.class.php

    Para descomprimirlo solo ejecute:tar -xvjf eccp-test-scripts.tar.bz2

    El archivo ECCP.class.php es la librera base que contiene los mtodos que permitirnestablecer conexin con el servidor mientras que los dems archivos son ejemplos que usan

    dicha librera.

    PREPARACIN PARA LAS PRUEBAS

    Antes de comenzar se debe verificar que la versin del mdulo de call center de Elastix seasuperior o igual a 2.0.0-14 (verificar rpm -q elastix-callcenter). Esto es necesario debido a queversiones menores no implementan el protocolo ECCP.

    Si no se tiene dicha versin lo que se puede hacer es actualizar a la ltima ejecutando yum -yupdate elastix-callcenter.

    Una vez realizado lo anterior es necesario agregar un registro a la base de datos de callcenterque ser necesario que exista para realizar dichas pruebas. Dicho registro se har en la tablaeccp_authorized_clients y es necesario porque contendr las credenciales con la cual seautorizar la conexin.

    Los comandos a ejecutar son los siguientes asumiendo que el usuario y clave de acceso sonagentconsole aunque puede cambiar si se desea:

    [ user @exampl e ~] # mysql - uroot - pCLAVEMYSQL cal l _center

  • 7/25/2019 Elastix Call Center Protocol

    4/14

    mysql > i nser t i nt o eccp_aut hor i zed_cl i ent s( username, md5_password)val ues( "agent consol e" , md5( "agent consol e" ) ) ;mysql > exi t

    Luego de haber realizado lo anterior se puede proseguir con las pruebas:

    COMENZANDO LAS PRUEBAS

    Para tener una idea ms clara de cmo deben ser estructurados los mensajes XML delprotocolo ECCP se recomienda revisar la especificacin del mismo, la cual se encuentra en suservidor, en la siguiente ruta: /opt/elastix /dialer/Protocolo ECCP.txt

    Para las pruebas podemos usar los scripts mencionados anteriormente ya sea en el mismoservidor u otro que se encuentre en la misma red del servidor principal o externa.

    Antes de comenzar necesitamos crear el agente que utilizaremos para las pruebas delprotocolo. El agente de ejemplo usar la extensin 412 con la clave 1234. Debemos crearpreviamente dicha extensin desde la interfaz de Elastix.

    agentlogin.php

    Analizamos su contenido el cual es el siguiente:

  • 7/25/2019 Elastix Call Center Protocol

    5/14

    En la lnea 3 se requiere la librera ECCP.class.php la cual es la clase con las funciones quepermitirn comunicarse con el callcenter.

    De la lnea 5 a la 10 se tiene los datos bsicos como:

    $host => nombre de hosta conectarse $user y $pass => usuario y clave de conexin, los cuales fueron insertados en la base

    de datos al inicio $agent => nmero del agente. Formato Agent/____ $passAgent => Contrasea del agente $logAgent => nmero de extensin donde se va a conectar el agente.

    De la lnea 13 a 18: lo mnimo necesario para conectar al agente.

    De la lnea 21 a 31: en el caso de que sea exitosa la conexin.

    Lnea 33: accin de desconexin.

    De la lnea 34 a la 37: se maneja el caso de que hubiera un error.

    Probando desde una consola:

    Caso exitoso: Login Exitoso

    [ user @exampl e ~] $ php agent l ogi n. phpConnect . . .Si mpl eXMLEl ement Obj ect(

    [ st at us] => of f l i ne)Logi n agentSi mpl eXMLEl ement Obj ect(

    [ st atus] => l oggi ng)

    Si mpl eXMLEl ement Obj ect(

    [ agent l oggedi n] => Si mpl eXMLEl ement Obj ect(

    [ agent ] => Agent / 412[ queues] => Si mpl eXMLEl ement Obj ect

    ([ queue] => 9000

    ))

    )

  • 7/25/2019 Elastix Call Center Protocol

    6/14

    Caso no exitoso: credenciales de conexin incorrectas

    [ user @exampl e ~] $ php agent l ogi n. php

    Connect . . .ECCPBadRequest Except i on Obj ect(

    [ message: prot ect ed] => Unauthor i zed[ st r i ng: Except i on: pr i vat e] =>[ code: prot ect ed] => 401[ f i l e: pr ot ected] => / pat h_t o_f ol der / eccp- t est - scri pt s/ l i bs/ ECCP. cl ass. php[ l i ne: pr otect ed] => 118[ t r ace: Except i on: pr i vat e] => Ar r ay

    ([ 0] => Ar r ay

    ([ f i l e] => / pat h_t o_f ol der / eccp- t est - scri pt s/ l i bs/ ECCP. cl ass. php[ l i ne] => 287[ f unct i on] => send_r equest[ cl ass] => ECCP[ t ype] => - >[ args] => Ar r ay

    ([ 0] => Si mpl eXMLEl ement Obj ect

    ([ @at t r i but es] => Ar r ay

    ([ i d] => 2

    )[ get agent st at us] => Si mpl eXMLEl ement Obj ect

    (

    [ agent _number] => Agent / 412)

    ))

    )[ 1] => Ar r ay

    ([ f i l e] => / pat h_t o_f ol der / eccp- t est - scri pt s/ agent l ogi n. php[ l i ne] => 16[ f unct i on] => get agent st at us[ cl ass] => ECCP[ t ype] => - >[ args] => Ar r ay

    ()

    ))

    [ pr evi ous: Except i on: pr i vat e] =>)

  • 7/25/2019 Elastix Call Center Protocol

    7/14

    Caso no exitoso: servicio dialer est apagado

    [ user @exampl e ~] $ php agent l ogi n. php

    Connect . . .ECCPConnFai l edExcept i on Obj ect(

    [ message: protected] => t cp: / / I P_ELASTI X_SERVER: 20005: ( 111) Connect i on r ef used[ st r i ng: Except i on: pr i vat e] =>[ code: prot ect ed] => 111[ f i l e: pr ot ected] => / pat h_t o_f ol der / eccp- t est - scri pt s/ l i bs/ ECCP. cl ass. php[ l i ne: pr otect ed] => 86[ t r ace: Except i on: pr i vat e] => Ar r ay

    ([ 0] => Ar r ay

    ([ f i l e] => / pat h_t o_f ol der / eccp- t est - scri pt s/ agent l ogi n. php[ l i ne] => 13[ f unct i on] => connect[ cl ass] => ECCP[ t ype] => - >[ args] => Ar r ay

    ([ 0] => I P_ELASTI X_SERVER[ 1] => agent consol e[ 2] => agent consol e

    ))

    )[ pr evi ous: Except i on: pr i vat e] =>

    )

    Caso no exitoso: extensin no existe

    [ user @exampl e ~] $ php agent l ogi n. phpConnect . . .Si mpl eXMLEl ement Obj ect(

    [ st at us] => of f l i ne)Logi n agentSi mpl eXMLEl ement Obj ect(

    [ st atus] => l ogged- out

    [ f ai l ure] => Si mpl eXMLEl ement Obj ect(

    [ code] => 404[ message] => Speci f i ed ext ensi on not f ound

    ))Di sconnect . . .

  • 7/25/2019 Elastix Call Center Protocol

    8/14

    Caso no exitoso: agente no existe

    [ user @exampl e ~] $ php agent l ogi n. php

    Connect . . .Si mpl eXMLEl ement Obj ect(

    [ st at us] => of f l i ne[ f ai l ure] => Si mpl eXMLEl ement Obj ect

    ([ code] => 404[ message] => I nval i d agent number

    ))Logi n agentSi mpl eXMLEl ement Obj ect(

    [ st atus] => l ogged- out[ f ai l ure] => Si mpl eXMLEl ement Obj ect

    ([ code] => 404[ message] => Speci f i ed agent not f ound

    ))Di sconnect . . .

    Caso no exitoso: agente ya esta logueado

    [ user @exampl e ~] $ php agent l ogi n. phpConnect . . .Si mpl eXMLEl ement Obj ect(

    [ st atus] => onl i ne)Logi n agentSi mpl eXMLEl ement Obj ect(

    [ st atus] => l ogged- out[ f ai l ure] => Si mpl eXMLEl ement Obj ect

    (

    [ code] => 409[ message] => Speci f i ed agent al r eady connect ed t o ext ensi on: 412)

    )Di sconnect . . .

  • 7/25/2019 Elastix Call Center Protocol

    9/14

    hangup.php

    Analizamos su contenido el cual es el siguiente:

    En la lnea 3 se requiere la librera ECCP.class.php la cual es la clase con las funciones quepermitirn comunicarse con el callcenter.

    De la lnea 5 a la 10 se tiene los datos bsicos como: $host => nombre de host a conectarse $user y $pass => usuario y clave de conexin, los cuales fueron insertados en la base de

    datos al inicio $agent => nmero del agente. Formato Agent/____ $passAgent => Contrasea del agente $logAgent => nmero de extensin donde se va a conectar el agente.

    De la lnea 12 a 14: lo mnimo necesario para conectar al agente.

    Lnea 15: se pregunta el status del agente.

    Lnea 17: accin de hangup que libera a un agente.

    Lnea 20: es la accin de desconexin.

    De la lnea 34 a la 37: se maneja el caso de que hubiera un error.

    Probando desde una consola:

  • 7/25/2019 Elastix Call Center Protocol

    10/14

    Caso exitoso:

    [ user @exampl e ~] $ php hangup. php

    Connect . . .Si mpl eXMLEl ement Obj ect(

    [ st at us] => oncal l)Hangup. . .Si mpl eXMLEl ement Obj ect(

    [ success] => Si mpl eXMLEl ement Obj ect()

    )Di sconnect . . .

    Caso no exitoso: credenciales de conexin incorrectas mencionados anteriormente

    Caso no exitoso: extensin no existe mencionados anteriormente

    Caso no exitoso: agente no existe mencionados anteriormente

    hold.php

    Analizamos su contenido el cual es el siguiente:

  • 7/25/2019 Elastix Call Center Protocol

    11/14

    En la lnea 3 se requiere la librera ECCP.class.php la cual es la clase con las funciones quepermitirn comunicarse con el callcenter.

    De la lnea 5 a la 10 se tiene los datos bsicos como: $host => nombre de host a conectarse $user y $pass => usuario y clave de conexin, los cuales fueron insertados en la base de

    datos al inicio $agent => nmero del agente. Formato Agent/____ $passAgent => Contrasea del agente $logAgent => nmero de extensin donde se va a conectar el agente.

    De la lnea 12 a 14: lo mnimo necesario para conectar al agente.

    Lnea 15: se pregunta el status del agente.

    Lnea 17: accin de hold que coloca la llamada actual en espera.

    Lnea 20: accin de desconexin.

    Probando desde una consola:

    Caso exitoso: evento hold

    [ user @exampl e ~] $ php hol d. phpConnect . . .

    Si mpl eXMLEl ement Obj ect([ st at us] => oncal l

    )Hol d. . .Si mpl eXMLEl ement Obj ect(

    [ success] => Si mpl eXMLEl ement Obj ect()

    )Di sconnect . . .

    Caso no exitoso: agente en llamada

    [ user @exampl e ~] $ php hol d. phpConnect . . .Si mpl eXMLEl ement Obj ect(

    [ st at us] => oncal l)Hol d. . .Si mpl eXMLEl ement Obj ect(

    [ f ai l ure] => Si mpl eXMLEl ement Obj ect(

  • 7/25/2019 Elastix Call Center Protocol

    12/14

    [ code] => 404[ message] => Agent not f ound or not l ogged i n t hrough ECCP

    ))Di sconnect . . .

    Caso no exitoso: Parking esta deshabilitado(https://IP_ELASTIX_SERVER/?menu=pbxconfig&display=parking) y habilitar el parking call

    [ user @exampl e ~] $ php hol d. phpConnect . . .Si mpl eXMLEl ement Obj ect(

    [ st atus] => onl i ne)

    Hol d. . .Si mpl eXMLEl ement Obj ect(

    [ f ai l ure] => Si mpl eXMLEl ement Obj ect(

    [ code] => 500[ message] => Par ked cal l ext ensi on i s di sabl ed

    ))Di sconnect . . .

    Caso no exitoso: No hay ninguna llamada activa o se trata de ejecutar un hold ms de unavez

    [ user @exampl e ~] $ php hol d. phpConnect . . .Si mpl eXMLEl ement Obj ect(

    [ st atus] => onl i ne)Hol d. . .Si mpl eXMLEl ement Obj ect(

    [ f ai l ure] => Si mpl eXMLEl ement Obj ect(

    [ code] => 417

    [ message] => Agent cur r ent y not handl i ng a cal l))Di sconnect . . .

    Caso no exitoso: credenciales de conexin incorrectas mencionados anteriormente

    Caso no exitoso: extensin no existe mencionados anteriormente

    Caso no exitoso: agente no existe mencionados anteriormente

  • 7/25/2019 Elastix Call Center Protocol

    13/14

    unhold.php

    Analizamos su contenido el cual es el siguiente:

    En la lnea 3 se requiere la librera ECCP.class.php la cual es la clase con las funciones quepermitirn comunicarse con el callcenter.

    De la lnea 5 a la 10 se tiene los datos bsicos como: $host => nombre de host a conectarse $user y $pass => usuario y clave de conexin, los cuales fueron insertados en la base de

    datos al inicio $agent => nmero del agente. Formato Agent/____ $passAgent => Contrasea del agente $logAgent => nmero de extensin donde se va a conectar el agente.

    De la lnea 12 a 14: lo mnimo necesario para conectar al agente.

    Lnea 15: se pregunta el status del agente.

    Lnea 17: accin de unhold que retoma la llamada actual en espera.

    Lnea 20: accin de desconexin.

    Probando desde una consola:

  • 7/25/2019 Elastix Call Center Protocol

    14/14

    Caso exitoso: evento unhold

    [ user @exampl e ~] $ php unhol d. php

    Connect . . .Si mpl eXMLEl ement Obj ect(

    [ st at us] => paused)unhol d. . .Si mpl eXMLEl ement Obj ect(

    [ success] => Si mpl eXMLEl ement Obj ect()

    )Di sconnect . . .

    Caso no exitoso: Si se ejecuta la accin unhold por segunda vez

    [ user @exampl e ~] $ php unhol d. phpConnect . . .Si mpl eXMLEl ement Obj ect(

    [ st at us] => oncal l)unhol d. . .Si mpl eXMLEl ement Obj ect(

    [ f ai l ure] => Si mpl eXMLEl ement Obj ect

    ( [ code] => 417[ message] => Agent cur r ent y handl i ng a cal l

    ))Di sconnect . . .

    Caso no exitoso: credenciales de conexin incorrectas mencionados anteriormente

    Caso no exitoso: extensin no existe mencionados anteriormente

    Caso no exitoso: agente no existe mencionados anteriormente