串接 Dialogflow (2)
本篇教学会延伸“LINE BOT 串接 Dialogflow”文章,并额外让 Dialogflow 串接 Python 建立的服务器 Webhook,做到用户与 LINE BOT 聊天时,不仅可以使用 Dialogflow 自然语意分析的功能,也可以透过自己 Python 服务器进行对应的逻辑处理。
快速导览:
本篇文章所需知识
要实作本篇文章的范例,需要先参考“LINE BOT 串接 Dialogflow”文章,先建立自己的 LINE BOT 以及打开 Dialogflow 专案,并将 Dialogflow 与 LINE BOT 进行基本的连动。
如果已经有账号或专案,直接点击下方链接开始。
- Google Dialogflow:https://dialogflow.cloud.google.com/
- LINE Developers:https://developers.line.biz/zh-hant/
- LINE 官方账号管理页面:https://tw.linebiz.com/login/
串接流程图
整个串接过程需要使用到“两个 Webhook 网址”,参考下方的串接流程图,可以了解如何使用 LINE 串接 Dialogflow 和自己的 Python 服务器。
使用 Python 建立 Webhook 网址
参考“Dialogflow 串接 Webhook”文章,使用“本机环境 + ngrok”、“Colab + ngrok”或“Google Cloud Functions”架设 Webhook,建议先使用下方程序码于本机环境测试,比较方便开发与除错。
from flask import Flask, request
app = Flask(__name__)
@app.route("/")
def home():
return "<h1>hello world</h1>"
@app.route('/webhook', methods=['POST'])
def webhook():
req = request.get_json() # 轉換成 dict 格式
print(req)
reText = req['queryResult']['fulfillmentText'] # 取得回覆文字
print(reText)
return {
"fulfillmentText": f'{reText} ( webhook )',
"source": "webhookdata"
}
app.run()
程序执行后,打开浏览器,输入刚刚 ngrok 产生的网址 ( 记得先安装并设定 ngrok,网址后方“不要”加上 /webhook ),如果出现 hello world 的文字,表示顺利建立成功。
回到 Dialogflow 的专案里,进入“Intents”页签,点击需要串接 Webhook 的 Intent,进入后在最下方勾选“Enable webhook call for this intent”,表示该 Intent 会透过 Webhook 处理后再进行回复 ( 如果 Webhook 失败则会直接套用内容回复 )。
进入“Fulfillment”页签,勾选启用 Webhook,将刚刚产生的 Webhook 贴上并储存 ( 如果是本地端或 Colab 网址,后方“要”加上 /webhook )
完成后在右侧的聊天测试里,输入一些文字就可以看见机器人的自动回复,如果回复文字的后方有加上 ( webhook ) 文字,表示已经顺利串接 Webhook ( 额外加上的文字是在 Webhook 服务器端加入的,可以自行修改程序 )。
搭配 LINE BOT 测试
打开 LINE 与 LINE BOT 的聊天视窗,输入聊天内容,就可以看见已经透过自订的 Webhook 网址进行回复 ( 回复消息后方会有自行添加的 webhook 文字 )
Enable Webhook call for this intent
如果发现回传的消息,是没有经过自己架设的 Python Webhook 服务器 ( 例如上图,最后一句“我爱你”的回复后方并没有 webhook ),表示该 Intent 没有勾选 Enable Webhook call for this intent,只要进到该 Intent 里,将其勾选启用,即可正常运作。
小结
如果已经能够将 LINE 与 Dialogflow、自订的 Python 服务器串接,就能做到能辨识自然语言以及逻辑判断的 LINE BOT 机器人。
延伸阅读:
微信扫码关注
抖音扫码关注