диалоговое окно webhook в go - PullRequest
1 голос
/ 17 января 2020

Я следовал за шагом на этом сайте , но когда я пытаюсь нажать sh на 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 на странице моего сайта?

Большое спасибо за помощь.

1 Ответ

0 голосов
/ 17 января 2020

Я думаю, вы должны получить порт из среды исполнения Heroku

var port = os.Getenv("PORT")

Похоже, он жестко закодирован.

...