https://a.storyblok.com/f/270183/35162/7660d48b4f/chat_facebook_1200x600.png

Crie um aplicativo web para conversar com os usuários da sua página do Facebook

Publicado em January 13, 2022

Tempo de leitura: 4 minutos

A publicação foi atualizada para usar Client SDK do JavaScript versão 8.3.0 , que agora é capaz de processar mensagens enviadas.

Introdução

A Messages API está sendo integrada ao Client SDK. Isso proporcionará uma maneira simples de seus clientes, por meio do Facebook Messenger, WhatsApp, Viber e outros, se comunicarem com um aplicativo criado por você.

Ao final deste post, você terá um aplicativo web capaz de enviar e receber mensagens da sua página do Facebook e do Messenger dessa página. Serão fornecidos exemplos de código e explicadas as partes relevantes para a integração com a Messages API.

Criar uma página no Facebook

Faça login no Facebook e crie uma página de teste no Facebook. Você também pode testar com uma página que já exista.

Configurar o aplicativo web de exemplo

Crie sua própria cópia do aplicativo web de exemplo modificar este Glitch. Para configurar seu aplicativo, siga as etapas descritas no arquivo “readme”. O aplicativo de exemplo segue o cenário de um agente fazendo login em um painel, com conversas atuais entre clientes da página do Facebook e o agente. No lado esquerdo é onde todas as conversas estão ocorrendo, e o agente pode participar de uma delas.

The agent's dashboard with all conversations in a column. Join buttons are on the left in a gray box. The rest of the page is space for conversations the agent is already a part of with an open link for each.Sample application's agent dashboard

Quando o agente clica em uma conversa, um aplicativo de bate-papo com o usuário do Facebook é aberto em uma nova janela. O aplicativo de bate-papo é baseado naquele criado no tutorial “Criando um aplicativo de chat”.

Screenshot of a chat room where the Agent and Facebook user are having a conversation.Chat application demo

Vincule sua página do Facebook ao seu aplicativo da Vonage

Tudo o que falta para concluir a configuração é conectar sua página do Facebook ao aplicativo web para que eles possam se comunicar entre si. Seguem os passos:

  • Faça login no Painel da Vonage

  • Na seção “Mensagens e envio”, clique em “Canais sociais”

Screen shot of Messages and Dispatch menu with submenu of Sandbox and Social channelsVonage Dashboard Messages and Dispatch menu

  • Na página “Canais sociais”, clique em Facebook Messenger

Screen shot showing the options in the Social channels section of the Vonage Dashboard, WhatsApp, Viber, and Facebook MessengerVonage Dashboard Social channels section

  • Siga as etapas para conectar sua página do Facebook à sua conta da Vonage

Screen shot of steps to connect a Facebook PageConnect Facebook Page

  • Selecione a(s) página(s) do Facebook para conectar ao Vonage

Screen shot of a Facebook Page selectorSelect a Facebook Page

  • Verifique se você está usando o Account correto do Facebook

Screen shot of a confirmation popup to continue as a userContinue as user

  • Verifique as permissões concedidas à Vonage

Screen shot of the list of permissions that can be granted to VonageAsk for permissions

  • Confirmação de que foi possível conectar o Vonage com sucesso

Confirmation of Facebook Page being successfully linkedConfirmation of Facebook Page being successfully linked

  • Selecione uma página do Facebook que tenha sido vinculada ao Vonage e conclua a configuração

Screen shot of Connect Facebook Page where the page can be selected.Select your Facebook Business Page

  • Parabéns, sua página do Facebook foi conectada com sucesso

Screen shot of Social Channels section of Vonage Dashboard with a success alert.Confirmation that Facebook Business page was successfully connected

  • Agora que a Vonage já conhece sua página do Facebook, vamos conectar-nos ao seu aplicativo da Vonage, criado quando você configurou o exemplo com o Glitch. Clique em “Vincular a um aplicativo” ou acesse a seção “Applications” do painel de controle.

Screen shot of Your applications section of the Vonage dashboardYour applications

  • Selecione o aplicativo que você criou ao configurar a amostra do Glitch e, em seguida, clique em “Vincular”.

Screen shot of Application details page with the Facebook page listedApplication details

Screen shot of Application details page with the Facebook page linked to the applicationApplication details with Facebook page linked

Experimente

Coloque o aplicativo web em uma janela do navegador e abra o Facebook Messenger em outra e faça login, se necessário. Caso ainda não tenha feito isso, digite um nome no aplicativo web para acessar o painel. Pense nisso como seu nome ou o nome de um agente; é apenas uma maneira simples de “fazer login”. Agora, no Messenger, encontre a Página do Facebook que você vinculou ao aplicativo e envie uma mensagem. Na janela com seu aplicativo web, um pequeno cartão deve aparecer na seção “Todas as conversas”. Clique em “Participar”; um aplicativo de bate-papo será aberto e você deverá ver a mensagem no bate-papo. Envie uma mensagem a partir do aplicativo de bate-papo, e ela deverá aparecer no seu Facebook Messenger.

