为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.点击“信息”页
  3. 你可以看到“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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值