Referência do React Native
Pacote @atalia-ia/react-native-chat. As funções existem como exportação nomeada e no objeto padrão:
TypeScript
import Atalia, { identify, useAtaliaState, type AtaliaEvent } from '@atalia-ia/react-native-chat';
Por baixo, cada função chama o SDK nativo da plataforma: o comportamento é o descrito nas referências de Android e iOS.
Funções
Configuração
| Função | Descrição |
|---|---|
configure(channelToken: string, options?: AtaliaOptions): void | Inicia o SDK. Com o plugin do Expo (channelToken no app.json) o SDK já nasce configurado e esta chamada só troca as opções. |
Chat
| Função | Descrição |
|---|---|
open(): void | Abre o chat por cima do app. |
openConversation(conversationId: number): void | Abre direto numa conversa. Com o chat já aberto, só troca de conversa. |
close(): void | iOS: fecha o chat. No Android o visitante fecha pela própria tela. |
Identificação
| Função | Descrição |
|---|---|
identify(jwt: string): Promise<AtaliaContact> | Liga o visitante ao usuário logado. O JWT vem do seu backend. Em caso de erro, error.code traz o código da Atalia. |
logout(): Promise<void> | Encerra a sessão identificada; o aparelho volta a ser visitante anônimo. |
Não lidas e estado
| Função | Descrição |
|---|---|
getState(): Promise<AtaliaState> | Não lidas, identificação e se o chat está aberto. |
refreshUnread(): Promise<number> | Consulta as não lidas na Atalia. O SDK já consulta sozinho quando o app volta para a frente. |
Eventos
| Função | Descrição |
|---|---|
addListener(listener: (event: AtaliaEvent) => void): AtaliaSubscription | Recebe os eventos do chat. Chame remove() no objeto devolvido para parar. |
Notificações push
| Função | Descrição |
|---|---|
setPushToken(token: string): void | Token do Firebase Cloud Messaging. O SDK registra o aparelho na Atalia e o acompanha no login e no logout. |
setAPNsToken(token: string, environment: AtaliaPushEnvironment): void | iOS: token do APNs em hexadecimal, para o modo webhook. No Android não faz nada. |
clearPushToken(): void | Tira o aparelho da Atalia. |
isAtaliaNotification(notification: AtaliaNotificationInput): boolean | A notificação veio da Atalia? |
shouldShowNotification(notification: AtaliaNotificationInput): Promise<boolean> | Para o handler com o app aberto: false quando é da Atalia e o chat já está na tela. Outra origem devolve true. |
handleNotification(notification: AtaliaNotificationInput): Promise<boolean> | App aberto, com o Firebase: no Android mostra a notificação (menos com o chat na tela); no iOS só atualiza as não lidas. false quando não é da Atalia. |
handleNotificationTap(notification: AtaliaNotificationInput): boolean | Toque: abre o chat na conversa da notificação. false quando não é da Atalia. |
Botão flutuante
| Função | Descrição |
|---|---|
showLauncher(options?: AtaliaLauncherOptions): void | Mostra o botão por cima de todas as telas. Chamar de novo troca as opções. |
hideLauncher(): void | Tira o botão. |
Hooks
| Hook | Devolve |
|---|---|
useAtaliaState() | AtaliaState, atualizado sozinho com os eventos do chat. |
useAtaliaUnreadCount() | Só as não lidas, para um badge. |
useAtaliaEvent(listener) | Nada: ouve os eventos enquanto o componente estiver na tela. Passe uma função estável (useCallback), senão a inscrição é refeita a cada renderização. |
Tipos
AtaliaOptions
| Campo | Padrão | Descrição |
|---|---|---|
baseUrl?: string | https://chat.atalia.ai | Outra origem: homologação ou o domínio próprio do canal. |
customDomain?: boolean | false | true quando baseUrl é o domínio próprio vinculado ao canal. |
closeButton?: boolean | true | Mostra o botão "Fechar" no chat. |
presentationStyle?: 'pageSheet' | 'fullScreen' | 'pageSheet' | Como o chat abre: folha que sobe sobre o app (arrastar a alça fecha) ou tela cheia. Até a 0.3.0, o padrão era 'fullScreen' (e a opção valia só no iOS). |
debug?: boolean | false | Permite inspecionar o WebView. Nunca em produção. |
appBadge?: boolean | true | iOS: com o push ligado, o número no ícone do app acompanha as não lidas. false também tira o número do push da Atalia. |
AtaliaState
| Campo | Descrição |
|---|---|
unreadCount: number | Mensagens do atendente, da IA e do sistema ainda não lidas. |
isIdentified: boolean | A sessão pertence a um usuário identificado. |
isChatOpen: boolean | A tela do chat está aberta. |
AtaliaContact
| Campo | Descrição |
|---|---|
externalId: string | O id do usuário no seu sistema, o mesmo do JWT. |
contactId: number | O id do contato na Atalia. |
name: string | null | Nome do contato, quando o JWT traz. |
AtaliaEvent
Cada evento tem type e os campos abaixo.
type | Campos | Quando |
|---|---|---|
ready | nenhum | O chat terminou de carregar. |
opened / closed | nenhum | A tela do chat abriu ou fechou. |
identified | externalId, contactId | O visitante foi identificado. |
loggedOut | nenhum | A sessão identificada foi encerrada. |
conversationStarted / conversationClosed | conversationId | Uma conversa começou ou foi encerrada. |
messageReceived | conversationId, messageId | Chegou mensagem do atendente, da IA ou do sistema. Só os ids: o texto nunca sai do chat. |
unreadChanged | count | O total de não lidas mudou. |
error | code, command | Falha ao carregar o chat (INIT_FAILED) ou num comando (command = identify, open_conversation...). |
AtaliaLauncherOptions
| Campo | Padrão | Descrição |
|---|---|---|
side?: 'start' | 'end' | o lado do painel | Lado da tela. |
horizontalMargin?: number | 16 | Distância da lateral. |
bottomMargin?: number | 16 | Distância do fim da tela, além da área segura. Aumente para ficar acima de uma barra de abas. |
text?: string | o do painel | Título do botão aberto. |
subtitle?: string | o nome do atendimento | Linha de baixo do botão aberto. '' tira o subtítulo. |
color?: string | a do painel | Cor do círculo e da aba, #RRGGBB. |
collapse?: 'circle' | 'edge' | 'never' | 'circle' | Forma depois de recolher: só o círculo, aba na lateral ou sempre aberto. |
collapseAfter?: number | 5000 | Milissegundos aberto antes de recolher. |
draggable?: boolean | false | O usuário arrasta o botão para onde quiser; ao soltar, ele gruda na lateral mais próxima. |
dockable?: boolean | true | Puxar até a borda esconde o botão numa aba. |
preloadChat?: boolean | true | Carrega o chat escondido enquanto o botão está na tela: o toque abre o chat pronto. |
Outros
| Tipo | Descrição |
|---|---|
AtaliaPushEnvironment | 'production' ou 'sandbox' (builds instalados pelo Xcode). |
AtaliaNotificationInput | O data da notificação ou o objeto inteiro da biblioteca: RemoteMessage do Firebase, Notification ou NotificationResponse do expo-notifications. |
AtaliaSubscription | { remove(): void }, devolvido por addListener. |
Erros
As funções que devolvem Promise rejeitam com um erro que tem code, o mesmo código das plataformas nativas:
code | Quando |
|---|---|
NOT_CONFIGURED | O SDK ainda não foi configurado (nem pelo plugin, nem por configure). |
TIMEOUT | O chat aberto não respondeu a tempo a um comando. |
EXPIRED, INVALID_SIGNATURE, REPLAYED... | Recusa do identify pela Atalia: veja Identificar o usuário logado. |