Recentemente, atualizamos nossa marca em nossas ofertas e mudamos os nomes de nossos planos de preços. Se você se inscreveu antes de 9 de agosto de 2021, clique em Planos anteriores para ver os planos aplicáveis.
Garantimos que essa alteração não afetará sua experiência com o produto e nenhuma ação é necessária de sua parte.


Webhook Payload

Cabeçalhos

X-Retry-Count - String

X-Freshchat-Payload-Version - String

Assinatura X-Freshchat - String


Eventos

  1. message_create
  2. talk_assignment
  3. conversação_resolução
  4. talk_reopen


actor_type - usuário, agente, sistema

Message_type - normal, privado


message_create


 {
"ator": {
"actor_type": "usuário",
"actor_id": "dbec0910-b4d6-4d81-8015-81f560a918de"
},
"action": "message_create",
"action_time": "2018-10-19T10: 16: 08.013Z",
"dados" : {
"mensagem" : {
"msg_parts": [{
"propriedades": {
"text": "MENSAGEM DO USUÁRIO - do carteiro"
},
"part_type": "texto"
}],
"app_id": "11de8840-6ce8-48ac-a418-7c2ae81a1b57",
"user_id": "dbec0910-b4d6-4d81-8015-81f560a918de",
"id": "ec0d0db6-55cc-46c7-aaa3-86ad1d9f8e39",
"channel_id": "5c4d5425-e0e4-47be-a77d-cf81b9d34803",
"talk_id": "11de8840-6ce8-48ac-a418-7c2ae81a1b57_dbec0910-b4d6-4d81-8015-81f560a918de_feedback",
"message_type": "normal",
"actor_type": "usuário",
"created_time": "2018-10-19T10: 16: 07.973Z"
}
}
}


