Child pages
  • Notification Service

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Descrição

Este serviço tem o objetivo de notificar um sistema externo toda vez que algum Operador/Ramal atender uma ligação em uma Fila de Atendimento.

Caso de Uso

Imagine que você deseja fazer um popup de tela com os dados do Cliente para o Operador que atendeu a ligação. 

No momento do atendimento o serviço irá identificar o Operador e enviará uma requisição com os dados da chamada para uma URL.

Outro caso é quando um Cliente abandona a espera na Fila de Atendimento e você precisa saber disto para fazer alguma coisa, como ligar de volta para ele.

No exato momento que ele abandonar a espera, o Serviço de Notificação irá enviar para seu Webhook os dados da ligação.

Eventos de Notificação

Os eventos de notificação são:

  • Atendimento da Ligação por um Operador
  • Entrada de uma ligação em uma fila de espera
  • Abandono de uma ligação de uma Fila de Espera

Notificação

A notificação será enviada em método POST (default) , RestFul com um JSON no BODY da Request.

O conteúdo do corpo será este:

Code Block
themeRDark
languagejs
{
	"eventdate":"2016-10-25T14:04:36-02:00",
	"agent":"8019",
	"from":"4839548000",
	"fromname":"Ramal 8023",
	"holdtime":"4",
	"ringtime":"3",
	"destination":"8019",
	"method":"POST"
}

 

Onde:

FieldDescription
eventdateEvent Date and time
agentOperator/Agent that answer this call
fromCaller for this call.
fromnameWhen we know the name of the Caller, we use it, if not the from filed will be used.
holdtimeThe hold time that the Caller wait for answer.
ringtimeThe ring time in the Agent endpoint before he answered the call.
destinationThe endpoint where the call was answered by the Agent/Operator.
methodIs the notification method registered for this webhook.

 

No Header da request enviaremos:

accept: application/json
content-type: application/json

 

 

Habilitando a Notificação

Para habilitar a notificação de eventos basta acessar a Interface Administrativa do Q-Manager e na opção "Integrações" click no botão Adicionar Integração.

 

Escolha a Integração do Tipo Notificação e complete com os dados do seu Serviço.

Você pode alterar os campos que a API envia para o seu serviço, usando a seção "Mapeamento".

Campos adicionais também podem ser enviados, como um token ou qualquer outro parâmetro que seu serviço possa precisar, usando a seção "Campos".

Você pode usar valores dinâmicos da seção Campos, para isso use {}, como por exemplo {from} ou {agent}.

Você pode ainda combinar valores com textos, como por exemplo:

Code Block
themeMidnight
languagepowershell
Nome do Campo: text
Valor do Campo:
O Cliente {from} abandonou a fila {queue} as {eventdate}

 

Na seção Headers você pode customizar os cabeçalhos da request, enviando por exemplo um Header Authorization.

 

Exemplo de Server side code

PHP + Apache

Este código em php recebe as requisições do Notificador e registre em um arquivo de log chamado http.log. Você pode adaptar para sua regra de negócio.

Code Block
themeDJango
languagephp
<?php
$method = $_SERVER['REQUEST_METHOD'];
$client = $_SERVER['REMOTE_ADDR'];
$query = $_SERVER['QUERY_STRING'];
$json = file_get_contents('php://input');
$obj = json_decode($json);

// file_put_contents("http.log",$json . "\n", FILE_APPEND);
// your complete JSON Object is in $obj
// you can do everything accessing the element directly, like this $obj->from , $obj->destination , $obj->agent , and etc.

// saving in a log:
// file_put_contents("http.log","from: {$obj->from}" . "\n", FILE_APPEND);
// file_put_contents("http.log","destination: {$obj->destination}" . "\n", FILE_APPEND);
// file_put_contents("http.log","agent: {$obj->agent}" . "\n", FILE_APPEND);
// here an exemplo testing the complete object and saving it in a log file
/*
if(is_object($obj)){
        foreach($obj as $key => $value){
                if(is_object($value)){
                        foreach($value as $skey => $svalue){
                                file_put_contents("http.log","object -> object: {$key} -> {$skey} -> {$svalue}\n", FILE_APPEND);
                        }
                }elseif(is_array($value)){
                        foreach($value[0] as $skey => $svalue){
                                file_put_contents("http.log","object -> array: {$key} -> {$skey} -> {$svalue}\n", FILE_APPEND);
                        }
                }else{
                        file_put_contents("http.log","object array: {$key} -> {$value}\n", FILE_APPEND);
                }
        }
}
*/
// returning Ok in a JSON object
$return = json_encode(array("status" => "Ok"));
echo $return;