# Notification Service
# 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:
{
"eventdate":"2016-10-25T14:04:36-02:00",
"agent":"8019",
"from":"4839548000",
"fromname":"Ramal 8023",
"holdtime":"4",
"ringtime":"3",
"destination":"8019",
"method":"POST"
}
2
3
4
5
6
7
8
9
10
Onde:
Campo | Descrição |
---|---|
eventdate | Data e hora do evento |
agent | Operador/Agente que atendeu a chamada |
from | Originador da chamada. |
fromname | Quando sabemos o nome do chamador, o usamos, se não o arquivado será usado. |
holdtime | O tempo de espera que o chamador aguarda a resposta. |
ringtime | O tempo de toque antes de atender a chamada. |
destination | O endpoint que a chamada foi atendida. |
method | O tipo de método que enviado o webhook. |
No Header da request enviaremos:
accept: application/json
content-type: application/json
2
# 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" clique 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:
Nome do Campo: text
Valor do Campo:
O Cliente {from} abandonou a fila {queue} as {eventdate}
2
3
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.
<?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;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36