talk_reopen


 {
"ator": {
"actor_type": "agente",
"actor_id": "41c85e6d-cf41-4275-904d-545849e6f22b"
}, <span class = "fr-marker" data-id = "0" data-type = "false" style = "display: none; line-height: 0;"> </span> <span class = "fr -marker "data-id =" 0 "data-type =" true "style =" display: none; line-height: 0; "> </span>
"ação": "conversação_reopen",
"action_time": "2018-10-22T15: 31: 41.858Z",
"dados" : {
"reabrir": {
"reopener": "agente",
"reopener_id": "41c85e6d-cf41-4275-904d-545849e6f22b",
"conversação" : {
"talk_id": "b6aa207e-b55a-4499-a6ab-f6393c44c68c_1154966d-9840-4b3d-b46e-6a3cf72af093_feedback",
"app_id": "b6aa207e-b55a-4499-a6ab-f6393c44c68c",
"status": "reabrir",
"assign_agent_id ":" 5cf047ca-e453-4d2e-9fba-46da60708e87 "
}
}
}


conversação_resolução


 {
"ator": {
"actor_type": "agente",
"actor_id": "41c85e6d-cf41-4275-904d-545849e6f22b"
},
"action": "chat_resolution",
"action_time": "2018-10-22T15: 32: 15.438Z",
"dados" : {
"resolver": {
"resolvedor": "agente",
"resolver_id": "41c85e6d-cf41-4275-904d-545849e6f22b",
"conversação" : {
"talk_id": "b6aa207e-b55a-4499-a6ab-f6393c44c68c_1154966d-9840-4b3d-b46e-6a3cf72af093_feedback",
"app_id": "b6aa207e-b55a-4499-a6ab-f6393c44c68c",
"status": "resolver"
}
}
}


talk_assignment


 {
"ator": {
"actor_type": "agente",
"actor_id": "41c85e6d-cf41-4275-904d-545849e6f22b"
},
"action": "chat_assignment",
"action_time": "2018-10-22T15: 33: 10.917Z",
"dados" : {
"atribuição" : {
"cedente": "agente",
"assignor_id": "41c85e6d-cf41-4275-904d-545849e6f22b",
"to_agent_id": "41b3e2f0-557a-4487-8e7f-bb9afdd23cf6",
"to_group_id": "68ec7949-d092-4c54-b1d1-1f598f138f45",
"from_agent_id": "dee4e84a-4aff-4521-8ab2-4e11f48aab4e",
"from_group_id": "42b3e2f0-557a-5487-8e3f-bw9awqrb23ef",
"conversação" : {
"talk_id": "b6aa207e-b55a-4499-a6ab-f6393c44c68c_1154966d-9840-4b3d-b46e-6a3cf72af093_feedback",
"app_id": "b6aa207e-b55a-4499-a6ab-f6393c44c68c",
"status": "atribuir",
"assign_agent_id ":" 41b3e2f0-557a-4487-8e7f-bb9afdd23cf6 "
}
}
}


Observação:

Tanto from_agent_id quanto to_agent_id serão preenchidos ou from_group_id e to_group_id serão preenchidos.


Mensagem normal do agente


 {
"ator": {
"actor_type": "agente",
"actor_id": "ae72b467-a0d2-43a6-a1c7-8cf33d68c7c4"
},
"action": "message_create",
"action_time": "2020-04-06T15: 59: 44.725Z",
"dados": {
"mensagem": {
"message_parts": [
{
"texto": {
"content": "Olá !!! Agente deste lado"
}
}
],
"app_id": "87f6d88a-3921-4515-8acf-18fe4d2b4149",
"actor_id": "ae72b467-a0d2-43a6-a1c7-8cf33d68c7c4",
"id": "35814612-97f6-43bb-9266-cf6cd7cf6a0e",
"channel_id": "c5456f9e-9131-43aa-b3ec-29535bc7691d",
"talk_id": "aecf3cc7-138a-4b40-9723-5bf4d1abb97b",
"message_type": "normal",
"actor_type": "agente",
"created_time": "2020-04-06T15: 59: 44.709Z",
"user_id": "5cac723a-13aa-473e-846b-9cdb7d2c41a5",
"message_source": "web"
}
}
}


Nota Privada do Agente


 {
"ator": {
"actor_type": "agente",
"actor_id": "999abdc6-e4b1-4944-a246-86f63109df7e"
},
"action": "message_create",
"action_time": "2020-04-07T13: 26: 27.646Z",
"dados": {
"mensagem": {
"message_parts": [
{
"texto": {
"content": "Este cliente também está entrando em contato por e-mail, acompanhamento nas duas pontas."
}
}
],
"app_id": "c2bf4b15-38c5-49d1-b0d5-a2b86caac2b7",
"actor_id": "999abdc6-e4b1-4944-a246-86f63109df7e",
"id": "2c22af23-41bb-431d-a906-efe33a7294c6",
"channel_id": "8dfdec10-1c12-48d6-9889-40fba30daefa",
"talk_id": "40c15ddf-74e0-41e5-870e-69187d085778",
"message_type": "privado",
"actor_type": "agente",
"created_time": "2020-04-07T13: 26: 27.625Z",
"user_id": "a6ef2b6b-3fda-497e-bf3e-560b6f9612cd",
"message_source": "web"
}
}
}


Mensagem do usuário


 {
"ator": {
"actor_type": "usuário",
"actor_id": "5cac723a-13aa-473e-846b-9cdb7d2c41a5"
},
"action": "message_create",
"action_time": "2020-04-06T15: 59: 29.981Z",
"dados": {
"mensagem": {
"message_parts": [
{
"texto": {
"content": "Usuário aqui, eu vou"
}
}
],
"app_id": "87f6d88a-3921-4515-8acf-18fe4d2b4149",
"actor_id": "5cac723a-13aa-473e-846b-9cdb7d2c41a5",
"id": "ae46748d-daea-44ae-bd41-11eb4797853d",
"channel_id": "c5456f9e-9131-43aa-b3ec-29535bc7691d",
"talk_id": "aecf3cc7-138a-4b40-9723-5bf4d1abb97b",
"message_type": "normal",
"actor_type": "usuário",
"created_time": "2020-04-06T15: 59: 29.971Z",
"message_source": "web"
}
}
}


Mensagem do sistema (mensagem de horário comercial ausente)


 {
"ator": {
"actor_type": "agente",
"actor_id": "999abdc6-e4b1-4944-a246-86f63109df7e"
},
"action": "message_create",
"action_time": "2020-04-07T13: 23: 05.351Z",
"dados": {
"mensagem": {
"message_parts": [
{
"texto": {
"content": "Estamos longe agora"
}
}
],
"app_id": "c2bf4b15-38c5-49d1-b0d5-a2b86caac2b7",
"actor_id": "999abdc6-e4b1-4944-a246-86f63109df7e",
"id": "5ea7ea3d-5bb3-4f78-8e11-15cad506b213",
"channel_id": "8dfdec10-1c12-48d6-9889-40fba30daefa",
"talk_id": "40c15ddf-74e0-41e5-870e-69187d085778",
"actor_type": "agente",
"created_time": "2020-04-07T13: 23: 05.328Z",
"user_id": "a6ef2b6b-3fda-497e-bf3e-560b6f9612cd",
"message_source": "sistema"
}
}
}


Atribuição de conversa ao agente


 {
"ator": {
"actor_type": "agente",
"actor_id": "999abdc6-e4b1-4944-a246-86f63109df7e"
},
"action": "chat_assignment",
"action_time": "2020-04-07T13: 35: 18.622Z",
"dados": {
"atribuição": {
"cedente": "agente",
"assignor_id": "999abdc6-e4b1-4944-a246-86f63109df7e",
"to_agent_id": "999abdc6-e4b1-4944-a246-86f63109df7e",
"to_group_id": "f8552a49-e96d-400f-bea0-add54b5ba6fc",
"from_agent_id": "",
"from_group_id": "f8552a49-e96d-400f-bea0-add54b5ba6fc",
"conversação": {
"talk_id": "40c15ddf-74e0-41e5-870e-69187d085778",
"app_id": "c2bf4b15-38c5-49d1-b0d5-a2b86caac2b7",
"status": "atribuído",
"channel_id": "8dfdec10-1c12-48d6-9889-40fba30daefa",
"assign_agent_id ":" 999abdc6-e4b1-4944-a246-86f63109df7e ",
"assign_group_id": "f8552a49-e96d-400f-bea0-add54b5ba6fc"
}
}
}
}


Atribuição de conversa ao grupo


 {
"ator": {
"actor_type": "agente",
"actor_id": "999abdc6-e4b1-4944-a246-86f63109df7e"
},
"action": "chat_assignment",
"action_time": "2020-04-07T13: 35: 16.800Z",
"dados": {
"atribuição": {
"cedente": "agente",
"assignor_id": "999abdc6-e4b1-4944-a246-86f63109df7e",
"to_agent_id": "",
"to_group_id": "f8552a49-e96d-400f-bea0-add54b5ba6fc",
"from_agent_id": "",
"from_group_id": "",
"conversação": {
"talk_id": "40c15ddf-74e0-41e5-870e-69187d085778",
"app_id": "c2bf4b15-38c5-49d1-b0d5-a2b86caac2b7",
"status": "novo",
"channel_id": "8dfdec10-1c12-48d6-9889-40fba30daefa",
"assign_group_id": "f8552a49-e96d-400f-bea0-add54b5ba6fc"
}
}
}
}


Agente resolve uma conversa


 {
"ator": {
"actor_type": "agente",
"actor_id": "ae72b467-a0d2-43a6-a1c7-8cf33d68c7c4"
},
"action": "chat_resolution",
"action_time": "2020-04-06T15: 59: 46.407Z",
"dados": {
"resolver": {
"resolvedor": "agente",
"resolver_id": "ae72b467-a0d2-43a6-a1c7-8cf33d68c7c4",
"conversação": {
"talk_id": "aecf3cc7-138a-4b40-9723-5bf4d1abb97b",
"app_id": "87f6d88a-3921-4515-8acf-18fe4d2b4149",
"status": "resolvido",
"channel_id": "c5456f9e-9131-43aa-b3ec-29535bc7691d"
}
}
}
}


Agente reabre uma conversa


 {
"ator": {
"actor_type": "agente",
"actor_id": "999abdc6-e4b1-4944-a246-86f63109df7e"
},
"ação": "conversação_reopen",
"action_time": "2020-04-07T13: 28: 49.194Z",
"dados": {
"reabrir": {
"reopener": "agente",
"reopener_id": "999abdc6-e4b1-4944-a246-86f63109df7e",
"conversação": {
"talk_id": "40c15ddf-74e0-41e5-870e-69187d085778",
"app_id": "c2bf4b15-38c5-49d1-b0d5-a2b86caac2b7",
"status": "reaberto",
"channel_id": "8dfdec10-1c12-48d6-9889-40fba30daefa"
}
}
}
}


O usuário reabre uma conversa


 {
"ator": {
"actor_type": "usuário",
"actor_id": "5cac723a-13aa-473e-846b-9cdb7d2c41a5"
},
"ação": "conversação_reopen",
"action_time": "2020-04-06T15: 59: 50.314Z",
"dados": {
"reabrir": {
"reopener": "usuário",
"reopener_id": "5cac723a-13aa-473e-846b-9cdb7d2c41a5",
"conversação": {
"talk_id": "aecf3cc7-138a-4b40-9723-5bf4d1abb97b",
"app_id": "87f6d88a-3921-4515-8acf-18fe4d2b4149",
"status": "reaberto",
"channel_id": "c5456f9e-9131-43aa-b3ec-29535bc7691d"
}
}
}
}



Autenticação

Todas as chamadas para o seu webhook terão o cabeçalho X-Freshchat-Signature . Usando a chave pública fornecida, você pode verificar a assinatura para autenticar as chamadas do webhook.


A seguir, é fornecido um exemplo de snippet de código para autenticar chamadas de webhook implementadas em Java:


 // em alguns idiomas você precisará cortar "--BEGIN PRIVATE KEY--" e "--END
CHAVE PRIVADA - "partes

public static PublicKey loadPublicKey (String publicKeyString) lança Exception {
byte [] data = Base64.getDecoder (). decode (publicKeyString);
Especificação X509EncodedKeySpec = novo X509EncodedKeySpec (dados);
Fato KeyFactory = KeyFactory.getInstance (RSA);
return fact.generatePublic (spec);
}

// passe a publicKey acima para este método, com assinatura e texto simples é carga útil do webhook
// para verificar se a carga útil e a assinatura correspondem

public static boolean verify (String plainText, String signature, PublicKey publicKey)
throws Exception {
Assinatura publicSignature = Signature.getInstance ("SHA256withRSA");
publicSignature.initVerify (publicKey);
publicSignature.update (plainText.getBytes (UTF_8));
byte [] assinaturaBytes = Base64.getDecoder (). decodificar (assinatura);
return publicSignature.verify (signatureBytes);


Abaixo está um exemplo de snippet de código para autenticar chamadas de webhook implementadas em Ruby:


 key_from_settings = <chave pública do bloco webhooks na página de configurações> 
@rsa = OpenSSL :: PKey :: RSA.new (key_from_settings)
assinatura = Base64.decode64 (@header ['HTTP_X_FRESHCHAT_SIGNATURE']) # do webhook
algoritmo = OpenSSL :: Digest :: SHA256.new
# a carga útil é a carga útil webhook json recebida.
payload_verification = @ rsa.verify (algoritmo, assinatura, @ payload.to_json.to_s)
expect (payload_verification) .to be (true)


Para obter uma descrição detalhada da lógica de assinatura e criptografia, consulte https://niels.nu/blog/2016/java-rsa.html .