Controle o Messenger Notiondesk com o SDK JavaScript.

Controle o Notiondesk Messenger a partir do seu aplicativo com o SDK JavaScript, incluindo lançadores personalizados, links diretos, eventos, configuração em tempo de execução, autenticação e integrações com React ou Vue.

9 min de leitura

O SDK JavaScript do Messenger permite que você integre o Messenger diretamente com a interface e o estado do seu aplicativo.

Você pode:

  • Abra e feche o Messenger a partir da sua própria interface de usuário.
  • Direcione os visitantes diretamente para Ajuda, Mensagens, Contato ou Registro de alterações.
  • Crie seu próprio iniciador do Messenger
  • Reaja aos eventos do Messenger
  • Sincronize o Messenger com o tema e o idioma do seu aplicativo.
  • Atualize os usuários autenticados sem recarregar a página.
  • Alterar posição e empilhamento em tempo de execução
  • Integre o Messenger com o estado de aplicativos React e Vue.
  • Remova e reinicialize o Messenger quando necessário.

Use o SDK para aplicativos que precisam de mais controle do que o trecho de instalação padrão do Messenger oferece.

Instale o SDK

Instale o pacote oficial:

Você também pode usar o Yarn:

Ou pnpm:

Inicializar o Messenger

Importe initNotiondesk() e forneça seu ID do Messenger:

initNotiondesk() é resolvido quando o Messenger está pronto para uso, portanto, o padrão mais seguro é aguardar a inicialização antes de chamar os métodos do SDK:

Notiondesk O Messenger precisa ser inicializado no navegador. Não o inicialize durante a renderização no servidor.

Para instalação do React e Next.js, consulte Como instalar o Notiondesk Messenger com React e Next.js.

Abrir, fechar e ativar/desativar o Messenger

Abra o Messenger

Usar show():

Por exemplo:

Fechar Messenger

Usar hide():

Alternar Messenger

Use toggle() para abrir o Messenger quando ele estiver fechado e fechá-lo quando estiver aberto:

toggle() é particularmente útil quando seu aplicativo fornece seu próprio botão do Messenger.

Abra uma seção específica do Messenger

Use showTab() para abrir o Messenger diretamente em um módulo específico:

As abas disponíveis são:

npm install @notiondesk-so/messenger-js-sdk
yarn add @notiondesk-so/messenger-js-sdk
pnpm add @notiondesk-so/messenger-js-sdk
import { initNotiondesk } from "@notiondesk-so/messenger-js-sdk";

const notiondesk = await initNotiondesk({
  messengerId: "YOUR_MESSENGER_ID",
});
const notiondesk = await initNotiondesk({
  messengerId: "YOUR_MESSENGER_ID",
});

await notiondesk.show();
await notiondesk.show();
document.querySelector("#support")?.addEventListener("click", () => {
  void notiondesk.show();
});
await notiondesk.hide();
await notiondesk.toggle();
notiondesk.showTab("help");
Aba Abre
homePágina inicial do Messenger
messagesconversas de IA
helpCentral de ajuda
contactFormulário de contato
changelogAtualizações de produtos

Por exemplo:

showTab() também abre o Messenger se ele estiver fechado no momento.

O módulo solicitado deve estar habilitado na sua configuração do Messenger. Por exemplo, showTab("changelog") não mudará para Changelog se o módulo Changelog estiver desabilitado.

Isso possibilita conectar diferentes partes da interface do seu aplicativo a diferentes experiências de suporte.

Por exemplo:

helpButton.addEventListener("click", () => {
  notiondesk.showTab("help");
});

updatesButton.addEventListener("click", () => {
  notiondesk.showTab("changelog");
});

contactButton.addEventListener("click", () => {
  notiondesk.showTab("contact");
});
  • Central de AjudashowTab("help")
  • Pergunte à IAshowTab("messages")
  • Contate o suporteshowTab("contact")
  • NovidadesshowTab("changelog")

Use seu próprio botão do Messenger

Você não precisa usar o iniciador padrão Notiondesk.

Desative a opção "Mostrar inicializador" nas configurações do Messenger e, em seguida, use o SDK para abrir o Messenger a partir da sua interface.

Por exemplo:

Isso é útil quando o suporte precisa ser integrado a uma barra de navegação existente, menu de conta, painel de controle, botão flutuante ou estrutura de aplicativo.

