Logotipo Hedhog

Receba novidades do Hedhog no seu e-mail

Novos lançamentos, receitas e breaking changes — sem spam.

Submódulo sac

mailboxes

Endereços de e-mail monitorados por IMAP, que transformam mensagem recebida em chamado sem mexer no MX do domínio.

Caminho de origem: libraries/sac/src/inbound

Arquivo do módulo: inbound.module.ts

Introdução

Uma caixa liga um endereço existente a um canal do SAC por meio de um perfil de integração com o provider `imap`. O IMAP foi escolhido justamente porque não exige mudança de DNS: a caixa continua funcionando no Gmail, no Outlook ou no celular enquanto o sistema a lê.

Um cron enfileira um job de leitura por caixa cujo intervalo venceu; o índice único de job ativo em `(type, source_entity_id)` da fila serve também de trava de concorrência, então uma leitura lenta nunca ganha outra por cima lendo as mesmas mensagens. A leitura persiste a mensagem bruta e sobe os anexos; a interpretação roda em outro job — o que significa que um bug ali nunca perde uma mensagem que já pode ter saído do servidor.

O cursor de leitura é `last_seen_uid` mais `last_uid_validity`. Quando o servidor reatribui os UIDs, o `UIDVALIDITY` muda e o cursor reinicia, porque manter o antigo pularia em silêncio tudo que chegou desde então. Trocar a pasta zera o cursor pelo mesmo motivo: os UIDs do IMAP são por pasta.

A primeira leitura de uma caixa pega apenas as mensagens não lidas, então adotar uma caixa com histórico não abre mil chamados retroativos.

Endpoints HTTP

5 endpoints

Listagem paginada das caixas monitoradas, com canal e perfil.

Query
page, pageSize, search

Cadastra uma caixa.

Body

FieldTypeRequiredNotes
addressstring (email)yesAlso used to drop mail this system itself sent (loop guard)
channel_idintyes
integration_profile_idintyesMust be a profile with the `imap` provider; the other e-mail providers only send
folderstringnoDefaults to INBOX
poll_interval_secondsint (>= 30)no
strip_quoted_replybooleannoWithout it every reply brings the whole thread back
ignore_auto_submittedbooleanno

Abre uma conexão IMAP real e confirma que a pasta pode ser aberta — o que o teste do perfil, sempre em INBOX, não cobre.

Params
id (int)

Lê a caixa agora, sem esperar o intervalo do cron.

Params
id (int)

Para de ler uma caixa. Os chamados já abertos a partir dela permanecem.

Params
id (int)