为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. 下面 ...
随机推荐
- Pets(匈牙利算法)
Are you interested in pets? There is a very famous pets shop in the center of the ACM city. There ar ...
- 异步(async)编程
思考:为什么要使用异步编程? 我们先看看同步方法和异步方法之前在程序中执行的逻辑: 1. 同步方法 static void Main(string[] args) { Console.WriteLin ...
- Oracle快速建表Sample
表定义: create table tb_triple( id number(8,0) primary key, name nvarchar2(20), birthday date ) 充值: ins ...
- HKDAS产品技术架构图
- Git——从安装到连接GitHub
安装Git Windows平台上很轻松的,直接点击地址Git下载进行下载,之后基本就是下一步,安装成功. 在所需要操作的项目下右键,点击"Git Bash Here"弹出Git命令 ...
- linux6.4内核由2.6升级成3.6
安装CentOS 6.4之后,内核默认是2.6.32.由于docker需要3.0以上的内核,所以需要对内核进行升级. 1. 安装必要组件# yum -y install ncurses-devel # ...
- [CF664A]Complicated GCD(数论)
题目链接 http://codeforces.com/problemset/problem/664/A 题意 给两个数,找出它们的最大公因子d,使得从a到b之间的数都可以整除d. 题解 结论: 当gc ...
- 如何借助 IDEA 数据库管理工具可视化使用 TDengine?
什么是IDEA Database管理工具? 这里首先介绍下IDEA,IDEA全称IntelliJ IDEA,是Java语言开发的集成环境,IntelliJ在业界被公认为最好的Java开发工具之一. I ...
- firewalld 防火墙
firewalld防火墙 firewalld简述 firewalld:防火墙,其实就是一个隔离工具:工作于主机或者网络的边缘对于进出本主机或者网络的报文根据事先定义好的网络规则做匹配检测,对于能够 ...
- Java8学习小记
转载自https://segmentfault.com/a/1190000006985405 2014年,Oracle发布了Java8新版本.对于Java来说,这显然是一个具有里程碑意义的版本.尤其是 ...