我在this website上遵循了步骤,但是当我尝试推动Heroku并使用Dialogflow Fulfillment连接到它时,我的网站页面始终显示404 not found

heroku日志始终显示以下内容:

2020-01-17T15:53:17.864991+00:00 heroku[router]: at=error code=H10 desc="App crashed"
method=POST path="/webhook" host=herokugit-test.herokuapp.com request_id=bfed8942-7009-474c-a67c-b84b5e79a94f fwd="64.233.172.43" dyno= connect= service= status=503 bytes=
protocol=https

这是代码:

package main

import (

    "fmt"
    "net/http"
    "github.com/gin-gonic/gin"
    "github.com/golang/protobuf/jsonpb"
    "github.com/sirupsen/logrus"
    "google.golang.org/genproto/googleapis/cloud/dialogflow/v2"
)

func handleWebhook(c *gin.Context) {
    var err error

    wr := dialogflow.WebhookRequest{}
    if err = jsonpb.Unmarshal(c.Request.Body, &wr); err != nil {
        logrus.WithError(err).Error("Couldn't Unmarshal request to jsonpb")
        c.Status(http.StatusBadRequest)
        return
    }
    fmt.Println(wr.GetQueryResult().GetOutputContexts())
}

func main() {

    var err error

    r := gin.Default()
    r.POST("/webhook", handleWebhook)

    if err = r.Run("127.0.0.1:8080"); err != nil {
        logrus.WithError(err).Fatal("Couldn't start server")
    }
}

如何解决?
以及如何在我的网站页面上显示正确的WebhookRequest

非常感谢您的帮助。

最佳答案

我认为您应该从Heroku运行时获取端口

var port = os.Getenv("PORT")

看起来好像是硬编码的。

关于go - 对话流中的webhook,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59790928/

10-10 21:39