【问题标题】:How to receive viber REST API callbacks (using java, spring)?如何接收 viber REST API 回调(使用 java、spring)?
【发布时间】:2020-02-06 18:39:14
【问题描述】:

我正在尝试使用 java/spring 制作 viber bot(公共帐户)。我成功地为机器人设置了 webhook(通过将它部署到 heroku 并发出发布请求

{ "url":"https://my.host.com" }

使用邮递员),现在我正在尝试接收来自用户的消息。问题是我是使用 spring 的新手,实际上并不知道如何接收任何 viber 事件。

这是我的代码(只是检查我是否可以接收 viber 回调):

@RestController 
@SpringBootApplication 
public class DemoApplication {

public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
}

@RequestMapping
public String request(@RequestHeader("X-Viber-Content-Signature") String serverSideSignature) {
    System.out.println("Here we go!");
    System.out.println(serverSideSignature);
    return "Hello world!";
}
}

但是,这不起作用。如果我使用 Postman 向所需的serverSideSignature(文档中的示例)提出请求,例如

{ "event":"message", "timestamp":1457764197627, "message_token":4912661846655238145, "sender":{ "id":"01234567890A=", "name":"John McClane", "avatar":"http://avatar.example.com", "country":"UK", "language":"en", "api_version":1 }, "message":{ "type":"text", "text":"a message to the service", "media":"http://example.com", "location":{ "lat":50.76891, "lon":6.11499 }, "tracking_data":"tracking data" } },

我可以看到控制台输出。但是,如果我向机器人发送消息(甚至不从日志中获取任何信息),它就不起作用。我想问题是我不明白 viber 如何将任何信息发送到我的 webhook,但也许有人可以为我解释一下?非常感谢。

附: Viber REST API documentation

【问题讨论】:

    标签: java spring rest viber


    【解决方案1】:

    @RequestMapping 默认使用 GET 方法,Viber 使用 POST 方法向 webhook 发送回调。尝试将 @RequestMapping 更改为 @PostMapping,当然,您应该确保您的 webhook 设置正确,并且您的 URL 具有来自受信任 CA 的有效且正式的 SSL 证书。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-10
      • 2018-06-07
      • 2022-11-10
      • 2020-07-11
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多