LINE 提供服務,先到 LINE Develpers 登入及註冊。

先到 https://developers.line.biz/en/ 登入

登入後,注册,填寫 Name 、Email,並發送信箱認證信

選擇要使用的服務: Messaging API for python。

Create new channel

完成相關資料輸入 => App icon、App name、Description、Category、 Subcategory、 Email address、 Privacy Policy URL、 Terms Of Use URL

Confirm:確認輸入資料正確性

channel 建立成功

Messaging settings:

Use webhooks 切換成 Enabled
Webhook URL :先留空白,等建立 Webhook URL 後,再回頭設定

這邊不用設定,最下面有 chatbot 的 QR code ,用於加入用户进行对话。

佈署到 heroku

在專案資料夾新增名稱為 Procfile 的檔案

web: node app.js

如果電腦有安裝 heroku CLI,則可以於專案資料夾路徑執行下面指令:

heroku login
會與連結到 heroku 網站,點選 log in 再回到 CLI,已登入 heroku

建立一個 heroku app

heroku create
成功建立,左邊是 app 網址,右邊是 git push 位址

可用 git remote -v 指令來查詢
將專案 push heroku master

git push heroku master
push 後,會偵測哪一種語言撰寫的 app、建置 runtime environment、Installing binaries、Installing dependencies(相關套件)

from __future__ import unicode_literalsimport os
import sys
import redisfrom argparse import ArgumentParserfrom flask import Flask, request, abort
from linebot import (LineBotApi, WebhookParser
)
from linebot.exceptions import (InvalidSignatureError
)from linebot.models import (MessageEvent, TextMessage, TextSendMessage, ImageMessage, VideoMessage, FileMessage, StickerMessage, StickerSendMessage, LocationMessage
)
from linebot.utils import PY3app = Flask(__name__)# get channel_secret and channel_access_token from your environment variable
channel_secret = os.getenv('LINE_CHANNEL_SECRET', None)
channel_access_token = os.getenv('LINE_CHANNEL_ACCESS_TOKEN', None)# obtain the port that heroku assigned to this app.
heroku_port = os.getenv('PORT', None)if channel_secret is None:print('Specify LINE_CHANNEL_SECRET as environment variable.')sys.exit(1)
if channel_access_token is None:print('Specify LINE_CHANNEL_ACCESS_TOKEN as environment variable.')sys.exit(1)line_bot_api = LineBotApi(channel_access_token)
parser = WebhookParser(channel_secret)@app.route("/callback", methods=['POST'])
def callback():signature = request.headers['X-Line-Signature']# get request body as textbody = request.get_data(as_text=True)app.logger.info("Request body: " + body)# parse webhook bodytry:events = parser.parse(body, signature)except InvalidSignatureError:abort(400)# if event is MessageEvent and message is TextMessage, then echo textfor event in events:if not isinstance(event, MessageEvent):continueif isinstance(event.message, TextMessage):handle_TextMessage(event)if isinstance(event.message, ImageMessage):handle_ImageMessage(event)if isinstance(event.message, LocationMessage):handle_LocationMessage(event)if isinstance(event.message, VideoMessage):handle_VideoMessage(event)if isinstance(event.message, FileMessage):handle_FileMessage(event)if isinstance(event.message, StickerMessage):handle_StickerMessage(event)if not isinstance(event, MessageEvent):continueif not isinstance(event.message, TextMessage):continuereturn 'OK'# Handler function for Text Message
def handle_TextMessage(event):print(event.message.text)msg = 'Do you want to know the latest news about the disease?'line_bot_api.reply_message(event.reply_token,TextSendMessage(msg))# Handler function for Sticker Message
def handle_StickerMessage(event):print(event.message.sticker_id)msg = 'That is an interesting Sticker.'line_bot_api.reply_message(event.reply_token,TextSendMessage(msg))# Handler function for Image Message
def handle_ImageMessage(event):line_bot_api.reply_message(event.reply_token,TextSendMessage(text="This photo has been stored successfully"))# Handler function for Location Message
def handle_LocationMessage(event):line_bot_api.reply_message(event.reply_token,TextSendMessage(text="I am sure your community does not have infected person."))# Handler function for Video Message
def handle_VideoMessage(event):line_bot_api.reply_message(event.reply_token,TextSendMessage(text="Nice video!"))# Handler function for File Message
def handle_FileMessage(event):line_bot_api.reply_message(event.reply_token,TextSendMessage(text="Nice file!"))if __name__ == "__main__":arg_parser = ArgumentParser(usage='Usage: python ' + __file__ + ' [--port <port>] [--help]')arg_parser.add_argument('-d', '--debug', default=False, help='debug')options = arg_parser.parse_args()app.run(host='0.0.0.0', debug=options.debug, port=heroku_port)

