我在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/