https://d226lax1qjow5r.cloudfront.net/blog/blogposts/build-a-web-application-to-chat-with-your-facebook-page-users/chat_facebook_1200x600.png

Créez une application Web pour discuter avec les utilisateurs de votre page Facebook

Publié le January 13, 2022

Temps de lecture : 5 minutes

Le poste a été mis à jour pour utiliser Client SDK JavaScript version 8.3.0 qui peut désormais gérer les messages sortants.

Introduction

L'API Messages API est en cours d'intégration dans le Client SDK. Cela fournira une méthode directe où vos clients, via Facebook Messenger, WhatsApp, Viber, et plus encore, peuvent communiquer avec une application que vous créez.

À la fin de ce billet de blog, vous aurez une application web capable d'envoyer et de recevoir des messages depuis votre page Facebook et le Messenger de votre page. Un exemple de code sera fourni et les parties pertinentes à l'intégration de l'API Messages seront expliquées.

Créer une page Facebook

Connectez-vous à Facebook et créer une page Facebook de test. Vous pouvez également tester une page qui existe déjà.

Mise en place de l'exemple d'application web

Faites votre copie de l'exemple d'application web en remixant ce Glitch. Pour configurer votre application, suivez les étapes du fichier readme. L'exemple d'application suit le scénario d'un agent se connectant à un tableau de bord, avec des conversations en cours entre les clients de la page Facebook et l'agent. Sur le côté gauche se trouvent toutes les conversations, et l'agent peut en rejoindre une.

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

Lorsque l'agent clique sur une conversation, une application de chat avec l'utilisateur Facebook s'ouvre dans une nouvelle fenêtre. L'application de chat est basée sur celle créée dans le tutoriel sur la création d'une application de chat. Tutoriel sur la création d'une application de chat.

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

Liez votre page Facebook à votre application Vonage

Il ne reste plus qu'à connecter votre page Facebook à l'application web pour qu'elles puissent communiquer entre elles. Voici les étapes à suivre :

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

  • Sur la page "Canaux sociaux", cliquez sur 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

  • Suivez les étapes pour connecter votre page Facebook à votre Account Vonage

Screen shot of steps to connect a Facebook PageConnect Facebook Page

  • Sélectionnez la(les) page(s) Facebook à connecter à Vonage

Screen shot of a Facebook Page selectorSelect a Facebook Page

  • Verify you are using the correct Facebook account (Vérifiez que vous utilisez le bon compte Facebook)

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

  • Examiner les autorisations accordées à Vonage

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

  • Confirmation que Vonage a pu être relié avec succès

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

  • Sélectionnez une page Facebook qui a été liée à Vonage et terminez la configuration.

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

  • Félicitations, votre page Facebook a été connectée avec succès

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

  • Maintenant que Vonage connaît votre page Facebook, connectons-nous à votre application Vonage qui a été créée lorsque vous avez configuré l'échantillon avec Glitch. Soit vous cliquez sur "Lier à une application", soit vous allez dans la section Applications du tableau de bord.

Screen shot of Your applications section of the Vonage dashboardYour applications

  • Sélectionnez l'application que vous avez créée lors de la mise en place de l'échantillon Glitch, puis cliquez sur "Link".

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

Essayez-le

Placez l'application web dans une fenêtre de navigateur et ouvrez Facebook Messenger dans une autre et connectez-vous si nécessaire. Si vous ne l'avez pas encore fait, saisissez un nom dans l'application web pour entrer dans le tableau de bord. Pensez à votre nom ou à celui d'un agent, il s'agit simplement d'un moyen de "se connecter". Maintenant, dans Messenger, trouvez la page Facebook que vous avez liée à l'application et envoyez un message. Dans la fenêtre avec votre application web, une petite carte devrait apparaître dans la section "Toutes les conversations". Cliquez sur rejoindre, une application de chat s'ouvrira, et vous devriez voir le message dans le chat. Envoyez un message depuis l'application de chat, et il devrait apparaître dans votre Facebook Messenger.

Ce qui se passe

Jetons un coup d'œil au code nécessaire pour réaliser ce qui précède. Lorsqu'un utilisateur envoie un message à votre page Facebook, celui-ci est envoyé par Vonage au webhook entrant de votre application web. Le webhook renvoie un objet qui permet à Vonage de savoir comment traiter le message. Dans ce cas, nous renvoyons les informations dont le Client SDK Messages API Integration a besoin pour connecter l'utilisateur Facebook à votre application Web afin d'établir une conversation. Ces informations comprennent l'identifiant de l'utilisateur Facebook et le nom de la conversation (que nous définissons comme l'identifiant de l'utilisateur Facebook afin qu'il soit unique).

// 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",
    },
  ]);  
});

Si c'est la première fois que l'utilisateur de Facebook envoie un message, une nouvelle conversation est créée. Cela émet un événement conversation:created que nous écoutons sur le webhook des événements. Le backend de l'application web prend cet événement et le reconditionne en tant qu'événement personnalisé, custom:new_convqui peut être utilisé pour notifier le tableau de bord de l'agent d'afficher la nouvelle conversation.

// 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'});
});

Dans le code de l'application de chat, il y a un message qui se déclenche lorsqu'un message est reçu de l'utilisateur Facebook. Il prend ensuite le message et l'ajoute à l'affichage de la discussion.

// 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;
});

Lorsque l'agent répond à l'utilisateur de Facebook, il s'agit d'un message sortant. Le Client SDK dispose d'une méthode sendMessage avec une méthode "message_type": "text" pour envoyer le message de l'agent. Vonage s'occupe alors de tout ce qui est nécessaire pour envoyer le message à l'utilisateur de 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 = '';
});

Pour ajouter un peu plus de personnalisation, nous affichons le nom de la page Facebook en haut du chat. Pour ce faire, une demande est faite au point d'extrémité getChatAppAccounts du serveur qui fait un appel à l'API chatapp-accounts de Vonage avec un JWT d'administrateur. Le nom de la page Facebook se trouve dans la réponse, que nous renvoyons au client.

Petite erreur

Si vos messages sortants cessent soudainement de fonctionner, vérifiez si le journal de votre serveur contient des erreurs. Si vous rencontrez une erreur contenant ce message :

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

Cela signifie que le jeton de votre page Facebook a expiré et qu'il doit être actualisé. Connectez-vous au tableau de bord de Vonage et allez à Messages et répartition, puis Chaînes sociales. Un bouton devrait se trouver à côté de votre page Facebook pour rafraîchir votre jeton.

Conclusion

Et voilà ! Grâce à l'API Messages intégrée au Client SDK, il est beaucoup plus facile de communiquer avec un utilisateur de Facebook à partir de votre propre application web.

Prochaines étapes

Veuillez consulter notre Client SDK documentation. Vous y trouverez de plus amples informations sur les méthodes utilisées pour créer le tableau de bord de l'agent, ainsi que des tutoriels, des guides et bien d'autres choses encore. Vous avez rencontré des problèmes avec l'application de démonstration ? Vous souhaitez ajouter de nouvelles fonctionnalités ? Si vous avez des questions, des commentaires ou un retour d'expérience, n'hésitez pas à nous en faire part dans notre canal Slack de la communauté.

Partager:

https://a.storyblok.com/f/270183/384x384/1a06993970/dwanehemmings.png
Dwane HemmingsDéveloppeur JavaScript Advocate