O que está acontecendo

Vamos dar uma olhada no código necessário para que isso aconteça. Quando um usuário envia uma mensagem para sua página do Facebook, ela é encaminhada pela Vonage para o webhook de entrada do seu aplicativo web. O webhook retorna um objeto que informa à Vonage como lidar com a mensagem. Nesse caso, estamos enviando de volta as informações de que a integração da Messages API do Client SDK precisa para conectar o usuário do Facebook ao seu aplicativo web e iniciar uma conversa. Isso inclui o ID do usuário do Facebook e o nome da conversa (que definimos como o ID do usuário do Facebook para que seja único).

// server.js
app.post("/webhooks/inbound", (request, response) => {
  // By responding to the inbound message callback with this action you add -
  // the message to a conversation so the agent client side will be notified about it
  response.status(200).send([
    {
      action: "message",
      // Creating a new conversation for every NEW incoming user.
      // Messages from the same user will be tagged to the same conversation
      conversation_name: request.body.from,
      user: request.body.from,
      geo: "region-code",
    },
  ]);  
});

Se for a primeira vez que o usuário do Facebook enviar uma mensagem, uma nova conversa é criada. Isso gera um conversation:created evento que monitoramos no webhook de eventos. O backend do aplicativo web recebe esse evento e o reestrutura como um evento personalizado, custom:new_conv, que pode ser usado para notificar o painel do agente a exibir a nova conversa.

// server.js
app.post("/webhooks/rtcevent", (request, response) => {
   ...
  // If Facebook user is new, a new conversation should be created, so listen for it here 
  // and then send the custom event to the Agents Conversation
  if (request.body.type === "conversation:created"){
    vonage.conversations.events.create(process.env.AGENTS_CONV_ID, {
      "type": "custom:new_conv",
      "from": "system",
      "body": request.body
    },
    (error, result) => {
      if (error) {
        console.error(error);
      } else {
        console.log(result);
      }
    });
  }
  response.status(200).send({code:200, status: 'got rtcevent request'});
});

No código do aplicativo de bate-papo, há um message ouvinte de evento que é acionado quando uma mensagem é recebida do usuário do Facebook. Em seguida, ele pega a mensagem e a adiciona à janela de bate-papo.

// public/chat.js
// Adding conversation.id here in the on. means that we're filtering events to only the ones regarding this conversation. (it's called grouping)
conversation.on('message', conversation.id, (from, event) => {
  console.log('message-received sender: ', from);
  console.log('message-reveived event: ', event);
  const formattedMessage = formatMessage(from, event, conversation.me);
  // Update UI
  messageFeed.innerHTML = messageFeed.innerHTML + formattedMessage;
  messagesCountSpan.textContent = messagesCount;
});

Quando o agente responde ao usuário do Facebook, isso é considerado uma mensagem de saída. O Client SDK possui um sendMessage método com uma "message_type": "text" para enviar a mensagem do agente. Com isso, a Vonage cuida de tudo o que é necessário para que a mensagem chegue ao usuário do Facebook.

// public/chat.js
// Listen for clicks on the submit button and send the existing text value
sendButton.addEventListener('click', async () => {
  conversation.sendMessage({
    "message_type": "text",
    "text": messageTextarea.value
  }).then((event) => {
    console.log("message was sent", event);
  }).catch((error)=>{
    console.error("error sending the message ", error);
  });
  messageTextarea.value = '';
});

Para dar um toque a mais de personalização, exibimos o nome da página do Facebook na parte superior do chat. Para isso, é feita uma solicitação ao getChatAppAccounts , que, por sua vez, faz uma chamada à API da Vonage chatapp-accounts com um JWT de administrador. O nome da página do Facebook consta na resposta, que enviamos de volta ao cliente.

Um pequeno detalhe

Se suas mensagens enviadas deixarem de funcionar repentinamente, verifique se há erros no log do servidor. Se você encontrar um erro que contenha o seguinte:

status: 'rejected',
error: { reason: 'Expired access Token', code: 1370 }

Isso significa que o token da sua página do Facebook expirou e precisará ser atualizado. Faça login no painel da Vonage e acesse Mensagens e Envio e, em seguida, Canais Sociais. Deve haver um botão ao lado da sua página do Facebook para atualizar seu token.

Conclusão

É isso aí! Com a Messages API integrada ao Client SDK, ficou muito mais fácil se comunicar com um usuário do Facebook a partir do seu próprio aplicativo web.

Próximos passos

Por favor, consulte nossa documentação do Client SDK. Lá você encontrará mais informações sobre os métodos usados para criar o Painel do Agente, além de tutoriais, guias e muito mais. Encontrou algum problema com o aplicativo de demonstração? Quer adicionar novas funcionalidades? Se tiver alguma dúvida, comentário e/ou sugestão, entre em contato conosco pelo nosso canal da Comunidade no Slack.

Compartilhar:

https://a.storyblok.com/f/270183/384x384/1a06993970/dwanehemmings.png
Dwane HemmingsPromotor de Desenvolvedores de JavaScript