
Compartilhar:
Adrian is a problem solver and Python developer advocate. He works with various programming languages to solve engineering problems. Introduced to programming at age 16, Adrian has spent the last 8 years oscillating between backend development and automation. He lives in Nairobi and when not writing code he is most likely playing Call Of Duty or NBA 2K on his PlayStation, riding his bicycle or binge watching the latest series on Netflix.
Adicione o Dialogflow e a SMS API da Vonage ao seu aplicativo Flask
Tempo de leitura: 2 minutos
O Dialogflow é uma plataforma de compreensão de linguagem natural (NLU) fornecida pelo Google. É utilizada para projetar e integrar interfaces de usuário conversacionais em aplicativos móveis e web, dispositivos, bots e sistemas de voz interativos. Neste tutorial, vamos demonstrar como integrar as APIs do Dialogflow e da SMS da Vonage para criar um bot de quiz que interaja com o usuário final por SMS. Não abordaremos todas as partes do aplicativo; portanto, se você estiver começando do zero, confira o repositório completo do projeto (ou leia um de nossos tutoriais tutoriais sobre desenvolvimento com Flask do zero!)
Criar um aplicativo
Começaremos usando o modo CLI do Vonage para criar um aplicativo. Instale o CLI do Vonage em seu computador da seguinte maneira:
npm install -g @vonage/cliCrie um diretório para seu aplicativo localmente:
mkdir your-applicationDentro do diretório, execute o seguinte comando:
vonage apps:createNo modo CLI interativo:
Application Name: your-app-name
Select capabilities: press the space bar to select voice, messages and rtc
Create voice webhooks? No
Create messaging webhooks? No
Create RTC webhooks? No
Allow use of data for AI training? NoO aplicativo já deve estar criado. Acesse o painel e acesse Applications. Seu aplicativo novinho em folha deve estar listado lá.
Configurar o agente do Dialogflow
Para configurar o agente do Dialogflow, acesse https://console.cloud.google.com e crie um novo projeto:
New Dialogflow project
Preste atenção ao PROJECT ID. Habilite a API do Dialogflow na lista de APIs:
Enable Dialogflow
Acesse https://dialogflow.cloud.google.com para criar um novo agente:
Create Dialogflow agent
Para facilitar a instalação e o funcionamento do seu aplicativo, incluí um arquivo zip no repositório do GitHub deste projeto. Acesse o dialogflow diretório e, na pasta resources baixe o quizzie.zip arquivo. Esse zip foi exportado da página de configurações do Dialogflow e contém todas as intenções, contextos e respostas necessárias para configurar um agente no painel do Dialogflow.
No painel do Dialogflow, clique em Configurações e acesse Exportar/Importar. Importe o arquivo zip que acabamos de baixar:
Import settings
Nosso agente de quiz do Dialogflow já está totalmente configurado e pronto para funcionar!
Nos próximos passos, precisamos criar a lógica que irá gerenciar a troca de mensagens entre o usuário final e nosso agente do Dialogflow.
Código da solicitação
Queremos criar uma interface para enviar um SMS ao usuário final. Primeiro, certifique-se de que a biblioteca Python da Vonage esteja instalada:
pip install vonageA função para enviar um SMS é a seguinte:
import vonage
import os
import json
def vonage_sms(message, recipient):
VONAGE_API_KEY = os.getenv("VONAGE_API_KEY")
VONAGE_API_SECRET = os.getenv("VONAGE_API_SECRET")
VONAGE_NUMBER = os.getenv("VONAGE_NUMBER")
client = vonage.Client(key=VONAGE_API_KEY, secret=VONAGE_API_SECRET)
sms = vonage.Sms(client)
response_data = sms.send_message(
{
"from": VONAGE_NUMBER,
"to": recipient,
"text": message,
}
)
if response_data["messages"][0]["status"] == "0":
return json.dumps("Message sent successfully.")
else:
return json.dumps(f"Message failed with error: {response_data['messages'][0]['error-text']}")Em seguida, adicione o código que notificará nosso cliente:
#! /usr/bin/env python3
import argparse
import sys
import os
from dotenv import load_dotenv
sys.path.append('../')
import vonage
APP_ROOT = os.path.join(os.path.dirname(__file__), '..') # refers to application_top
dotenv_path = os.path.join(APP_ROOT, '.env')
load_dotenv(dotenv_path)
def notify_customer(number):
text = "Hello. You can start your quiz with quizzie-bot by sending the following keywords: hi," \
" hello or vonage."
print(vonage_sms(text, number))Assim que o usuário final receber as mensagens, queremos que ele responda. Precisamos criar um endpoint de webhook de entrada para receber a resposta. Lembre-se de que configuramos a URL de SMS de entrada ao criar o aplicativo anteriormente. Agora é hora de adicionar a lógica ao nosso webhook:
@app.route("/update/", methods=['POST'])
def update_url():
trigger = request.get_json().get('message')
project_id = os.getenv("PROJECT_ID")
session_id = os.getenv("SESSION_ID")
language_code = os.getenv("LANG_CODE")
response = detect_intent_texts(project_id, session_id, trigger, language_code)
phone = phone_number()
return send_sms(response, phone)Precisamos encadear as respostas que recebemos do usuário final como entrada para o nosso agente do Dialogflow. Para isso, precisamos usar o agente REST do Dialogflow.
Especificamente, precisamos detectar a intenção do usuário e passá-la como entrada para o agente:
def detect_intent_texts(project_id, session_id, texts, language_code):
"""Returns the result of detect intent with texts as inputs.
Using the same `session_id` between requests allows continuation
of the conversation."""
import dialogflow_v2 as dialogflow
session_client = dialogflow.SessionsClient()
session = session_client.session_path(project_id, session_id)
print('Session path: {}\n'.format(session))
for text in texts:
text_input = dialogflow.types.TextInput(
text=text, language_code=language_code)
query_input = dialogflow.types.QueryInput(text=text_input)
response = session_client.detect_intent(
session=session, query_input=query_input)
return response.query_result.fulfillment_text Conclusão
A configuração básica já está concluída. Mostramos a lógica necessária para que o aplicativo envie e receba mensagens SMS, bem como a forma de se conectar ao agente do Dialogflow. Para ver o código completo do aplicativo, confira o repositório do projeto: https://github.com/nexmo-community/Vonage-QnA-app. E, caso tenha mais alguma dúvida, fique à vontade para me enviar um e-mail.
Compartilhar:
Adrian is a problem solver and Python developer advocate. He works with various programming languages to solve engineering problems. Introduced to programming at age 16, Adrian has spent the last 8 years oscillating between backend development and automation. He lives in Nairobi and when not writing code he is most likely playing Call Of Duty or NBA 2K on his PlayStation, riding his bicycle or binge watching the latest series on Netflix.