Python webhook多次从Facebook Chatbot调用 - Api.ai

时间:2017-06-25 00:39:05

标签: python-2.7 dialogflow facebook-webhooks

我正在开发一个fb聊天机器人,其中特定的意图,webhooks被解雇并通过python进行处理。 python应用程序托管在Heroku云中。我遇到了一个典型的问题,每当有任何webhook被触发时,它会继续在无限循环中被触发,直到触发了聊天的下一个查询。

#!/usr/bin/env python

from __future__ import print_function
from future import standard_library
standard_library.install_aliases()
import urllib.request, urllib.parse, urllib.error
import json
import os
import psycopg2
import urlparse

from flask import Flask
from flask import request, render_template
from flask import make_response


# Flask should start in global layout
context = Flask(__name__)

# Webhook requests are coming to this method
@context.route('/webhook', methods=['POST'])
def webhook():
    reqContext = request.get_json(silent=True, force=True)
    if reqContext.get("result").get("action") == "input.welcome":
       return welcome()
    elif reqContext.get("result").get("action") == "yahooWeatherForecast":
       return weatherhook(reqContext)
    elif reqContext.get("result").get("action") == "GoogleSearch":
       return searchhook()
    else:
       print("Good Bye")

我只为3个意图启用了webhook。 api.ai中的其他意图没有启用(Webhook或Webhook插槽填充)。

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:1)

在这种情况下要寻找两件事:

  1. 我们需要向Facebook发送回复200以结束回复
  2. 需要检查是否在fb订阅上启用了邮件传递响应。如果启用,fb也会发送传递响应,应该在webhook上发送。