Receba informações sobre produtos automaticamente pelo Facebook Messenger
Este tutorial mostra como fornecer automaticamente a um usuário informações relevantes sobre produtos por meio do Facebook Messenger.
Nesse caso de uso, o usuário entra em contato com a empresa por meio da página da empresa no Facebook. Uma mensagem é enviada automaticamente de volta ao usuário. Por meio da correspondência de palavras-chave, o usuário pode receber informações personalizadas sobre produtos e serviços.
NOTA: Este tutorial pressupõe que você já tenha criado um perfil no Facebook e uma página no Facebook.
Código-fonte
O código-fonte deste projeto está disponível na comunidade Repositório do GitHub.
Pré-requisitos
- Criar um Account na Vonage
- Instalar o Node.js - necessário para utilizar a Interface de Linha de Comando (CLI) da Vonage.
- Instale o CLI da Vonage
- Saiba como testar seu servidor de webhooks localmente
- Python 3 instalado
- Flask instalado
As etapas
Depois que os pré-requisitos forem atendidos, as etapas são as seguintes:
- Criar uma aplicação da Vonage
- Vincule seu aplicativo da Vonage à sua página do Facebook
- Configure o Ngrok
- Escreva seu aplicativo básico
- Interaja com sua página do Facebook
- Cliente minimalista para enviar mensagens pelo Facebook Messenger usando Python
- O caso de uso revisitado
- Uma implementação
Existem várias maneiras de obter o mesmo resultado com o Vonage. Este tutorial mostra apenas uma maneira específica de fazer as coisas; por exemplo, você verá como usar a linha de comando para criar o aplicativo, em vez do Painel de Controle. Outros tutoriais demonstram outras maneiras de fazer as coisas.
Crie sua aplicação Vonage
Se ainda não tiver feito isso, crie um novo diretório para o seu projeto, como, por exemplo, fbm-app. Vá para este diretório.
Use a CLI para criar seu aplicativo Vonage:
Anote o ID do aplicativo gerado. Você também pode verificar isso no painel de controle.
Esse comando também criará uma chave privada, fbm_app.key no diretório atual, bem como atualizar/criar vonage_app.json.
Esse comando também configura os dois webhooks por meio dos quais ocorre toda a interação entre seu aplicativo e a Vonage. É necessário que você tenha um servidor em execução e acessível à Vonage nessas URLs.
Vincule sua aplicação à sua página do Facebook
Parte 1: Conecte sua página do Facebook ao seu Account da API da Vonage
Ao conectar sua página do Facebook à sua Account da API da Vonage, a Vonage passa a gerenciar as mensagens recebidas e você pode enviar mensagens por meio da Messages API.
-
Para vincular sua página do Facebook à sua conta da API da Vonage, acesse o Vincule a página do Facebook no seu painel de controle.
-
Faça login no seu Account do Facebook a partir do painel de controle.
-
Selecione a página do Facebook que você deseja conectar à sua conta da API da Vonage na lista suspensa.
-
Selecione a chave de API que você deseja usar.
-
Clique Configuração completa.
Neste momento, seu Account da API da Vonage e esta página do Facebook estão vinculadas. A vinculação entre seu Account da API da Vonage e a página do Facebook não tem prazo de validade, mas pode, ocasionalmente, expirar. Após a expiração, você deverá vinculá-las novamente seguindo o mesmo procedimento.
Parte 2: Conecte sua página do Facebook ao seu aplicativo da API da Vonage
Assim que sua página do Facebook estiver conectada à sua conta da API da Vonage, ela ficará disponível para uso por qualquer um dos seus aplicativos. Para conectar a página do Facebook a um aplicativo da API da Vonage:
-
Acesse seu página de inscrições.
-
Na lista, clique no aplicativo que você deseja vincular. Você pode filtrar usando o Recursos abrir o menu suspenso e selecionar
messagespara facilitar isso. -
Em seguida, selecione o Canais sociais vinculados aba.
-
Clique no Link botão ao lado da página do Facebook à qual você deseja conectar seu aplicativo, certificando-se de que o Provedor é Facebook Messenger.
Agora você está pronto para receber as mensagens que os usuários enviam para você na sua Página do Facebook.
NOTA: Se, no futuro, você quiser vincular uma aplicação diferente a esta página do Facebook, basta repetir o procedimento descrito na Parte 2 para a nova aplicação.
Configure o Ngrok
Certifique-se de que o Ngrok esteja em execução para realizar testes localmente. Para iniciar o Ngrok, digite:
Para gerar uma URL temporária do Ngrok. Se você for um assinante pago, pode digitar:
Observe que, neste caso, o Ngrok redirecionará os webhooks do Vonage que você especificou ao criar seu aplicativo do Vonage para localhost:9000.
Escreva seu aplicativo básico
Portanto, no caso mais simples, sua aplicação ficaria assim:
from flask import Flask, request, jsonify
from pprint import pprint
app = Flask(__name__)
@app.route('/inbound', methods=['POST'])
def inbound_message():
data = request.get_json()
pprint(data)
return ("200")
@app.route('/status', methods=['POST'])
def message_status():
data = request.get_json()
pprint(data)
return ("200")
if __name__ == '__main__':
app.run(host="localhost", port=9000)
Adicione este código a um arquivo chamado app1.py e salve-o.
Execute localmente com:
Seu aplicativo básico já está em funcionamento e pronto para registrar eventos.
Interaja com sua página do Facebook
Agora que seu aplicativo básico já está funcionando, você pode enviar uma mensagem para sua Página do Facebook e, em seguida, verificar se a mensagem foi registrada. Assim, se você enviar uma mensagem simples para sua Página do Facebook usando o Messenger, verá um registro semelhante ao seguinte:
Aqui há algumas informações importantes que você pode usar para aprimorar sua aplicação e torná-la mais útil.
| Campo | Descrição |
|---|---|
from |
O ID do Facebook da pessoa que está enviando uma mensagem para a sua página. |
to |
O ID do Facebook da sua página (a página para a qual a pessoa está enviando uma mensagem). |
message |
A mensagem que está sendo enviada. |
Você pode ver que a mensagem é um objeto JSON. É possível extrair o texto da mensagem desse objeto.
Observe que é útil registrar tanto o ID do Facebook da sua página (que talvez você não conheça) quanto o ID do Facebook do usuário que está enviando uma mensagem para você. Observe que o ID do Facebook é especialmente útil se o seu aplicativo estiver lidando com várias páginas do Facebook.
Cliente minimalista para enviar mensagens pelo Facebook Messenger usando Python
Atualmente, a Vonage não oferece suporte oficial às APIs Messages e Dispatch no SDK para servidor em Python, mas nossa API REST é totalmente compatível e a O código em Python é fornecido no projeto para você, em uma classe reutilizável. Como o código já foi fornecido, não abordaremos esse assunto mais detalhadamente neste tutorial.
O caso de uso revisitado
É hora de analisar esse caso de uso com mais detalhes para que você possa desenvolver seu aplicativo de forma mais eficaz.
Imagine que um usuário envie uma mensagem para a sua página do Facebook pelo Messenger com algo como “Oi”. No entanto, devido aos fusos horários, você não está disponível para responder à mensagem — o que pode deixar o usuário desanimado. Por outro lado, seria ótimo se você pudesse responder automaticamente com informações úteis. Por exemplo, a uma mensagem como “Oi”, você poderia responder com “Bem-vindo à T’s Cat Supplies. Aqui estão nossas principais categorias de produtos: brinquedos, ração, remédios e acessórios”.
Usando uma construção do Python como if keyword in msg você pode identificar palavras-chave e enviar conteúdo com base nelas. Por exemplo, se um usuário enviar uma mensagem como “Oi, preciso organizar meus aquários”, você pode identificar a palavra tank e enviar informações sobre seus serviços de limpeza de tanques. Ou, se você receber uma mensagem do tipo “Oi, acho que preciso de um guindaste para levantar nossos trechos de tubulação”, você poderia enviar informações sobre seus serviços de aluguel de guindastes. Quando não forem detectadas palavras-chave, é muito simples enviar uma mensagem genérica de volta ao usuário para ajudá-lo a se orientar.
Esse recurso de resposta automática é útil, pois algumas empresas têm centenas de produtos e serviços.
Outro recurso útil é a possibilidade de desativar a resposta automática, talvez para lidar diretamente com uma pessoa. Você poderia incluir comandos como auto: off e auto: on para controlar como seu cliente interage com sua página no Facebook.
Nas seções a seguir, você verá como implementar esse caso de uso.
Uma implementação
Uma das estruturas de dados úteis na implementação desse caso de uso é o dicionário do Python. Você pode ver um exemplo aqui:
cats_dict = {
'other': 'Our products: toys, food, meds, and bling',
'toys': 'More info on cat toys here https://bit.ly/abc',
'food': 'More info on cat food here https://bit.ly/def',
'meds': 'More info on cat meds here https://bit.ly/ghi',
'bling': 'More info on cat bling here https://bit.ly/jkl'
}
Para entender melhor isso, analise o código a seguir:
class ProductMatcher:
auto_mode = True
cats_dict = {
'other': 'Our products: toys, food, meds, and bling',
'toys': 'More info on cat toys here https://bit.ly/abc',
'food': 'More info on cat food here https://bit.ly/def',
'meds': 'More info on cat meds here https://bit.ly/ghi',
'bling': 'More info on cat bling here https://bit.ly/jkl'
}
...
def product_matcher(self, fb_sender, user, msg):
product = 'other'
msg = msg.lower().strip()
if self.auto_mode:
if "auto: off" in msg:
self.auto_mode = False
self.fbm.send_message(fb_sender, user, "Auto mode is off")
return
for k in self.cats_dict.keys():
if k in msg:
product = k
break
self.fbm.send_message(fb_sender, user, self.cats_dict[product])
if "auto: on" in msg:
self.auto_mode = True
self.fbm.send_message(fb_sender, user, "Auto mode is on")
return product
Se o usuário enviar uma mensagem pelo Messenger e não houver ninguém para responder, um menu é exibido para o usuário. A partir da mensagem do usuário, o produto é identificado e a mensagem apropriada é enviada. Esse código adota uma abordagem específica, mas esperamos que ele demonstre o potencial da solução.
Você deve estar se perguntando: isso não seria incômodo para o usuário caso ele queira falar com uma pessoa de verdade? No entanto, a resposta automática pode ser desativada assim que você estiver online e puder receber mensagens. O código permite que o usuário utilize os comandos auto: off e auto: on para controlar a interação. Isso também poderia ser controlado pelo gerente de canais.
No código acima, o produto no qual o usuário está interessado também é retornado. Isso poderia ser usado se, por exemplo, você quisesse registrar o usuário e sua escolha de produto em um banco de dados. Você também poderia consultar um usuário no banco de dados para descobrir se ele é um novo cliente ou se já teve contato com a empresa anteriormente.
Resumo
Neste tutorial, você viu um caso de uso em que o usuário pode receber informações sobre produtos automaticamente pelo Facebook Messenger. Isso se baseou na correspondência de palavras-chave. O usuário também tinha a possibilidade de ativar ou desativar o modo de resposta automática, conforme necessário.
Outros recursos
- O completo código-fonte.
- Messages API documentação