Ao usar um iniciador personalizado, prefira toggle() se o mesmo controle deve abrir e fechar o Messenger.

Ouça os eventos do Messenger

O SDK expõe eventos através de on() e off().

Por exemplo:

on() retorna uma função de cancelamento de inscrição:

Eventos disponíveis no Messenger

const notiondesk = await initNotiondesk({
  messengerId: "YOUR_MESSENGER_ID",
});

document.querySelector("#help")?.addEventListener("click", () => {
  void notiondesk.toggle();
});
notiondesk.on("messenger:show", () => {
  console.log("Messenger opened");
});

notiondesk.on("messenger:hide", () => {
  console.log("Messenger closed");
});
const unsubscribe = notiondesk.on("messenger:show", () => {
  console.log("Messenger opened");
});

// Later
unsubscribe();
Evento Quando ele dispara
messenger:loadedO conteúdo do Messenger foi carregado.
messenger:showO Messenger abre
messenger:hideO Messenger fecha
messenger:closedO visitante fecha o Messenger de dentro do painel.
messenger:tabChangedO visitante altera os módulos do Messenger.
messenger:languageChangedO visitante altera o idioma do Messenger.
messenger:expandedChangedO visitante expande ou recolhe o painel do Messenger.
messenger:layoutModeChangedO visitante altera o modo de layout do Messenger.
messenger:errorO Messenger não carrega corretamente.

Acompanhe qual seção do Messenger os visitantes usam.

O evento messenger:tabChanged inclui a aba atual e a anterior.

Por exemplo, você pode encaminhar a atividade do Messenger para sua plataforma de análise:

Mantenha seu próprio iniciador sincronizado

Os eventos também podem sincronizar sua interface de usuário com o estado do Messenger:

Alterar o tema do Messenger

Use setTheme() para alternar entre o modo claro e o modo escuro sem recarregar o Messenger:

Ou:

Por exemplo, sincronize o Messenger com o tema do seu aplicativo:

Você também pode reagir a alterações no tema do sistema operacional:

Use o painel de controle Notiondesk para configurar as cores, fontes, aparência do iniciador e outras preferências da sua marca no Messenger. O controle de tema do SDK serve para alternar o esquema de cores ativo.

Alterar o idioma do Messenger

Usar setLanguage():

Isso é útil quando seu aplicativo já possui seu próprio seletor de idioma:

O idioma solicitado deve estar habilitado para o seu Messenger em Notiondesk.

Se a localidade não estiver ativada, o Messenger manterá um idioma configurado disponível.

Atualizar o Messenger após a inicialização

Use updateConfig() quando o estado do aplicativo mudar depois que o Messenger já tiver sido carregado.

notiondesk.on(
  "messenger:tabChanged",
  ({ tabName, previousTab }) => {
    console.log("Messenger tab:", tabName);
  },
);
notiondesk.on("messenger:show", () => {
  analytics.track("support_opened");
});

notiondesk.on("messenger:tabChanged", ({ tabName }) => {
  analytics.track("support_tab_opened", {
    tab: tabName,
  });
});
notiondesk.on("messenger:show", () => {
  helpButton.setAttribute("aria-expanded", "true");
});

notiondesk.on("messenger:hide", () => {
  helpButton.setAttribute("aria-expanded", "false");
});
notiondesk.setTheme("dark");
notiondesk.setTheme("light");
notiondesk.setTheme(
  isDarkMode ? "dark" : "light",
);
const colorScheme = window.matchMedia(
  "(prefers-color-scheme: dark)",
);

function syncMessengerTheme() {
  notiondesk.setTheme(
    colorScheme.matches ? "dark" : "light",
  );
}

syncMessengerTheme();

colorScheme.addEventListener(
  "change",
  syncMessengerTheme,
);
notiondesk.setLanguage("fr");
notiondesk.setLanguage(currentLocale);

Atualizar um usuário autenticado

Após o usuário efetuar o login:

O Messenger atualiza o usuário atual sem exigir que a página seja recarregada.

Voltar ao usuário anônimo

Quando um usuário faz logout:

Para o fluxo de autenticação completo, consulte Identificar usuários conectados no Messenger .

Alterar a posição do mensageiro

Você pode mover o Messenger em tempo de execução:

As posições com suporte são:

notiondesk.updateConfig({
  userToken,
});
notiondesk.updateConfig({
  userToken: null,
});
notiondesk.updateConfig({
  position: "bottom-left",
});
  • bottom-right
  • bottom-left

