2017-06-25 2 views
0

Je développe un chatbot fb où, pour des objectifs spécifiques, des webhooks ont été lancés et traités via python. L'application python est hébergée dans le cloud Heroku. Je suis confronté à un problème typique, chaque fois qu'un webhook a été déclenché, il continue à être lancé dans une boucle infinie jusqu'à ce que la prochaine requête de chat est déclenchée.Webhook Python appelé plusieurs fois depuis Facebook Chatbot - Api.ai

#!/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") 

J'ai activé le webhook pour 3 intentions seulement. Les autres intentions d'api.ai ne sont pas remplies (Webhook ou Webhook slot filling) activé.

Quelqu'un peut-il m'aider dans ce domaine.

Répondre

0

Deux choses à rechercher dans ce cas:

  1. Nous devons envoyer une réponse 200 à facebook pour mettre fin à la réponse
  2. besoin de vérifier si la réponse de la distribution des messages est activé sur l'abonnement fb ou non . Si elle est activée, fb enverra également une réponse de livraison, qui devrait être capturée sur le webhook.