https://discord.gg/botpress logo
Starting the conversation in the right language fr...
# 🤝help
s
What I'm trying to achieve is having the chatbot, instead of automatically detecting the language, already starting in the right language depending on the i18n locale selected in the website.
Copy code
const BOTPRESS_CONFIG: BotpressConfig = {
  botId: "dxxxxxxx",
  configuration: {
    version: "v2",
    botName: "BCA Assistente Virtual",
    botDescription:
      "xxxxxxx.",
    website: {
      title: "",
      link: "",
    },
    email: {
      title: "info@xxxxx.com",
      link: "info@xxxxxx.com",
    },
    phone: {},
    ... 
    proactiveBubbleDelayTime: 10,
  },
  clientId: "06xxxxxxxx",
  selector: "#webchat",
};

const webchatStyles = `
  #webchat .bpWebchat {
    ...
`;

export function BotpressChat({ locale }: BotpressChatProps) {
  const isInitialized = useRef(false);
  const botLocale = locale === "pt" ? "pt" : "en";

  const clearBotpressStorage = useCallback(() => {
    Object.keys(localStorage)
      .filter((key) => key.startsWith("bp-webchat-"))
      .forEach((key) => localStorage.removeItem(key));
  }, []);

  const initBotpress = useCallback(() => {
    if (isInitialized.current || !window.botpress) return;

    isInitialized.current = true;
    clearBotpressStorage();

    window.botpress.on("webchat:initialized", () => {
      window.botpress.updateUser({
        data: { locale: botLocale },
      });
    });

    window.botpress.init(BOTPRESS_CONFIG);
  }, [clearBotpressStorage, botLocale]);

  return (
    <>
      <style dangerouslySetInnerHTML={{ __html: webchatStyles }} />

      <div id="webchat" style={{ width: 500, height: 500 }} />

      <Script
        src="https://cdn.botpress.cloud/webchat/v3.5/inject.js"
        strategy="afterInteractive"
        onLoad={initBotpress}
      />
    </>
  );
}
Currently I have this on my website, it makes sense but documentation isnt great The flow is in the attachments. This isn't working and I'm getting crazy because there is no debug tools either. https://cdn.discordapp.com/attachments/1462990014098178108/1462990014358229002/image.png?ex=697b67e0&is=697a1660&hm=167be485b6b5065e2df461b10f4ea9e62a93bb64e10f07747bd70a739cce74ca&
There is more code I left out, but the important stuff is there.
w
qual problema voce ta tendo?
o código não pega a locale corretamente ou ela não é aplicada no chat?
s
Bom, eu não sei se consigo ver porque não há muitas ferramentas de debug. Eu posso tentar colocar um print no chat. Só um momento
w
seu workflow.localeObject.locale tem algum valor:
é o jeito de checar se o locale chega corretamente
inclusive acho que essa variável devia ser do escopo user
w
sim
parece que o problema é não pegar o locale corretamente
e por consequencia nao da pra setar
w
pode perguntar
s
portanto, primeiramente, eu quero que o utilizador consiga tanto comunicar com o bot por opções de mensagem tanto com linguagem natural, por isso fiz desta forma, que funciona de forma ok, não é perfeito, mas gostava de saber se é a forma "intended" de o fazer https://cdn.discordapp.com/attachments/1462990014098178108/1463206957732073583/image.png?ex=6970fd2b&is=696fabab&hm=e463ac26534ad3d254ee8ee31e069c9d9660947ed4e563b65eebddce4f2a5d48&
w
não tenho certeza se é a forma intended
parece ser
mas não é a forma que eu uso
pessoalmente eu uso apenas um prompt que descreve os possiveis caminhos que o usuario pode tomar e como classificar se a mensagem do usuário expressa algum deles
e peço para a LLM escolher
isso me dá mais controle do que só dar uma frase curta explicativa
usando o AI Task?
será que pode partilhar um exemplo, por gentileza?
w
eu faço minhas requests diretamente pro openrouter
mas sim é factível com o ai task ou ai generate text
é igual o que você fez no intent mas com descrições mais completas
pessoalmente nunca usei o intent então não consigo dizer se será melhor ou pior
vai dos seus resultados
s
ok, obrigado. em segundo, para recomeçar uma conversa depois de fazer refresh na pagina eu apago o localStorage. Há uma forma menos gambiarra de o fazer?
s
sim, mas eu quero que a conversa recomece depois de dar f5 na pagina
porquê, já agora?
w
pode tentar o ctrl shift R
como assim já agora?
s
já agora funciona como by the way. Não sei se é uma diferença entre português do brasil e portugal
ou seja, eu perguntei: btw, porque usa o openrouter e não o AI Task do botpress?
w
ah sim perdão
openrouter tem muito mais disponibilidade de modelos
consigo também já fazer algumas ações dentro do code block que faço as calls como parse o json
tirando que ele pode rotear pra diferentes providers do mesmo modelo pra diminuir latencia e etc
tem menos interferência do botpress também, eu gosto porque é uma call direta e limpa
2 Views