A posição padrão do iniciador deve ser configurada no painel Notiondesk. Use updateConfig() quando seu aplicativo precisar de uma substituição temporária em tempo de execução.

Por exemplo, você pode mover o Messenger quando outro elemento flutuante ocupar o mesmo canto.

Alterar o nível de empilhamento

Caso o Messenger precise aparecer acima de outro elemento do aplicativo:

Use o Messenger com usuários autenticados.

Forneça um token de usuário assinado ao inicializar o Messenger:

Você também pode começar anonimamente e identificar o usuário posteriormente:

O token deve ser gerado pelo seu backend.

Nunca exponha o segredo do seu aplicativo Notiondesk no código do navegador.

Consulte Identificar usuários conectados no Messenger para obter o fluxo completo de autenticação e logout.

Remover Messenger

Use destroy() para remover completamente a instância atual do Messenger:

Use destroy() quando:

notiondesk.updateConfig({
  zIndex: 10000,
});
const notiondesk = await initNotiondesk({
  messengerId: "YOUR_MESSENGER_ID",
  userToken,
});
const notiondesk = await initNotiondesk({
  messengerId: "YOUR_MESSENGER_ID",
});

notiondesk.updateConfig({
  userToken,
});
notiondesk.destroy();
  • O Messenger não deve mais estar presente na página atual.
  • Uma conta de usuário está sendo alterada.
  • Seu aplicativo está desmontando a integração com o Messenger.
  • Você precisa iniciar uma nova sessão do Messenger.

Você pode inicializar o Messenger novamente após destruí-lo.

Carregar o Messenger sem inicializá-lo

Para aplicações que necessitam de maior controle sobre a inicialização, utilize loadNotiondesk():

A maioria das aplicações deve usar initNotiondesk() em vez disso.

loadNotiondesk() é útil quando o carregamento do SDK do Messenger e a inicialização do próprio Messenger precisam ocorrer em pontos diferentes do ciclo de vida do seu aplicativo.

Acesse uma API do Messenger já carregada.

Use getNotiondesk() para acessar a API de forma síncrona quando o Messenger já estiver carregado:

Se o Messenger ainda não tiver carregado, getNotiondesk() retorna null.

Para inicialização normal do aplicativo, prefira initNotiondesk().

Controles e estado do React

Aplicações React devem usar:

useNotiondesk() fornece os controles do Messenger e seu estado de carregamento atual.

Por exemplo:

Os valores disponíveis incluem:

import {
  loadNotiondesk,
} from "@notiondesk-so/messenger-js-sdk";

const notiondesk = await loadNotiondesk();

await notiondesk.init({
  messengerId: "YOUR_MESSENGER_ID",
});
import {
  getNotiondesk,
} from "@notiondesk-so/messenger-js-sdk";

getNotiondesk()?.show();
import {
  NotiondeskProvider,
  useNotiondesk,
} from "@notiondesk-so/messenger-js-sdk/react";
function SupportButton() {
  const {
    show,
    status,
  } = useNotiondesk();

  return (
    <button
      disabled={status !== "ready"}
      onClick={() => void show()}
    >
      Contact support
    </button>
  );
}
Valor Propósito
apiAPI do Messenger em formato bruto, quando estiver pronta.
status__PRESERVADO_77__, __PRESERVADO_76__, __PRESERVADO_75__ ou __PRESERVADO_74__
errorErro de inicialização, caso tenha ocorrido.
show()Abra o Messenger
hide()Fechar Messenger
toggle()Alternar Messenger
showTab()Abra um módulo do Messenger
setTheme()Alterar o tema
setLanguage()Alterar o idioma
updateConfig()Atualizar configuração de tempo de execução
destroy()Remover Messenger

Use api quando precisar de APIs como assinaturas de eventos:

Mantenha as propriedades de configuração, como tema e idioma, estáveis ​​em NotiondeskProvider sempre que possível.

Para alterações em tempo de execução, prefira setTheme(), setLanguage() ou updateConfig() em vez de alterar repetidamente a configuração do provedor.

Controles e estado do Vue

Os aplicativos Vue podem acessar o Messenger usando:

Por exemplo:

A integração com o Vue também expõe a API do Messenger, o status, os erros e os mesmos controles de tempo de execução do SDK principal.

