1MSG
ReferenceInbox API

Ver o webhook do Inbox da conta

GET
/api/v1/inbox/webhook

Uma URL HTTPS por conta. O dono define a URL aqui ou em Settings → Developer → API Settings; uma chave de usuário não pode. Quando algo muda no Inbox, a 1MSG envia um POST com InboxWebhookEnvelope para essa URL.

Este não é o webhook do canal. Mensagens recebidas e status de entrega continuam chegando na URL do canal.

Entrega

  • Content-Type: application/json
  • X-1msg-Event: o tipo do evento
  • X-1msg-Delivery: o id da entrega
  • X-1msg-Signature: sha256=<hex HMAC of the raw body>

Calcule o HMAC-SHA256 do corpo da requisição, exatamente como chegou, com o segredo de assinatura e compare com a assinatura. Se não bater, recuse a requisição.

A entrega não altera a resposta da API. Um POST que falhou fica registrado em lastDeliveryStatus e lastDeliveryError.

Eventos

EventoQuandoCampos de data
inbox.conversation.status_changedA conversa foi aberta ou fechada. status é OPEN ou CLOSED.conversationId, channelId, status, previousStatus, actorUserId
inbox.conversation.assignedUm responsável foi definido. assigneeUserId é o novo responsável.conversationId, channelId, assigneeUserId, previousAssigneeUserId, actorUserId
inbox.conversation.unassignedO responsável foi removido. assigneeUserId é null.conversationId, channelId, assigneeUserId, previousAssigneeUserId, actorUserId
inbox.conversation.blockedO contato foi bloqueado. As mensagens recebidas são recusadas.conversationId, channelId, actorUserId
inbox.conversation.unblockedO contato foi desbloqueado.conversationId, channelId, actorUserId
inbox.conversation.title_changedA conversa foi renomeada.conversationId, channelId, title, previousTitle, actorUserId
inbox.user.invitedO dono convidou um usuário. Ele só vira membro depois de aceitar.inviteId, email, channelIds, actorUserId
inbox.user.addedA pessoa convidada aceitou e agora é operadora.memberId, userId, email, channelIds
inbox.user.removedUm operador foi removido da conta.memberId, userId, actorUserId
inbox.user.channels_changedOs canais que um operador pode abrir foram substituídos.memberId, userId, channelIds, actorUserId
inbox.user.invite_revokedUm convite pendente foi cancelado antes de ser aceito.inviteId, email, actorUserId

Authorization

bearer
headerAuthorizationBearer <token>

Chave gerada em Settings → Developer → API key. Os métodos do Inbox precisam do escopo Inbox. Os métodos de Campaigns precisam do escopo Campaigns.

Response Body

application/json
  1. response
url?|

URL HTTPS que recebe as entregas por POST. null quando não há webhook salvo.

secretPrefix?|

Os primeiros 12 caracteres do segredo de assinatura. O segredo completo não é retornado aqui.

createdAt?|
Formatdate-time
updatedAt?|
Formatdate-time
lastDeliveryAt?|

Quando terminou a última tentativa de entrega.

Formatdate-time
lastDeliveryStatus?|

Status HTTP da última entrega. null quando a requisição não teve resposta.

lastDeliveryError?|

Erro resumido da última entrega que falhou.

events*array<>

Todos os eventos que este webhook pode enviar. Eventos de mensagem e de status de entrega continuam no webhook do canal.

envelope*

Exemplo do corpo JSON que a 1MSG envia por POST. data corresponde a events[].example para o type do corpo.

curl -X GET 'https://api.1msg.io/api/v1/inbox/webhook'
{  "url": "https://example.com/1msg/inbox",  "secretPrefix": "whsec_abc123",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "lastDeliveryAt": "2019-08-24T14:15:22Z",  "lastDeliveryStatus": 200,  "lastDeliveryError": "string",  "events": [    {      "type": "inbox.conversation.status_changed",      "description": "Conversation opened or closed. status is OPEN or CLOSED.",      "example": {        "conversationId": "d94a047f-5984-42af-9f89-0f26c7e70ef1",        "channelId": "QAF261225002",        "status": "CLOSED",        "previousStatus": "OPEN",        "actorUserId": "b2bb82f0-2253-4e05-b955-a21f3d699caa"      }    }  ],  "envelope": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "type": "inbox.conversation.status_changed",    "createdAt": "2019-08-24T14:15:22Z",    "data": {}  }}