Blip Chat Widget Falhando ao Criar Account?


Olá, Blippers,


Estou atualmente fazendo um teste com o Blip Chat e o SDK JS do Blip, tentando pegar as informações passadas no ‘withAccount’ no ato de contato entre o usuário e o Blip Chat.


O meu código do Widget está conforme o padrão:


window.onload = function () {
var builder = new BlipChat()
.withAppKey('<Chave de acesso>')
.withButton({
color: '#F00'
})
.withAuth({
authType: BlipChat.DEV_AUTH,
userIdentity: <CPF>,
userPassword: <PASSWORD>,
})
.withAccount({
fullName: 'John Doe',
email: '[email protected]',
phoneNumber: '+15055034455',
city: 'Decatur',
})
.withEventHandler(BlipChat.ENTER_EVENT, function () {
console.log('enter')
})
.withEventHandler(BlipChat.LEAVE_EVENT, function () {
console.log('leave')
})
.withEventHandler(BlipChat.LOAD_EVENT, function () {
console.log('chat loaded')
})
.withEventHandler(BlipChat.CREATE_ACCOUNT_EVENT, function () {
console.log('account created')
// NO ATO DA CRIAÇÃO DA CONTA, ESSA FUNÇÃO É CHAMADA
})
builder.build()

Ao abrir o chat, a função 'console.log(‘account created’) é chamada com sucesso.


Visto que ele foi criado, mando um “oi”. No outro lado, servidor Node.js, somente um identificador desse usuário vêm no corpo da mensagem, no ‘message.from’.


Com essa informação, testei com o cURL (para entender melhor antes de automatizar) a API de vocês. Tentando pegar as informações desse usuário recém cadastrado, visando cadastrá-lo em um banco de dados. Utilizei a seguinte instrução:


curl --request POST \
--header 'Content-Type:application/json' \
--header 'Authorization: Key <Cabeçalho de autenticação>' \
--data '{"id": "<ID>", "method": "get","uri": "/contacts/<CPF>.<Identificador>@0mn.io"}' \
https://msging.net/commands

E como resposta obtive o descrito abaixo. Gostaria de saber o que ela significa: o Usuário com não foi encontrado?


{"method":"get","status":"failure",
"reason":{"code":67,"description":"The requested resource was not found"}
"id":"<ID>","from":"[email protected]/#az-iris2","to":"<Identificador>@msging.net",
"metadata":{"#command.uri":"lime://<Identificador>@msging.net/contacts/<CPF>.<Identificador>@0mn.io"}
}

Observação: Simulei também o cadastro do usuário pelo cURL, enviando o comando abaixo. A criação ocorreu com êxito e, após, a mesma consulta acima também teve êxito e retornou os dados do resource do usuário.


curl --request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Key <Cabeçalho de autenticação>' \
--data '{"id": "<ID>", "method": "set","uri": "/contacts","type": "application/vnd.lime.contact+json",
resource": {"identity": "<CPF>[email protected]", "name": "John Doe 2"} }' \
https://msging.net/commands

Dúvida: quando, em outro exemplo utilizando o Builder, um usuário interagia com o chatbot, notei que automaticamente ele já se cadastrava e ficava disponível na aba de Usuários (dentro da Dashboard de administração). Até aqui tudo bem. Porém, utilizando o SDK, isso não está ocorrendo. Isso é o padrão mesmo?


Dúvida: utilizando o SDK ao invés do Builder, devo criar manualmente os usuários que interagem com a minha Widget do chatbot?


3 comentários

Olá, @dudu_lamas.


O que acontece é que o que foi criado com o codigo do Widget é uma conta (Account) no Blip Chat. Você conseguirá acessar as informações usando a extensão User Info.


Observe na documentação da mesma que, após consultar um usuário pela primeira vez, ele será adicionado à agenda de contatos do seu bot também. Somente quando o contato é criado que ele aparece na aba Usuários, e assim poderá ser recuperado usando a extensão de contatos.


No Builder esta consulta da account é feita automaticamente. No caso da SDK, é por conta do desenvolvedor.


Consegui esclarecer?


[]s

Não deu certo, @andreminelli.


Coloquei o seguinte CPF no Javascript da página HTML de teste para um suposto novo usuário:


.withAuth({
authType: BlipChat.DEV_AUTH,
userIdentity: 00100200349,
userPassword: <PASSWORD>,
})
.withAccount({
fullName: <name>, //Nome do Usuário <obrigatório>
email: <name> + "@example.com", //Email dele <não obrigatório>
phoneNumber: null, //Telefone do Usuário <não obrigatório>
city: null, //Cidade do Usuário <não obrigatório>
extras: {
userType: null, //Tipo do Usuário
cpf: null //CPF do Usuário
}
})

Sendo a primeira vez que o usuário se depara com o botão do Blip Chat, ao clicar, depois de alguns segundos aparece ‘account created’ no console do Navegador. Ok!


Consulto o servidor de vocês para verificar essa account, para depois criar um contato. Executei o seguinte comando:


_HEADERS = {'Content-Type': 'application/json', 'Authorization' : "Key <Chave do Bot>"}
_URL = 'https://msging.net/commands'

_DATA = {
'id' : str(unique_identify()),
'method' : 'GET',
'uri' : 'lime://0mn.io/accounts/00100200349',
'to' : '[email protected]' }

res = requests.post(_URL, data=dumps(_DATA), headers=_HEADERS)
print(res.json())

E o resultado foi:


{'id': '96af0118-bc2a-4fb6-a800-2ab3b8a798e7', 'metadata': {'#channel.preserveClaims': 'True', '#command.uri': 'lime://0mn.io/accounts/00100200349'}, 'reason': {'code': 67, 'description': 'The requested resource was not found'}, 'from': '[email protected]/#az-iris1', 'method': 'get', 'to': '<nome do bot>@msging.net', 'status': 'failure'}

Consegui!


O problema estava na URI. Atualizei ela para:


’lime://0mn.io/accounts/00100200349.@0mn.io


E deu certo!

Comente