Receitas comuns do SDK

Crie um botão de Ajuda personalizado

Desative o iniciador padrão nas configurações do seu Messenger:

Abra sua central de ajuda diretamente

Abra seu assistente de IA diretamente

O módulo Mensagens deve estar ativado e configurado no Messenger.

Abra seu formulário de contato diretamente

Abra o registro de alterações a partir do link "Novidades".

Ocultar o Messenger em uma rota de aplicativo específica

Mova o Messenger para longe de outro elemento flutuante.

Monitorar o uso do Messenger

Atualize o Messenger após o login.

Limpar o usuário após o logout

Solução de problemas

import { useEffect } from "react";
import { useNotiondesk } from "@notiondesk-so/messenger-js-sdk/react";

function MessengerAnalytics() {
  const { api } = useNotiondesk();

  useEffect(() => {
    if (!api) {
      return;
    }

    return api.on("messenger:show", () => {
      analytics.track("support_opened");
    });
  }, [api]);

  return null;
}
import {
  useNotiondesk,
} from "@notiondesk-so/messenger-js-sdk/vue";
<script setup lang="ts">
import {
  useNotiondesk,
} from "@notiondesk-so/messenger-js-sdk/vue";

const {
  show,
  showTab,
  isReady,
} = useNotiondesk();
</script>

<template>
  <button
    :disabled="!isReady"
    @click="show()"
  >
    Contact support
  </button>

  <button @click="showTab('changelog')">
    What's new
  </button>
</template>
helpButton.addEventListener("click", () => {
  void notiondesk.toggle();
});
notiondesk.showTab("help");
notiondesk.showTab("messages");
notiondesk.showTab("contact");
notiondesk.showTab("changelog");
if (window.location.pathname.startsWith("/checkout")) {
  await notiondesk.hide();
}
notiondesk.updateConfig({
  position: "bottom-left",
});
notiondesk.on("messenger:show", () => {
  analytics.track("support_opened");
});

notiondesk.on("messenger:tabChanged", ({ tabName }) => {
  analytics.track("support_section_opened", {
    section: tabName,
  });
});
notiondesk.updateConfig({
  userToken,
});
notiondesk.updateConfig({
  userToken: null,
});

O Messenger falha durante a renderização no servidor.

Notiondesk O Messenger é executado no navegador.

Não chame initNotiondesk() durante SSR.

As integrações com React e Vue cuidam da inicialização do navegador para você quando usadas corretamente.

Para Next.js, coloque o provedor Messenger dentro de um componente cliente.

O Messenger não inicializa.

Confira isso:

  • messengerId está presente e correto
  • O Messenger está habilitado em Notiondesk
  • O domínio do site atual está permitido pela sua configuração do Messenger.
  • O navegador pode carregar recursos do Messenger Notiondesk
  • Sua Política de Segurança de Conteúdo permite o uso do Messenger pelo Notiondesk
  • As extensões do navegador ou os bloqueadores de anúncios não estão bloqueando o script do Messenger.

Se a inicialização falhar, initNotiondesk() rejeita com um erro que seu aplicativo pode capturar:

try {
  const notiondesk = await initNotiondesk({
    messengerId: "YOUR_MESSENGER_ID",
  });
} catch (error) {
  console.error(
    "Could not initialize Notiondesk Messenger",
    error,
  );
}

showTab() não altera a seção Messenger

Confirme se o módulo solicitado está ativado nas configurações do seu Messenger.

Por exemplo, showTab("contact") requer que o módulo Contact esteja disponível.

O Messenger não altera o idioma.

O idioma passado para setLanguage() deve estar habilitado para o Messenger.

Configure primeiro os idiomas disponíveis em Notiondesk.

O mensageiro aparece atrás de outro elemento.

Aumente o nível de empilhamento em tempo de execução:

notiondesk.updateConfig({
  zIndex: 10000,
});

O usuário autenticado anteriormente permanece ativo.

Limpar o token do usuário:

Para alternar entre contas, você pode destruir completamente e inicializar uma nova instância do Messenger:

notiondesk.updateConfig({
  userToken: null,
});
notiondesk.destroy();

Um botão React fica ativo antes que o Messenger esteja pronto.

Use status:

const { show, status } = useNotiondesk();

return (
  <button
    disabled={status !== "ready"}
    onClick={() => void show()}
  >
    Contact support
  </button>
);
Esta página foi útil?