作者 | Alfian Losari
来源 | Medium
编辑| 代码医生团队
对于使用Google的Dialogflow的开发人员来说,创建基于Chatbot的机器学习应用程序变得更加容易。根据谷歌:
Dialogflow是一个端到端的开发套件,用于为网站,移动应用程序,流行的消息传递平台和物联网设备构建对话界面。开发人员可以使用它来构建能够在用户和企业之间进行自然和丰富交互的界面(例如,聊天机器人)。它由机器学习提供支持,以识别用户所说的意图和背景,允许对话界面提供高效和准确的响应。
在本文中,我们将使用Dialogflow构建一个Chatbot库存跟踪应用程序,为简单起见,我们将使用Firebase实时数据库来存储我们的产品描述和库存数量。我们将使用Dialogflow履行webhook,它将触发Google Cloud功能并根据操作处理响应。该应用程序将使用Flutter,因此它可以在iOS和Android上运行。可以访问项目GitHub存储库。https://github.com/alfianlosari/flutter_chatbot_inventory
我们将建立什么
产品的Dialogflow实体:实体将为用户操作/意图提供特定的上下文。
Dialogflow意图产品描述和产品数量。意图表示用户想要询问的特定操作。
Firebase实时数据库:我们将包含库存中描述和数量的产品数据存储在数据库中,以便Fullfillment webhook可以查询用户搜索内容并提供响应。
使用Google Cloud功能的Dialogflow Fulfillment Webhook:webhook将获取请求查询操作和参数,然后根据用户操作,查询数据库中的描述或数量。
Flutter Project,移动前端应用程序:该应用程序显示用户的聊天列表UI,提供用户询问的输入,然后显示和说出响应。
设置Dialogflow
在开始之前,请转到Dialogflow网站https://dialogflow.com,单击右上角的Go to console。您需要使用Google帐户登录并授权才能使用Dialogflow。
登录后,我们需要创建新的代理。代理是我们将用于与我们的应用程序通信的Chatbot。为机器人提供所需的名称,确保将代理与Google Project相关联。您可以在此https://firebase.google.com处创建Firebase项目来创建Google项目。我们需要这样做,以便我们可以利用Firebase功能实现webhook实现。
Dialogflow使用intent和实体来识别用户想要的内容和用户语句的上下文,因此bot可以将用户请求映射到操作。
一个意图代表之间有什么用户说,应该由你的软件采取什么行动的映射。
实体是用于从自然语言输入中提取参数值的强大工具。您希望从用户的请求获得的任何重要数据都将具有相应的实体。
一个动作对应步伐当一个特定的目的已经由用户输入触发您的应用程序将耗时。
默认情况下,Dialogflow提供2个默认意图,默认欢迎意图和默认回退意图。
创建产品实体
单击左侧面板上的添加实体,将实体命名为Products,选中允许自动扩展。我们将使用Dialogflow预构建的系统实体来处理将产品名称关联到实体中的问题。
创建产品描述意图
单击左侧面板上的添加意图,然后命名意图产品描述。此意图将在他们询问有关产品的详细信息/描述时处理用户操作。单击Training Phrases选项卡,然后在下面输入培训短语表达式,确保选择产品名称并将其与我们之前创建的Products Entity相关联。我提供了用户在想要获取产品信息时可能会问的各种变体。
单击Action和Parameters,然后添加product_description作为Intent操作。单击Fulfillment并确保为此意图启用webhook调用。
创建产品数量意图
像以前一样,单击左侧面板上的添加意图,然后命名意图产品数量。当用户询问产品是否可用或是否有库存时,此意图将处理用户操作。单击Training Phrases选项卡,然后在下面输入培训短语表达式,确保选择产品名称并将其与我们之前创建的Products Entity相关联。我提供了用户在询问产品是否可用或有库存时可能会询问的各种变体。
单击Action和Parameters,然后添加product_quantity作为Intent操作。单击Fulfillment并确保为此意图启用webhook调用。
将产品数据存储在Firebase实时数据库中
在Firebase中创建一个新项目或使用您已有的项目。我们将产品库存数据存储在实时数据库中。下面是我们将使用的架构和虚拟数据。产品父母拥有包含描述,名称和库存的产品子代。当我们在数据库