连接到API并使用Flask应用

时间:2017-04-25 17:44:40

标签: python-3.x flask server chatbot

我有一个部署到Heroku的烧瓶应用程序,并希望从Chatfuel(机器人构建平台)接收文本并发回文本作为回报。

现在,我所做的是将我的heroku应用程序用作web-hook,以便Chatfuel可以对我的API进行简单的GET或POST查询。问题是我没有使用Flask或API的经验,因此我不确定我的应用程序如何接收信息(以json格式)并将其发送回chatfuel。

这是我到目前为止写的:

import os
import sys
import json

import requests
from flask import Flask, jsonify, render_template, request

app = Flask(__name__)

@app.route('/', methods=['GET'])
def verify():
# when the endpoint is registered as a webhook, it must echo back
    # the 'hub.challenge' value it receives in the query arguments
    if request.args.get("hub.mode") == "subscribe" and request.args.get("hub.challenge"):
        if not request.args.get("hub.verify_token") == os.environ["VERIFY_TOKEN"]:
            return "Verification token mismatch", 403
        return request.args["hub.challenge"], 200

    return "Hello world", 200

@app.route("/json", methods=['GET','POST'])
def json():
    url = "chatfuel_api"
    data = json.load(urllib2.urlopen(url))

    if request.json:
        mydata = request.json  
        return "Thanks",200

    else:
        return "no json received"

@app.route('/hello', methods = ['GET','POST'])
def api_echo():
    if request.method == 'GET':
        return "ECHO: GET\n",200

if __name__ == '__main__':
    app.run(debug=True)

verify()功能有效,因为我看到了“Hello Hello'如果我在本地运行应用程序的消息。但是,json()api_echo()都不起作用,当我的服务器收到来自chatfuel的get或post请求时,它会返回404错误。

正如你所看到的,我真的有很多困惑,你的帮助将非常宝贵。

由于

1 个答案:

答案 0 :(得分:0)

您需要确保已使用Chatfuel注册了正确的webhook网址。对于您当前拥有的代码,要点击json端点,网址将为https://www.your_server.com/json

验证路由看起来像FB发送的集线器挑战,因此您必须使用FB注册站点的根目录(即使用当前代码)才能点击验证功能。该网址看起来像https://www.your_site.com/