O aplicativo do evolux phone vai disparar alguns eventos que podem ser capturados por uma aplicação no SalesForce.
Exemplo de uso:
addEventListener('message', event => { if (event.data.eventName === 'softphoneCallInvited') { console.log('softphoneCallInvited', event.data.payload); } });
Eventos:
softphoneCallInvited
Exemplo de payload:
Informações adicionais capturadas por URA Inteligentes (ex.: número de CPF) podem ser recuperadas no campo "extra".
{ "id": "8eb4d68e-722a-11eb-914b-d185dd1424c7", "uuid": "8dc216ba-722a-11eb-911a-d185dd1424c7", "originationLegUuid": "8dc216ba-722a-11eb-911a-d185dd1424c7", "direction": "inbound", "hangupCause": null, "startTime": "2021-02-18T20:47:47.476Z", "answerTime": null, "endTime": null, "from": { "name": "Suporte 601", "number": "601" }, "to": { "name": "700", "number": "60916f51-c6f5-a853-3651-a8a456064080" }, "agent": { "id": 1, "name": "João", "extension": 700, "login": "joao", "email": "" }, "extra": { "evolux_cc_member_session_uuid": "8dc216ba-722a-11eb-911a-d185dd1424c7", "evolux_cc_queue_number": "4000", "evolux_cc_queue_slug": "suporte" }, "queue": { "slug": "suporte", "number": "4000" } }
Exemplo com uma chamada de campanha:
{ "id": "7b684fba-722b-11eb-915c-d185dd1424c7", "uuid": "7b685078-722b-11eb-915d-d185dd1424c7", "originationLegUuid": "7b685078-722b-11eb-915d-d185dd1424c7", "direction": "inbound", "hangupCause": null, "startTime": "2021-02-18T20:54:30.244Z", "answerTime": "2021-02-18T20:54:35.218Z", "endTime": null, "from": { "name": "Campanha de Cobrança Anual", "number": "601" }, "to": { "name": "Campanha de Cobrança Anual", "number": "601" }, "agent": { "id": 1, "name": "João", "extension": 700, "login": "joao", "email": "" }, "extra": { "campaign_id": "1", "evolux_cc_agent": "joao", "subscriber_id": "1", "subscriber_number": "601", "subscriber_name": "Maria", "campaign_slug": "campanha_de_cobranca_anual", "dialer_subscriber_origination_uuid": "7b685078-722b-11eb-915d-d185dd1424c7", "subscriber_external_id": "000120" }, "campaign": { "id": "1", "slug": "campanha_de_cobranca_anual" }, "subscriber": { "number": "601", "name": "Maria", "externalId": "000120" } }
softphoneCallAccepted
Exemplo de payload:
{ "id": "8eb4d68e-722a-11eb-914b-d185dd1424c7", "uuid": "8dc216ba-722a-11eb-911a-d185dd1424c7", "originationLegUuid": "8dc216ba-722a-11eb-911a-d185dd1424c7", "direction": "inbound", "hangupCause": null, "startTime": "2021-02-18T20:47:47.476Z", "answerTime": "2021-02-18T20:47:56.105Z", "endTime": null, "from": { "name": "Suporte 601", "number": "601" }, "to": { "name": "700", "number": "60916f51-c6f5-a853-3651-a8a456064080" }, "agent": { "id": 1, "name": "João", "extension": 700, "login": "joao", "email": "" }, "extra": { "evolux_cc_member_session_uuid": "8dc216ba-722a-11eb-911a-d185dd1424c7", "evolux_cc_queue_number": "4000", "evolux_cc_queue_slug": "nordestao" }, "queue": { "slug": "suporte", "number": "4000" } }
softphoneCallEnded
Exemplo de payload:
{ "id": "8eb4d68e-722a-11eb-914b-d185dd1424c7", "uuid": "8dc216ba-722a-11eb-911a-d185dd1424c7", "originationLegUuid": "8dc216ba-722a-11eb-911a-d185dd1424c7", "direction": "inbound", "hangupCause": "NORMAL CLEARING", "startTime": "2021-02-18T20:47:47.476Z", "answerTime": "2021-02-18T20:47:56.105Z", "endTime": "2021-02-18T20:47:58.470Z", "from": { "name": "Suporte 601", "number": "601" }, "to": { "name": "700", "number": "60916f51-c6f5-a853-3651-a8a456064080" }, "agent": { "id": 1, "name": "João", "extension": 700, "login": "joao", "email": "" }, "extra": { "evolux_cc_member_session_uuid": "8dc216ba-722a-11eb-911a-d185dd1424c7", "evolux_cc_queue_number": "4000", "evolux_cc_queue_slug": "nordestao" }, "queue": { "slug": "suporte", "number": "4000" } }
agentStartPause
Exemplo de payload:
{ "agentId": 1, "agent": { "id": 1, "name": "João", "extension": 700, "login": "joao", "email": "" }, "pause": { "reason": "Lanche", "productive": false, "timeStart": "2021-02-18T20:51:54.866913+00:00", "timeEnd": null, "maxDuration": null } }
agentChangePause
Exemplo de payload:
{ "agentId": 1, "agent": { "id": 1, "name": "João", "extension": 700, "login": "joao", "email": "" }, "pause": { "reason": "Reunião", "productive": true, "timeStart": "2021-02-18T20:52:35.366557+00:00", "timeEnd": null, "maxDuration": null } }
agentStopPause
Exemplo de payload:
{ "agentId": 1, "agent": { "id": 1, "name": "João", "extension": 700, "login": "joao", "email": "" }, "pause": { "reason": "Lanche", "productive": false, "timeStart": "2021-02-18T20:51:54+00:00", "timeEnd": "2021-02-18T20:52:09+00:00", "maxDuration": null } }
agentLogin
Exemplo de payload:
{ "agentId": 1, "agent": { "id": 1, "name": "João", "extension": "700", "login": "joao", "email": null } }
Criando uma aplicação de exemplo
Nesta sessão vamos criar uma aplicação de exemplo usando a ferramente de linha de commando sfdx-cli.
Execute o comando abaixo para instalar a ferramenta sfdx-cli
https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_workspace_setup.htm
npm install -g sfdx-cli
Após instalar vamos criar uma app usando o comando
sfdx force:project:create -n NomeDaApp
Com a app criada vamos criar um aura componente para registrar o callbacks dos eventos que o EvoluxPhone dispara.
cd NomeDaApp/force-app/main/default/aurasfdx force:lightning:component:create -n NomeDoComponente
Após criar o componente que vai escutar os eventos disparados pelo EvoluxPhone é necessário registrar os eventos que desejamos na inicialização, para isso precisamos fazer algumas modifacações nos arquivos NomeDoComponente.cmp e NomeDoComponenteController.js.
Exemplo de configuração:
force-app/main/default/aura/NomeDoComponente/NomeDoComponente.cmp
<aura:component implements="lightning:backgroundUtilityItem"> <aura:handler name="init" value="{!this}" action="{!c.doInit}" /> </aura:component>
force-app/main/default/aura/NomeDoComponente/NomeDoComponenteController.js
({ doInit: function (component, event, helper) { const eventNames = [ "softphoneCallInvited", "softphoneCallAccepted", "softphoneCallEnded", "agentStartPause", "agentChangePause", "agentStopPause", "agentLogin" ]; const proxyToObject = (proxy) => { // TODO: configure the eslint to not raise an error with spread operator return JSON.parse(JSON.stringify(proxy)); }; addEventListener("message", (event) => { const { eventName, payload } = event.data; if (eventNames.indexOf(eventName) !== -1) { console.log( `[EVOLUX_PHONE_EVENT_LISTENER] eventName: ${eventName}`, proxyToObject(payload) ); // Execute alguma ações de acordo com a sua regra de negócio } }); } });
Após editar estes arquivos você pode fazer upload da app para a sua organização. O sfdx-cli fornece algumas formas de fazer isso, uma delas é:
sfdx force:soruce:deploy -p force-app -u <nome_do_usuário>
Com a aplicação instalada na organização o administrador do sistema pode habilita-lá em Setup > Apps > App Manager > Edit App (ex: Sales Lightning) > Utility Items.
Após a app ser adicionada na utility bar é necessário dar reload na página da App (ex: Sales) e ao fazer uma ligação será exibido um log que inicia com EVOLUX_PHONE_EVENT_LISTENER contendo o nome do evento e o seus dados.
Evolux Phone - Ambiente de Teste
Para acessar uma página onde é possível utilizar o EvoluxPhone e verificar quais eventos estão sendo disparados em tempo real, basta ir na url
https://[URL DO CLIENTE]/monitor/agent/evolux_phone_test e fazer o login normalmente: