Python “如何修复”;11200 HTTP检索失败错误“;嵌入式可编程SMS(WhatsApp)

Python “如何修复”;11200 HTTP检索失败错误“;嵌入式可编程SMS(WhatsApp),python,http,webserver,twilio,dialogflow-es,Python,Http,Webserver,Twilio,Dialogflow Es,我想了解是什么导致11200 HTTP检索错误?我已经将POST请求的响应发送到DialogFlow,它不应该处理将此响应发送到Twilio吗 这是我到现在为止所做的 我已经设置了一个本地python服务器,并使用ngrok公开了本地主机。其想法是使用Twilio可编程短信创建一个天气机器人。发送到Twilio的初始消息被转发到DialogFlow,然后DialogFlow向我的python服务器发送post请求。然后我处理这个请求,并从OpenWeatherMapAPI获取相关的天气信息。作为

我想了解是什么导致11200 HTTP检索错误?我已经将POST请求的响应发送到DialogFlow,它不应该处理将此响应发送到Twilio吗

这是我到现在为止所做的 我已经设置了一个本地python服务器,并使用ngrok公开了本地主机。其想法是使用Twilio可编程短信创建一个天气机器人。发送到Twilio的初始消息被转发到DialogFlow,然后DialogFlow向我的python服务器发送post请求。然后我处理这个请求,并从OpenWeatherMapAPI获取相关的天气信息。作为服务器开发人员的新手,我假设接下来需要将具有DialogFlow指南中提到的正确结构的响应(例如,包含fulfillmentText参数)发送回DialogFlow,DialogFlow随后应将响应发送到Twilio,并应显示在我的WhatsApp Twilio沙箱中。 **但我得到的是Twilio Degugger中的11200 HTTP检索失败错误,我想了解我是否正确地将数据发送到DialogFlow,以及导致此错误的原因**我阅读了Twilio网站上的错误文档,但这对我理解本例中的问题没有多大帮助

我曾使用PHP服务器尝试过相同的程序,效果非常好。我只是想用Python服务器重新创建这个程序,因为我现在更习惯于使用它

//webhook.py的DO post方法

def do_POST(self):
    try:
        content_len = int(self.headers.get('Content-Length'))
        post_body = self.rfile.read(content_len)

        requestjson = json.loads(post_body)
        city = requestjson["queryResult"]["parameters"]["geo-city"]
        if city:
            print(city)
            info = getWeatherInformation(city)
            print(info) # Prints temp in city and weather condition successfully
            self.send_response(200)
            self.wfile.write(info.encode(encoding = "utf_8"))
info变量以以下方式从getWeatherInformation返回 墨尔本市的控制台调试语句 一篇博客文章中的PHP Webhook代码可以正常工作 / *向Dialogflow发送天气数据响应的代码的一部分 */


我希望在WhatsApp上看到Twilio沙箱帐户的响应,类似于我使用PHP创建服务器时的响应。相反,我在Twilio调试器中得到了11200错误,但在服务器终端中没有错误。

中有关于该错误的更多信息吗?您应该能够看到Dialogflow服务器返回给Twilio的响应以及它的问题所在。@philnash调试消息刚读到“坏请求”,但后来我通过Webhook URL查看了它,得到了两个类别,null和我服务器的面向ngrok公共的uri,公共uri的错误消息是“坏请求”,但是对于null类别(我猜是意料之中的):“urinull的URI模式必须与‘http’、‘https’、‘ws’或‘wss’相等(忽略大小写)。这有助于回答您的查询吗?
null
版本来自当前WhatsApp API不支持的回退URL。那么,深入研究错误的请求错误,你能看到实际的请求和响应吗?是的。请求如下:URL->。参数->正文:“墨尔本天气如何”,SmsStatus:“收到”以及其他ID。消息文本->消息:“错误请求”,源组件:“14100”,错误代码:“11200”,httpResponse:“400”。身体的反应是:空洞的言语。这是否意味着问题在于请求本身@Philnash看起来DialogFlow没有正确响应Twilio请求。DialogFlow中是否有任何日志可以说明这一点?
res = {"fulfillmentText":response}
info = json.dumps(res)
return info
Web Server running on port: 8080
Melbourne
{"fulfillmentText": "It is 31.29 degrees with clear sky"}
127.0.0.1 - - [27/Jan/2019 23:00:34] "POST /webhook.py HTTP/1.1" 200 -
function sendFulfillmentResponse($temperature, $weatherDescription)
{
   $response = "It is $temperature degrees with $weatherDescription";

   $fulfillment = array(
       "fulfillmentText" => $response
   );

   echo(json_encode($fulfillment));
}