如何修复Twilio可编程SMS(WhatsApp)中的“ 11200 HTTP检索失败错误”

时间:2019-01-28 07:34:25

标签: python http webserver twilio dialogflow

我想了解是什么引起了11200 HTTP检索错误?我已经将对POST请求的响应发送给了DialogFlow,这不是在处理将响应发送给Twilio吗?

这是我到目前为止所做的

我已经设置了本地python服务器,并使用ngrok公开了本地主机。这个想法是使用Twilio可编程SMS创建一个天气机器人。发送给Twilio的初始消息将转发到DialogFlow,然后DialogFlow将发布请求发送到我的python服务器。然后,我处理此请求,并从OpenWeatherMap API获取相关的天气信息。对于服务器开发人员来说相对较新,我假设我需要按照DialogFlow指南中提到的正确结构发送响应(例如,应包含complementText参数),然后再将其发送回DialogFlow,然后将响应发送给Twilio,并显示在我的WhatsApp Twilio沙盒上。 **但是我得到的是Twilio Degugger中的11200 HTTP检索失败错误,我想了解是否将数据正确发送到DialogFlow以及引起此错误的原因**我阅读了有关Twilio的错误的文档网站,但这并不能帮助我理解我所遇到的问题。

我曾经使用PHP服务器尝试过相同的程序,并且运行良好。我只是想使用Python服务器重新创建该程序,因为我暂时更喜欢使用它。

//做webhook.py的发布方法

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"))
从getWeatherInformation中以以下方式返回

info变量

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 -

博客文章中的PHP Webhook代码正常工作

/ *将天气数据响应发送到Dialogflow的部分代码 * /

function sendFulfillmentResponse($temperature, $weatherDescription)
{
   $response = "It is $temperature degrees with $weatherDescription";

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

   echo(json_encode($fulfillment));
}

我希望看到WhatsApp上Twilio Sandbox帐户的响应,类似于我使用PHP创建服务器时的响应。取而代之的是,我在Twilio调试器中收到了11200错误,但在服务器终端中没有错误。

0 个答案:

没有答案