Como utilizar o suporte de chat Freschchat no seu app Flutter.
Descrição Geral
O serviço OpenFreshChatService é projetado para integrar e manipular o SDK Freshchat em seu aplicativo. Ele facilita a comunicação e suporte ao cliente via chat, permitindo que os usuários visualizem as perguntas frequentes (FAQs) ou iniciem novas conversas.
É importante ler toda a documentação que eles possuem para as configurações para funcionamento:
O serviço recupera o token de registro de push do FirebaseMessaging e o define para o Freshchat SDK. Isso é essencial para notificações push relacionadas ao chat.
O SDK Freshchat é inicializado com IDs específicos e uma URL base. Um bundle de strings personalizado chamado FreshChatCustomBundle é usado para customizar as mensagens padrão do SDK.
Freshchat.init(...);
4. Configuração do Usuário
Antes de iniciar a conversa, o serviço configura detalhes do usuário no SDK Freshchat usando os detalhes do usuário armazenados em ProfileStore.
5. Definindo Propriedades do Usuário
Além dos detalhes básicos do usuário, o serviço define propriedades adicionais para o Freshchat SDK. Estas incluem a "FLAVOR" do aplicativo e a versão do aplicativo.
6. Mostrando FAQ ou Conversas
Finalmente, com base no argumento openFaq, o serviço ou mostra as FAQs ou inicia novas conversas para o usuário.
Por que usar o OpenFreshChatService?
Integração Simples: A classe encapsula a lógica necessária para integrar o SDK Freshchat, tornando mais fácil adicionar funcionalidades de chat em qualquer parte do aplicativo.
Customização: Utiliza um bundle de strings personalizado, permitindo maior controle sobre as mensagens padrão do SDK.
Segurança: Ao lidar com possíveis nulidades (com o uso do null-aware em Dart), garante que o aplicativo não quebre, mesmo se alguns dados não estiverem presentes.
Recomendações
Certifique-se de que todas as chaves e IDs usadas na inicialização do Freshchat sejam mantidas em segredo e não expostas. Além disso, é importante manter o SDK Freshchat atualizado para aproveitar as correções de bugs e novos recursos.
/*
Localizable.strings
Freshchat
Copyright (c) 2015 Freshdesk. All rights reserved.
*/
/* Solution Categories*/
"faq_title_text" = "Perguntas frequentes";
"faq_close_button_text" = "Fechar";
"contact_us_button_text" = "Entre em contato conosco";
"faq_feature_not_enabled_text" = "A funcionalidade de Perguntas frequentes está desativada";
/* Votação em Artigos */
"article_vote_prompt_text" = "Nós solucionamos suas dúvidas?";
"article_vote_prompt_yes_button_text" = "Sim";
"article_vote_prompt_no_button_text" = "Não";
/* Agradecimento por Votar em Artigo */
"thank_you_prompt_text" = "Obrigado pelo seu feedback!";
"thank_you_prompt_contact_us_button_text" = "Ainda precisa de ajuda? Fale conosco";
/* Detalhe de Artigo */
"offline_missing_content_text" = "Por favor, conecte-se à internet para visualizar o conteúdo de mídia disponível neste artigo.";
/* Sem Conectividade com a Internet */
"offline_internet_message" = "Uh-oh. Sem conexão com a internet";
/* Canais */
"channels_title_text" = "Conversas";
"channels_close_button_text" = "Fechar";
"channels_feature_not_enabled_text" = "A funcionalidade de Conversas está desativada";
/* Restaurando a visualização */
"restore_close_button_text" = "Fechar";
/* Interface de Mensagem */
"message_placeholder_text" = "Digite sua mensagem";
"messages_close_button_text" = "Fechar";
"send_button_text" = "Enviar";
"messages_agent_label_text" = "Suporte";
"default_action_button_text" = "Ver";
"default_video_button_text" = "Assistir Vídeo";
"default_file_button_text" = "Abrir Arquivo";
"audio_message_title" = "Mensagem de Áudio";
"picture_message_title" = "Imagem";
"picture_message_upload_error" = "Erro ao carregar a imagem. Imagem não encontrada.";
"audio_recording" = "Gravação de Áudio";
"audio_recording_stopped" = "Gravação Interrompida";
"audio_recording_permission_denied" = "Permissão não encontrada. Por favor, habilite a permissão de Microfone nas Configurações.";
"cancel_audio_recording_alert" = "Tem certeza de que deseja cancelar a gravação?";
"message_unsent_title" = "Sua mensagem não foi enviada";
"message_unsent_info_text" = "Não foi possível enviar sua(s) mensagem(ns) no momento. Verifique a internet ou tente novamente mais tarde.";
"server_error_info_text" = "Problema ao enviar mensagem. Por favor, tente novamente mais tarde.";
/* Mensagens de Exclusão de Conta */
"error_message_account_not_active_text" = "Esta seção não está mais disponível";
"error_message_account_not_active_cancel" = "Cancelar";
/* Alertas de Envio de Mensagem de Áudio */
"short_audio_alert_title" = "Sua mensagem é muito curta.";
"short_audio_alert_description_text" = "A gravação de áudio é muito curta. Por favor, tente novamente";
"long_audio_alert_title" = "Muito longo, você não acha?";
"long_audio_alert_description_text" = "Sua mensagem de áudio tem mais de 2 minutos. Tem certeza de que deseja enviar?";
"long_audio_alert_post_button_text" = "Enviar";
"search_placeholder_text"="Buscar FAQs";
"search_empty_result_text"="Oops! Não encontramos o que você estava procurando.";
"empty_channel_text" = "Oops, sem mensagens aqui!";
"empty_faq_text" = "Desculpe! Não há FAQs disponíveis";
"loading_channel_text" = "Carregando mensagens";
"restoring_channel_text" = "Restaurando mensagens";
"loading_faq_text" = "Carregando FAQs";
/* Alerta de câmera indisponível */
"camera_unavailable_title"="Sua câmera está indisponível";
"camera_unavailable_description"="Oopsie! Seu dispositivo não tem câmera ou a câmera não está disponível para uso";
"camera_unavailable_ok_button_text"="OK";
"camera_permission_denied" ="Permissões de câmera são necessárias para capturar fotos";
"photo_library_permission_denied" ="A permissão da biblioteca de fotos é necessária para acessar fotos";
"camera_permission_alert_cancel" ="Cancelar";
"photo_library_permission_alert_cancel" ="Cancelar";
/* Imagem anexada */
"pic_msg_attachment_close_btn"="Voltar";
"pic_msg_attachment_title_text"="Capturar";
/* Anexo de imagem */
"image_attachment_cancel_button_text"="Cancelar";
"image_attachment_select_existing_image"="Escolha uma imagem existente";
"image_attachment_select_new_image"="Tirar uma foto";
/* Notificações */
"notification_message_default"="Você tem uma mensagem!";
/* Pesquisa de satisfação do cliente */
/* Prompt Sim/Não */
"chat_resolution_prompt_text"="Todas as suas preocupações foram atendidas?";
"chat_resolution_prompt_yes_button_text"="Sim!";
"chat_resolution_prompt_no_button_text"="Não";
"chat_resolution_survey_question_text"="";
/* Prompt de pesquisa */
"cust_sat_not_resolved_prompt"="Como poderíamos ter ajudado você melhor?";
"cust_sat_user_comments_placeholder"="Feedback adicional";
"cust_sat_submit_button_text"="Enviar";
/* Formato do horário da mensagem */
"chat_message_time_today"="hh:mm a";
"chat_message_time_this_year_short"="dd MMM";
"chat_message_time_this_year_long"="dd MMM',' hh:mm a";
"chat_message_time_other_year"="MMM YYYY";
/* Tipicamente respostas */
"typically_replies_within_a_minute"="Normalmente responde em um minuto";
"typically_replies_within_x_minutes"="Normalmente responde em";
"typically_replies_within_an_hour"="Normalmente responde em uma hora";
"typically_replies_within_2_hours"="Normalmente responde em 2 horas";
"typically_replies_within_few_hours"="Normalmente responde em poucas horas";
"placeholder_minutes"="minutos";
/* Média de respostas */
"currently_replying_in_a_minute" = "Respondendo atualmente em um minuto";
"currently_replying_in_x_minutes"="Respondendo atualmente em";
"currently_replying_in_an_hour"="Respondendo atualmente em uma hora";
"currently_replying_in_2_hours"="Respondendo atualmente em 2 horas";
"currently_replying_in_few_hours"="Respondendo atualmente em algumas horas";