具体完整项目请访问我的github:wcc8090

LINE chatbot机器人开发相关推荐

  1. 《智能对话机器人开发实战20讲》--学习笔记--AIML基础功能拓展-与互联网的集成

    一.学习笔记 环境要求: aiml bs4 语料库: tuling.aiml search_web.aiml <that>WHICH SEARCH ENGINE WOULD YOU LIK ...

  2. 400 多行代码!超详细 Rasa 中文聊天机器人开发指南 | 原力计划

    作者 | 无名之辈FTER 责编 | 夕颜 出品 | 程序人生(ID:coder_life) 本文翻译自Rasa官方文档,并融合了自己的理解和项目实战,同时对文档中涉及到的技术点进行了一定程度的扩展, ...

  3. 微信机器人开发SDK使用教程--养号任务停止

    微信机器人开发SDK使用教程--养号任务停止 case "PostStopWeChatMaintenanceTask": {// 养号任务停止 log.debug("we ...

  4. 如何给定两个gps坐标 算出航向角_机器人开发如何配置ROS中的TF变换关系?

    当我们进行机器人开发时,常常需要面对TF坐标转换,本文以 Autolabor Pro1 与思岚激光雷达为例,介绍ROS TF的使用. Autolabor Pro1是什么? Autolabor Pro1 ...

  5. 微信机器人开发SDK使用教程--删除朋友圈

    微信机器人开发SDK使用教程--删除朋友圈 case "DeleteSNSNewsTask": {// 删除朋友圈 log.debug("websocket:msgtyp ...

  6. 宁德时代机器人编程开发_高通发布5G机器人开发平台,内置强大AI算力。各大厂商竞相发布机器人处理平台,万物互联的时代即将到来...

    高通发布了强大机器人平台Robotics RB5 Platform,内置工业级QRB5165机器人处理器,拥有15TOPS AI 算力,强大的AI算力可应用于机器学习,增强计算机视觉,多摄像头并发处理 ...

  7. 微信机器人开发SDK使用教程--群发消息任务

    微信机器人开发SDK使用教程--群发消息任务 case "WeChatGroupSendTask": {// 群发消息任务 log.debug("websocket:ms ...

  8. 智能对话机器人开发实战案例剖析(2)

    一.前言 本文是<智能对话机器人开发实战案例剖析>系列的第2篇:智能对话机器人分类标准,旨在对智能对话系统的进行一个系统性的介绍.相关内容已同步录制成视频课程,发布在网易云课堂. 二.正文 ...

  9. telegram机器人开发3-最简单的代码

    telegram机器人开发3-最简单的代码

最新文章

  1. ik mysql热加载分词_Elasticsearch 之(25)重写IK分词器源码来基于mysql热更新词库...
  2. 6.00 Introduction to Computer Science and Programming lec5: Objects in Python
  3. 如何在C#里实现端口监视呢?
  4. 刘海I关于iPhone X 的适配
  5. JavaWeb练习项目--JEE商城
  6. 本地连接无法清除DNS缓存的解决办法
  7. Windows编程入门
  8. 模糊c均值聚类及python实现
  9. Java体检系统名称_求购体检中心管理系统JAVA WEB源码
  10. 原生js模拟微信聊天记录
  11. 怎么看电脑支持多少兆网速_怎么看电脑网卡多少兆_如何查看网卡多少兆-系统城...
  12. 微信小程序订阅信息之Java实现详解
  13. 【区块链108将】数据盾:顶级白客们对于网络安全的美好憧憬
  14. 网络体系结构基本概念及OSI七层模型
  15. 超超经典语录200条、看的我心拔凉拔凉的、我真的hold
  16. glog编译安装使用
  17. 骚操作!程序员埋下每隔几年就触发的逻辑炸弹 | 每日趣闻
  18. 左手是永恒,右手是瞬间
  19. 第8周项目5 定期存款计算器
  20. 慎重推荐十个优秀的网络硬盘(网盘)

热门文章

  1. 大学计算机作业互评评语简短,大学生互评评语简短
  2. Steam道具搬运靠谱吗?Steam搬砖是什么意思,Steam搬运的教程
  3. MKS Robin Nano V3.0使用说明书
  4. echarts图表大小根据div大小的改变而改变的问题
  5. 磁盘linux安装不可以用,CentOS 5 不支持SATA硬盘安装的解决方法
  6. 上海市出租车预约叫车和投诉电话一览
  7. ScriptX.cab与Smsx.cab打印代码
  8. 51单片机 Proteus仿真 四路倒计时 定时器0.01S
  9. 我的2020年终总结
  10. LibreOffice完美解决中文字体问题(在黑暗中摸索了好久~)