Skip to main content

Bom dia, estou tentando realizar a conexão com atendimento humano via SDK. Quando uso o fluxo para abrir um ticket , como no código abaixo, vejo que o ticket não é aberto. … Estou tentando seguir a documentação … saberiam informar se falta algum processo?
 

// Put your identifier and access key here
let IDENTIFIER = 'identificador_do_meu_chatbot';
let ACCESS_KEY = 'chave_do_meu_chatbot';

// Create a client instance passing the identifier and accessKey of your chatbot
let client = new BlipSdk.ClientBuilder()
.withIdentifier(IDENTIFIER)
.withAccessKey(ACCESS_KEY)
.withTransportFactory(() => new WebSocketTransport())
.build();

// Connect with server asynchronously
// Connection will occurr via websocket on 8081 port.
client
.connect() // This method return a 'promise'.
.then(function (session) {
// QUANDO CHEGA AQUI, CONECTA NUMA BOA.
console.log('Application started. Press Ctrl + c to stop.');
})
.catch(function (err) {
/* Connection failed. */
console.log(`Connection failed: ${err}`);
});

client.addMessageReceiver(true, function (message) {
// Process received message
console.log(`Received message: ${message}`);
});

// CHAMO O MÉTODO ABAIXO EM OUTRA FUNÇAO .... MAS NO PAINEL
// DE ATENDIMENTO , NÃO VEJO O TICKET NOVO
client.sendCommand({
id: Lime.Guid(),
to: '[email protected]',
method: Lime.CommandMethod.SET,
uri: '/tickets/',
type: 'application/vnd.iris.ticket+json',
resource: {
customerIdentity: 'XPTO',
},
});

 

@paulo.dias tudo bem ? 

 

Tente ajustar o comando para esses valores : 

  "to": "[email protected]",
"method": "set",
"uri": "/tickets/{customerIdentity}",
"type": "text/plain",
"resource": "I need a human!"

@paulo.dias tudo bem ? 

Tente ajusta o comando para esses valores : 

  "to": "[email protected]",
"method": "set",
"uri": "/tickets/{customerIdentity}",
"type": "text/plain",
"resource": "I need a human!"

Opa Rafael, boa tarde, eu consegui ! Mas antes tive que criar o contato e só depois chamar a abertura de ticket com o id do contato. Ficou assim …. →

 

 await client.sendCommand({
id: 'MEU_IDENTIFICADOR',
to: '[email protected]',
method: Lime.CommandMethod.SET,
uri: '/contacts',
type: 'application/vnd.lime.contact+json',
resource: {
identity: 'MEU_IDENTIFICADOR',
extras: {
conversationId: 'OUTRO_IDENTIFICADOR',
},
source: 'chatbot',
},
});

client.sendCommand({
id: Lime.Guid(),
to: '[email protected]',
method: Lime.CommandMethod.SET,
uri: '/tickets/',
type: 'application/vnd.iris.ticket+json',
resource: {
customerIdentity: 'MEU_IDENTIFICADOR',
},
});

Porém agora o item está sendo visível na Fila, mas, o atendente online não consegue puxar …. sabe o que pode ser ?


Consegui puxar o ticket manualmente para atendimento, porém as mensagens que envio pelo atendimento não são interceptadas pelo chat…

Elas deveriam ser interceptadas por esse listener certo?

 client.addMessageReceiver(true, function (message) {
// Process received message
console.log(`Received message: ${message}`);
});

Curioso é que depois de iniciada a sessão, as mensagens do chatbot enviadas tanto com sendMessage e sendCommand não chegam pro atendimento … 

 var msg = {
type: 'text/plain',
content: 'Hello, world',
to: `MEU_CODIGO%[email protected]`,
};
var result3 = await blipClient.sendMessage(msg);

Via sendCommand 

    var result3 = await blipClient.sendCommand({
id: Lime.Guid(),
from: `[email protected]`,
to: `MEU_CODIGO%[email protected]`,
type: 'text/plain',
content: 'Hello, I would like to talk to an attendant',
});

Nenhum chega no chat do atendente com o ticket e o que o atendente envia também não estou interceptando … o que pode estar errado?


olá @paulo.dias tudo bem ? 

 

E que quando você gera um ticket o destino das mensagens muda normalmente é [email protected] pra blipchat e [email protected] para whatsapp e tem o tunnel quando você tem que fazer a comunicação via ticket ficaria tipo assim : 

{TICKET_ID}@desk.msging.net 

Opa Rafael, estou seguindo a documentação, e após receber a resposta que o ticket foi aberto com sucesso, inicio o atendimento e mando mensagem, porém o método

client.addMessageReceiver(true, function (message) {
// Process received message
console.log(`Received message: ${message}`);
});

Não dispara …

Para enviar mensagem pro atendimento estou usando 

    var msg = {
type: 'text/plain',
content: 'Hello, world',
from: `CUSTOMER_ID%40msging.net/instance`,
to: `CHATBOT_ID%[email protected]`,
};
blipClient.sendMessage(msg);

Exatamente como na documentação, porém nenhum dos dois se comunicam, nem chatbot nem atendimento.
Após receber o id do ticket, existe mais algum processo para vincular minha sessão ao ticket ?


@paulo.dias tem os steps de atendimento sim pq teoricamente move o contato para o desk para identificar que está em atendimento e identificador do ticket é por onde as mensagens devem passar valide de o contato que é criado corretamente e para acompanhar essas trocas de mensagem e por onde estão indo use um webhook https://help.blip.ai/hc/pt-br/articles/4474381206423-Enviando-dados-para-an%C3%A1lise-atrav%C3%A9s-de-Webhooks


@paulo.dias tem os steps de atendimento sim pq teoricamente move o contato para o desk para identificar que está em atendimento e identificador do ticket é por onde as mensagens devem passar valide de o contato que é criado corretamente e para acompanhar essas trocas de mensagem e por onde estão indo use um webhook https://help.blip.ai/hc/pt-br/articles/4474381206423-Enviando-dados-para-an%C3%A1lise-atrav%C3%A9s-de-Webhooks

Opa, obrigado Rafael, mas vi na documentação que o webhook pode levar até duas horas pra disparar, como se trata de captura de atendimento humano acho que não vai ajudar.

Reparei no seguinte:

Se eu chamo atribuindo ao To, o meu próprio chatbot, como na forma abaixo, o listener intercepta

    var msg = {
id: Lime.Guid(),
type: 'text/plain',
content: 'Hello, world',
to: `[email protected]/default`,
};
client.sendMessage(msg);

Se eu adiciono no from  o meu próprio chatbot ([email protected]) o listener funciona, MAS se eu adiciono no from, qualquer outro endereço, por exemplo CUSTOMER_ID%40msging.net/instance, pra simular que veio uma mensagem do customer … ele não intercepta

Exemplo:

var msg = {
type: 'text/plain',
content: 'Hello, world',
from: `CUSTOMER_ID%40msging.net/instance`,
to: `[email protected]@`,
};
blipClient.sendMessage(msg);

Existe algum bloqueio ou limitação que faz com que o listener ouça apenas as mensagens que envia para sí mesmo ? Fazendo que ele não capture mensagens de outros emissores?


@paulo.dias a parte da doc sobre demora é só uma observação, mas se testar o webhook você vai ver dados em tempo real.

 

Não há nenhum bloqueio que faça com que o listener não receba essa informação.

Você chegou a dar uma olhada nessa doc : https://github.com/takenet/blip-sdk-js ?


Comente