2017-04-25 73 views
0

我有一個燒瓶應用程序部署到Heroku,並希望從Chatfuel(bot構建平臺)接收文本併發迴文本作爲回報。連接API並通過Flask應用程序發回消息

現在,我所做的就是使用我的heroku應用程序作爲Web鉤子,以便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()功能的作品,因爲我看到一個「世界,你好」消息,如果我在本地運行的應用程序。但是,json()api_echo()都不起作用,並且當我的服務器收到來自chatfuel的獲取或發佈請求時,它將返回404錯誤。

正如你所看到的,我真的很困惑,你的幫助將是非常寶貴的。

感謝

+0

請發送日誌或回溯。 – stamaimer

+0

感謝您的評論。我不確定如何在heroku上獲得這個。是通過運行'heroku logs -t'嗎? – sandrus

+0

這就是我運行heroku時所看到的(我已經替換了真正的主機,請求和fwd值,'up'是我感興趣的屬性的名稱):'at = info method = GET path =「/ webhook ?up = Hh&up = Hh「host = x.herokuapp.com request_id = y fwd =」z「dyno = web.1 connect = 0ms service = 8ms status = 404 bytes = 386 protocol = https' – sandrus

回答

0

你需要確保你已經註冊與Chatfuel正確的網絡掛接網址。對於你現在使用的代碼來說,點擊json端點url將是https://www.your_server.com/json

驗證路由看起來像集線器挑戰FB發送的,所以你必須註冊你的站點的根目錄(也就是說,代碼)與FB打擊驗證功能。該網址看起來像這樣https://www.your_site.com/

相關問題