为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. 下面 ...
随机推荐
- 【学习中】Unity<中级篇> Schedule
章节 内容 签到 Unity3D 实战技术第二版视频教程(中级篇) 1.游戏引擎发展史 2.Unity发展史 3.3D图形学与必要组件 5月19日 4.核心类_GameObject类 5月19日 5. ...
- 深入了解Kafka【三】数据可靠性分析
1.多副本数据同步策略 为了保障Prosucer发送的消息能可靠的发送到指定的Topic,Topic的每个Partition收到消息后,要向Producer发送ACK,如果Produser收到ACK, ...
- 存储过程中拼接SQL语句
很多时候我们需要利用参数在存储过程中重新组织SQL语句,在存储过程中拼接的SQL语句只是一个字符串,不会被直接执行,所以加一个execute执行它就可以了.具体看如下演示代码: 代码: set ANS ...
- Nginx在mvvm模式中的使用
- kali命令大全
arch 显示机器的处理器架构(1)uname -m 显示机器的处理器架构(2)uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)hd ...
- Spring的循环依赖,学就完事了【附源码】
目录 啥是循环依赖? Spring可以解决循环依赖的条件 Spring如何去解决循环依赖 SpringBean的创建流程 Spring维护的三级缓存 getSingleton getSingleton ...
- 性能测试1:loadrunner介绍及代理录制
一.安装loadrunner lr安装环境要求: Lr11只支持ie9及一下,火狐30以下,不支持chrome. 操作系统只支持到win7.Lr打开时必须用管理员身份打开 在虚拟机中安装的win7, ...
- java中包名命名规范
在idea中创建package遇到的问题 发现一个问题,当我创建一个lesson-02的package时,输入这个包名后,package自动变成了文件夹 在网上搜索发下java包名一般是小写字母进行命 ...
- 从头看看Tomcat启动Spring容器的原理
通过带注解Spring Boot可以启动一个web容器,并初始化bean容器.那么Tomcat启动并初始化spring容器的原理是怎样的? Tomcat启动web程序时会创建一对父子容器(图1): 有 ...
- [程序员代码面试指南]数组和矩阵-求最短通路值(BFS)
题意 给二维矩阵 1.0组成,问从左上角到右下角的最短通路值. 题解 BFS基础.头节点入队:对队内每个节点判断.处理,符合条件的入队:到了终点节点返回. 相关知识 Queue为接口,LinkedLi ...