为Facebook messenger平台开发聊天机器人
介绍 在电子商务网上商店发明之前,我们总是有机会与销售代表或分销商在选择商品或服务时交谈。在进入数字世界后,这个领域变得沉默。这样对顾客方便吗?我认为不是。向销售代表或经销商询问他们想要的产品或服务是很容易的,而不需要在多个目录和商店中搜索。今天,几乎每一个“现代人”都在使用通讯应用程序——WhatsApp、Facebook messenger、Slack、雅虎等等。Facebook为开发者提供了一种非常棒的能力,使电子商务、在线商店、服务和其他分销机构对他们的客户更加友好——支持实时对话——与简单的人工智能代表对话,就像与商店里的真正经销商对话一样。 背景 显然,大多数互联网用户对“聊天机器人”这个词有负面的联想。这篇文章与垃圾邮件机器人没有任何关系,它只是关于有用的小程序,旨在通过使在线销售和商品分配互动简化客户的生活。 设计一个聊天机器人 通常,聊天机器人是一个很小的应用程序,在Facebook messenger(这篇文章只关注Facebook聊天机器人)的情况下,它被称为webhook。它基本上是一个网络端点,接收来自facebook的消息。webhook正在处理来自Facebook页面的聊天消息,分析它并根据消息内容返回响应。回复可以是聊天机器人的字符串消息回复,也可以是图片、网页链接、音频、视频等扩展内容。基本上,我们可以定义开发facebook messenger聊天机器人的主要步骤: 1)创建一个Facebook页面,使用聊天机器人webhook与客户聊天。(当为已有的页面开发聊天机器人时,这一步显然应该被省略)。例如:https://www.facebook.com/sskotugoroshko 2)为messenger chatbot https://developers.facebook.com/apps注册Facebook应用 3)为webhook建立或租用一些DNS名称的主机,例如:http://fbwebhookbotsem.herokuapp.com webhook可以做的。net, PHP, Java或Node.Js你喜欢,主机环境应该是合适的。 4)准备消息响应格式的流用例或聊天图,用于构建对话框。 5)选择使用哪一个人工智能引擎。可能的选择如下: 使用原语if-else逻辑自编码字符串解析。其优点是它是高度可定制的。采用基于ELIZA AI架构的自编码聊天机器人内核。eliza是任何聊天机器人的史诗级、基本的人工智能架构。它定义了支持类人对话(chat)的基本原则和循环。建立自己的人工智能引擎,使用NLP或类似的,这需要强大的,先进的知识开发类似人类的智能(神经网络,机器学习等)。目前最流行的是使用外部人工智能引擎——通过web API,例如Wit。还有许多其他开放的、现代的AI api即将问世。 6)使用选定的AI引擎实现webhook。 7)进行实时测试,以确保机器人支持所需的对话。添加和监控聊天日志,以识别和修复困难的聊天案例。 对我来说,实现webhook的最佳技术是Node。它非常直观,简单,易于操作,托管是便宜的,甚至是免费的。在这篇文章中,我将使用facebook提供的代码示例来解释聊天机器人的webhook行为。代码示例可以从GitHub的官方页面下载: https://github.com/fbsamples/messenger-platform-samples。本示例是使用Node完成的。它支持非常简单的命令来显示FB messenger平台的功能。如果webhook后端选择Node.Js, Heroku可以用于托管。Heroku为不同的平台提供有限流量的免费托管计划,包括Node.Js. 创建一个页面。 Facebook聊天机器人是设计来进行页面聊天的,这就是为什么在启动新的聊天机器人时需要确定它将在哪个页面上运行。页面创建菜单位于facebook页面的右上角。如果页面已经存在,只需要知道页面ID。 查找页面ID: 1. 回到你的页面 2. 点击“设置” 3.点击“信息”页 4. 你可以看到“Facebook页面ID” 例如,我已经创建了一个页面,用于鞋子在线购物https://www.facebook.com/sskotugoroshko 当页面ID准备好后,下一步就是创建Facebook应用程序。应该在下面的页面上完成: https://developers.facebook.com/apps 当应用程序创建时,它需要配置webhook端点和页面之间的连接,称为“订阅应用程序到页面”,这在下面的document https://developers.facebook.com/docs/messenger有很好的解释平台/指导/ quick-start 。完成后,应用程序设置屏幕应该是这样的: 非常重要!安装完成后,在提示webhook和通过所有聊天测试后,不要忘记打开您的应用程序的公共访问。Facebook应用页面->设置选项卡。否则,没有人可以和你的机器人聊天。 在heroku为NodeJs创建帐户。 下面的文章详细描述了如何创建heroku帐户和部署NodeJs application https://scotch.io/tutorials/howto部署- a-node-js-apptoheroku。帐户的设置和部署相当简单,我用了不到一个小时,应该花了大约30分钟。Heroku帐号是免费使用的。 会话流程图或聊天案例。 这是为聊天机器人编写代码的起点。你的客户必须提供图表的聊天案例来描述期望的行为的聊天机器人。聊天案例的例子可以在我的介绍页面上找到http://fbwebhookbotsem.herokuapp.com/ 编写聊天机器人webhook代码。 现在,页面已经准备好了,Facebook应用程序已经完全设置好了,托管环境已经创建好了,聊天情况已经考虑好了,现在是时候编写聊天机器人本身的代码了。要实现bot,您需要遵循客户提供的聊天用例。我建议使用Eliza core,它可以在GitHub上获得https://github.com/modInfo/Eliza.js-chatbot-in-NodeJS/blob/master/eliza.js 或Wit。人工智能web界面。在webhook端,应用程序应该监听在适当的地址发布的数据,例如服务器运行过程的Node.Js代码: 隐藏,收缩,复制Code
/*
* All callbacks for Messenger are POST-ed. They will be sent to the same
* webhook. Be sure to subscribe your app to your page to receive callbacks
* for your page.
* https://developers.facebook.com/docs/messenger-platform/product-overview/setup#subscribe_app
*
*/
app.post('/webhook', function (req, res) {
var data = req.body; // Make sure this is a page subscription
if (data.object == 'page') {
// Iterate over each entry
// There may be multiple if batched
data.entry.forEach(function(pageEntry) {
var pageID = pageEntry.id;
var timeOfEvent = pageEntry.time; // Iterate over each messaging event
pageEntry.messaging.forEach(function(messagingEvent) {
if (messagingEvent.optin) {
receivedAuthentication(messagingEvent);
} else if (messagingEvent.message) {
receivedMessage(messagingEvent);
} else if (messagingEvent.delivery) {
receivedDeliveryConfirmation(messagingEvent);
} else if (messagingEvent.postback) {
receivedPostback(messagingEvent);
} else if (messagingEvent.read) {
receivedMessageRead(messagingEvent);
} else if (messagingEvent.account_linking) {
receivedAccountLink(messagingEvent);
} else {
console.log("Webhook received unknown messagingEvent: ", messagingEvent);
}
});
}); // Assume all went well.
//
// You must send back a 200, within 20 seconds, to let us know you've
// successfully received the callback. Otherwise, the request will time out.
res.sendStatus(200);
}
});
更多详细信息,请查看官方教程存储库https://github.com/fbsamples/messenger-platform-samples 测试聊天机器人。 当chatbot被实现时,它需要确保它根据请求的流进行操作。为此,您可以配置测试用户,他们可以与聊天机器人,在开发或测试阶段,但尚未上线(Facebook应用程序设置页面,角色选项卡,角色菜单): 一个聊天机器人的工作例子可以在我的Facebook页面上找到:https://www.facebook.com/sskotugoroshko/messages 或者直接在messenger页面上找到https://messenger.com/t/sskotugoroshko.nbsp; 机器人的介绍页面: http://fbwebhookbotsem.herokuapp.com/ 历史 1月11日星期三由Sem发布 本文转载于:http://www.diyabc.com/frontweb/news30003.html
为Facebook messenger平台开发聊天机器人的更多相关文章
- AI中台——智能聊天机器人平台的架构与应用(分享实录)
内容来源:宜信技术学院第3期技术沙龙-线上直播|AI中台——智能聊天机器人平台 主讲人:宜信科技中心AI中台团队负责人王东 导读:随着“中台”战略的提出,目前宜信中台建设在思想理念及架构设计上都已经取 ...
- 人工智能不过尔尔,基于Python3深度学习库Keras/TensorFlow打造属于自己的聊天机器人(ChatRobot)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_178 聊天机器人(ChatRobot)的概念我们并不陌生,也许你曾经在百无聊赖之下和Siri打情骂俏过,亦或是闲暇之余与小爱同学谈 ...
- 微信公众平台开发(84) 小i机器人
很多朋友询问如何开发小黄鸡之类的智能聊天机器人,但遗憾的是小黄鸡接口申请页面在最近几个月里都无法访问,且使用时限制太大,我们找了另一个接口:小i机器人.本文介绍如何在微信公众平台中使用小i接口开发智能 ...
- 用 AIML 开发人工智能聊天机器人
借助 Python 的 AIML 包,我们很容易实现人工智能聊天机器人.AIML 指的是 Artificial Intelligence Markup Language (人工智能标记语言),它不过是 ...
- Python进阶开发之网络编程,socket实现在线聊天机器人
系列文章 √第一章 元类编程,已完成 ; √第二章 网络编程,已完成 ; 本文目录 什么是socket?创建socket客户端创建socket服务端socket工作流程图解socket公共函数汇总实战 ...
- 使用websocket开发智能聊天机器人
前面我们学习了异步web框架(sanic)和http异步调用库httpx,今天我们学习websocket技术. websocket简介 我们知道HTTP协议是:请求->响应,如果没有响应就一直等 ...
- 使用Botkit和Rasa NLU构建智能聊天机器人
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 我们每天都会听到关于有能力涉及旅游.社交.法律.支持.销售等领域的新型机器人推出的新闻.根据我最后一次查阅的数据,单单Facebook Me ...
- Tensorflow打造聊天机器人
Tensorflow聊天机器人 聊天机器人也叫做对话系统,是一个热门领域.微软.facebook.苹果.google.微信.slack都在上面做了大的投入,这是一波新的试图改变人和服务交流的创业浪潮. ...
- 【翻译】用AIML实现的Python人工智能聊天机器人
前言 用python的AIML包很容易就能写一个人工智能聊天机器人. AIML是Artificial Intelligence Markup Language的简写, 但它只是一个简单的XML. 下面 ...
随机推荐
- 避免nullpointer 空指针
来自知乎: 一般在服务器返回的数据上我们会做数据合法性检测,所以在api文档上需要注明字段的取值范围,然后客户端根据这个去做数据检测,缺段就直接走数据错误的流程,这个很大程度上避免了不少nullpoi ...
- oracle修改管理员密码
运行到C盘根目录 2.输入:SET ORACLE_SID = 你的SID名称 3.输入:sqlplus/nolog 4.输入:connect/as sysdba 5.输入:altre user ris ...
- vueRooter的总结
这一周学习了Vue的脚手架的结构,最重要的router 该进行总结和回忆了. 1首先是router的安装,用npm命令npm install vue-router --save 2装完后,在main. ...
- 02 axios
request.js import axios from 'axios' const config = require('@/config') const instance = axios.creat ...
- (Python)正则表达式进行匹配
import os import re pattern=re.compile(r'(\d{4})-(\d{2})-(\d{2})-b(\d{3})') // 要匹配的目录格式 for root,dir ...
- 20190930-01 Redis的事务 000 031
- linux基础:控制台
图形界面切换至命令行界面:ctrl+alt+F1~F6 命令行界面切换至图形界面:startx linux一共有7个运行级别,可查看/etc/inittab文件: 0:停机(记住不要把initdefa ...
- 【NOIP2013模拟】七夕祭
题目描述七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. TYVJ七夕祭和 ...
- Redis源码笔记--服务器日志和函数可变参数处理server.c
前言 Redis源码中定义了几个和日志相关的函数,用于将不同级别的信息打印到不同的位置(日志文件或标准输出,取决于配置文件的设置),这些函数的定义位于 server.h 和server.c 文件中,包 ...
- oracle之二检查点
检查点(checkpoint) 8.1 什么是checkpointcheckpoint是数据库的一个内部事件,检查点激活时会触发数据库写进程(DBWR),将数据缓冲区里的脏数据块写到数据文件中. 8. ...