Line-bot Webhook 创建与部署

Line-bot Webhook 创建与部署

前言

  最近在研究LINE bot,通过搭建环境,编写webhook,终于实现bot与line 用户的对话。此过程并不是一帆风顺,期间遇到很多问题,咨询了很多朋友,在此表示感谢,特别感谢line-bot-sdk-python 的维护者。
line-bot 实现reply功能的关键在于Webhook 的编写。本文使用了flask框架来编写Webhook. 在此,就需要解决两个问题:

  • 1. Webhook 是什么?
  • 2. Webhook 怎么用?

1. Webhook 是什么?

官网解释: Receive notifications in real-time when a user sends a message or friends your account.
When an event, such as when a user adds your account or sends a message, is triggered, an HTTPS POST request is sent to the webhook URL that is configured on the Channel Console.

咋一看,似懂非懂。可参考github或者coding中钩子的思想。
意思是 当有好友添加你或者发消息给你时,会触发一个事件,然后 就会发送一个HTTPS POST请求到你的 webhook url.(不懂没事,后面还会提到,本文的重点。)

2. Webhook 有什么作用?

最简洁的方式,莫过于图。

Line-bot Webhook 创建与部署_第1张图片

LINE bot的运作流程是这样的:
1. 使用者传送消息到LINE bot账号;
2. LINE bot收到消息会将消息post给Webhook URL;
3. Webhook URL就是我们所说的web service,负责实际处理的消息。

从问题1和问题2,我们可知,我们需要填写一个webhook url, 且必须是HTTPS协议。而这个 webhook rul 对应的就是我们编写webhook生成的。

这里,我是将项目部署在 Heroku,免费,且支持HTTPS. 不足的是,因为是国外的一个云服务器,反应略慢。
另外,你们也可尝试 ngrok.

效果图

先看效果,再看值不值得学。
本文的目的在于webhook url, 所以这里我做了一个很简单的line-bot,支持简单的自动应答功能。
可以体验下,添加我的bot为好友,QR code 如下:
Line-bot Webhook 创建与部署_第2张图片

然后,你就可以和我的bot进行对话了。
Line-bot Webhook 创建与部署_第3张图片

搭建步骤

本部分请参考转载内容line-bot-Tutorial,内容是繁体书写,不影响阅读。再次表示感谢作者的付出。


环境

本人实践环境及所需工具。

  • Windows server 2008 r2
  • Heroku
  • line-bot-sdk-python
  • flask
  • git
  • python 3.6.1

部署

我的源码已上传至github,请查看line-bot-flaskr。

部署成功后,会在Heroku 中看到以下内容:
Line-bot Webhook 创建与部署_第4张图片

注意事项

1.填入 webhook url 后不需要进行verify.

我使用 line-bot-sdk-python當我按下 VERIFY,出现了如图所示所示错误,不影响bot的使用。原因是点击verify时,会返回一个虚拟的reply_token,所以failed。

本人的webhook url :
Line-bot Webhook 创建与部署_第5张图片
关于这个问题的详细解释,请查看我提交的issue.

2.部署过程中,请创建一个独立的Python运行环境,并保证是在虚拟环境下进行的。

虚拟环境有个标志(env),如下图:
env

3. 多用 Heroku logs --tail 查看日志,从日志中你就可以找到大多数错误的原因。

总结

本文的重点是在构造webhook url.
主要步骤如下:
1. 申请一个messaging api 的账号;
2. 书写callback函数,并部署到Heroku;
(代码可直接download我的github源码,执行过程请参照 Deploying-Flask-To-Heroku )
3. 进行bot与好友对话,进行测试。

部署花了我很长时间,需要对git很熟悉,一步一步的来。

我的源码已上传至github,请查看line-bot-flaskr。

链接

Github issue

  1. webhook url cannot be verified.

参考网址

  1. 两个教学视频:

    • Youtube Demo Tutorial V1

    • Youtube Demo V2

  2. line-bot-sdk-python

  3. Line Echo Bot on Django
    (这篇文章很好,内部写了两种webhook的处理方式。)
  4. line messaging-api
  5. line-bot-Tutorial

以上为一家之言,如有不妥当之处请指出:D

你可能感兴趣的:(Python)