首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何接收viber REST API回调(使用java、spring)?

接收Viber REST API回调的方式取决于您的应用程序使用的技术栈。以下是一种使用Java和Spring框架的示例方法:

  1. 创建一个Spring Boot项目,并添加所需的依赖项,如Spring Web和Viber Java Bot SDK。
  2. 在您的应用程序中,创建一个Controller类来处理Viber回调:
代码语言:txt
复制
import com.viber.bot.api.ViberSignatureValidator;
import com.viber.bot.event.incoming.IncomingConversationStartedEvent;
import com.viber.bot.event.incoming.IncomingMessageEvent;
import com.viber.bot.event.incoming.IncomingSubscribedEvent;
import com.viber.bot.event.incoming.IncomingUnsubscribedEvent;
import com.viber.bot.event.incoming.IncomingWebhookEvent;
import com.viber.bot.message.Message;
import com.viber.bot.message.TextMessage;
import com.viber.bot.profile.BotProfile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ViberWebhookController {

    private final ViberSignatureValidator signatureValidator;
    private final BotProfile botProfile;

    @Autowired
    public ViberWebhookController(ViberSignatureValidator signatureValidator, BotProfile botProfile) {
        this.signatureValidator = signatureValidator;
        this.botProfile = botProfile;
    }

    @PostMapping("/viber/webhook")
    public ResponseEntity<String> handleWebhook(
            @RequestHeader("X-Viber-Content-Signature") String signature,
            @RequestBody String requestBody) {

        if (!signatureValidator.isSignatureValid(signature, requestBody)) {
            return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
        }

        IncomingWebhookEvent event = botProfile.getEvent(requestBody);

        if (event instanceof IncomingMessageEvent) {
            handleIncomingMessage((IncomingMessageEvent) event);
        } else if (event instanceof IncomingConversationStartedEvent) {
            handleConversationStarted((IncomingConversationStartedEvent) event);
        } else if (event instanceof IncomingSubscribedEvent) {
            handleSubscribed((IncomingSubscribedEvent) event);
        } else if (event instanceof IncomingUnsubscribedEvent) {
            handleUnsubscribed((IncomingUnsubscribedEvent) event);
        }

        return ResponseEntity.ok("Received");
    }

    private void handleIncomingMessage(IncomingMessageEvent event) {
        Message message = event.getMessage();
        // 处理收到的消息
    }

    private void handleConversationStarted(IncomingConversationStartedEvent event) {
        // 处理会话开始事件
    }

    private void handleSubscribed(IncomingSubscribedEvent event) {
        // 处理用户订阅事件
    }

    private void handleUnsubscribed(IncomingUnsubscribedEvent event) {
        // 处理用户取消订阅事件
    }
}
  1. 在应用程序的配置文件(如application.properties)中,添加Viber Bot的配置:
代码语言:txt
复制
viber-bot.api-key=YOUR_API_KEY
viber-bot.webhook-url=https://your-domain.com/viber/webhook
viber-bot.webhook-event-types=conversation_started,subscribed,unsubscribed,message
  1. 启动您的应用程序,并将Viber Bot的Webhook URL(https://your-domain.com/viber/webhook)配置为Viber公众号的回调URL。

现在,您的应用程序将能够接收来自Viber REST API的回调,并根据需要进行处理。您可以根据具体的业务逻辑进一步处理不同类型的事件和消息。

请注意,上述示例使用了Viber Java Bot SDK来简化与Viber REST API的集成。有关Viber Java Bot SDK的更多信息,请参阅官方文档:Viber Java Bot SDK

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何使用SpringJava配置构建一个REST API

认识基于SpringREST 3. Java配置 4. 测试Spring上下文 5. 控制器 6. 映射HTTP响应状态码 6.1. 未映射的请求 6.2.有效的映射请求 6.3....使用@ExceptionHandler 7. 附加的Maven依赖项 8. 总结 1. 概览 本文展示了如何Spring中配置REST——控制器和HTTP状态响应码、有效负载编排和内容协商的配置。...认识基于SpringREST Spring框架支持两种创建RESTful服务的方法: 使用MVC 的ModelAndView 使用HTTP消息转换器 ModelAndView这个方法比较老、文档也比较完善...API的一部分,因此应该只在对应于REST的适当层中使用;例如,如果存在DAO/DAL层,则不应该直接使用上面的自定义异常。...总结 本教程演示了如何使用Spring 4和Java配置来实现一个REST服务,讨论了HTTP响应码、基本内容协商和编排。

2K30
  • 使用 Java @Annotations 构建完整的 Spring Boot REST API

    本文旨在演示用于构建功能性 Spring Boot REST API 的重要 Java @annotations。Java 注解的使用使开发人员能够通过简单的注解来减少代码冗长。...这允许 Java 虚拟机在运行时保留注释并通过反射读取。对注解的支持从版本 5 开始,允许不同的 Java 框架采用这些资源。 注释也可以在 REST API使用。...3 Swagger UI 配置中的 Java @Annotations 文档是任何项目的一个重要方面,因此我们的 REST API 使用 Swagger-UI 进行记录,这是许多标准元数据之一。...Swagger 是用于创建交互式 REST API 文档的规范和框架。它使文档能够与对 REST 服务所做的任何更改保持同步。它还提供了一组工具和 SDK 生成器,用于生成 API 客户端代码。...关系 Java @Annotations 任何 ORM 机制最重要的特性之一是如何指定从对象之间的关系到其数据库对应项的映射。

    3.4K20

    一句话概括下spring框架及spring cloud框架主要组件spring 顶级项目:spring cloud子项目包括:

    Spring Framework:即通常所说的spring 框架,是一个开源的Java/Java EE全功能栈应用程序框架,其它spring项目如spring boot也依赖于此框架。...Spring Social:一组工具包,一组连接社交服务API,如Twitter、Facebook、LinkedIn、GitHub等,有几十个。...Spring Loaded:用于实现java程序和web应用的热部署的开源工具。 Spring REST Shell:可以调用Rest服务的命令行工具,敲命令行操作Rest服务。...Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、机制等功能。...Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。

    1.1K50

    一句话概括下spring框架及spring cloud框架主要组件

    Spring Framework:即通常所说的spring 框架,是一个开源的Java/Java EE全功能栈应用程序框架,其它spring项目如spring boot也依赖于此框架。...Spring Social:一组工具包,一组连接社交服务API,如Twitter、Facebook、LinkedIn、GitHub等,有几十个。...Spring Loaded:用于实现java程序和web应用的热部署的开源工具。 Spring REST Shell:可以调用Rest服务的命令行工具,敲命令行操作Rest服务。...Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、机制等功能。...Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。

    1K70

    Java 操作 ElasticSearch,so easy!

    松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程 ---- 今天终于可以和小伙伴们分享通过 Java 来操作 ElasticSearch...的相关 API 啦~今天先来看一个简单的~ Java API 概览 手动发送 HTTP 请求 低级客户端 以下是视频笔记: 注意,笔记只是视频内容的一个简要记录,因此笔记内容比较简单,完整的内容可以查看视频...25.ElasticSearch Java API 概览 Java 操作 Es 的方案: 直接使用 HTTP 请求 直接使用 HTTP 请求,去操作 Es。...HTTP 请求工具,可以使用 Java 自带的 HttpUrlConnection,也可以使用一些 HTTP 请求库,例如 HttpClient、OKHttp、Spring 中的 RestTemplate...,开发者也可以使用 HttpClient、OkHttp、或者 Spring 中的 RestTemplate。

    1K20

    基于Spring Boot和Spring Cloud实现微服务架构学习(一)-Spring框架介绍

    Spring Framework:即通常所说的spring 框架,是一个开源的Java/Java EE全功能栈应用程序框架,其它spring项目如spring boot也依赖于此框架。...Spring Social:一组工具包,一组连接社交服务API,如Twitter、Facebook、LinkedIn、GitHub等,有几十个。...Spring Loaded:用于实现java程序和web应用的热部署的开源工具。 Spring REST Shell:可以调用Rest服务的命令行工具,敲命令行操作Rest服务。...Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、机制等功能。...Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。

    1.6K10

    Spring中国教育管理中心-Apache Cassandra 的 Spring 数据教程十四

    请注意,由 lambda 表达式实现的不会公开类型信息,因此使用不可分配的实体调用这些会影响吞吐量。使用classorenum为 bean 启用类型过滤。...本综合教程将教您如何使用start.spring.io使用 Kotlin 构建 Spring Boot 应用程序。...尽管 Java 不允许您在其类型系统中表达空安全性,但 Spring Data API 使用包中声明的JSR-305工具友好注释进行了注释org.springframework.lang。...默认情况下,来自 Kotlin 中使用Java API 的类型被识别为平台类型,对其进行空检查。...Spring Data Kotlin API 使用这些扩展为现有的 Spring API 添加新的 Kotlin 特定的便利。 请记住,需要导入 Kotlin 扩展才能使用

    1.6K40

    基于Java、Kafka、ElasticSearch的搜索框架的设计与实现

    Jkes是一个基于Java、Kafka、ElasticSearch的搜索框架。Jkes提供了注解驱动的JPA风格的对象/文档映射,使用REST API用于文档搜索。...搜索API 启动搜索服务jkes-search-service,搜索服务是一个Spring Boot Application,提供rest搜索api,默认运行在9000端口。 URI query ?...打包为镜像 查询服务提供多版本API,用于API进化和兼容 查询服务解析json请求,进行一些预处理后,使用ElasticSearch Java Rest Client转发到ElasticSearch,...包装了客户端的事务管理器,在事务提交和滚时加入了hook audit包提供了一个简单的AuditedEntity父类,方便添加审计功能,版本信息可用于结合ElasticSearch的版本机制保证不会索引过期文档数据...Application,使用docker打包为镜像 查询服务解析json请求,进行一些预处理后,使用ElasticSearch Java Rest Client转发到ElasticSearch,将得到的响应进行解析

    2.1K10

    录制常见问题汇总

    如果不希望全局自动录制,同时平台也不支持SDK API,可以通过云直播的直播录制进行单独的录制。 如何录制混流? 如果配置的 全局自动录制 ,混流也会自动录制。...如果配置的 指定用户录制 ,并使用服务器REST API触发混流,在混流接口中指定参数 OutputParams.RecordId,可以开启混流录制,具体可以参考混流参数OutputParams。...可以通过点播控制台手动查找和点播REST API查找,具体可以参考查找录制文件。 可以通过方式及时获取录制文件下载地址,具体可以参考接收录制文件。...如果配置的 指定用户录制 ,并使用服务器REST API触发混流,在混流接口中没有指定参数 OutputParams.RecordId,则混流不会录制。...调配置参考接收录制文件。 如果已经正确配置,可以再检查下服务器是否可以正常处理,比如通过curl模拟测试请求是否能正常处理。 生成的录制文件为什么这么多?

    91730

    云通信IM - 第三方简单接收配置

    前言: 为了更好的管理和控制App,IM提供了第三方功能,配置使用后,即时通信IM会向App后台服务器发送请求,App后台可以根据收到的调处理业务逻辑、数据处理存储、功能控制干预,比如禁止该消息下发...,调配置里配置url设置事件 [url配置.png] 地址必须是可以ping通的地址,且域名中不能使用下划线_,如果没有域名备案可以使用外网IP地址作为域名配置。...双向认证的目的是只能从即时通信IM后台访问,无法通过客户端或浏览器直接访问。 如何关闭:1.取消所有事件;2.更改回地址,配置成无法接收的地址。...> 测试验证使用Rest Api或客户端发消息验证是否可以收到(此处以单聊消息为例) array ( 'MsgBody' => array (...Api发送单发单聊消息 Rest Api 批量发单聊消息不会触发单聊 2.

    2.1K140

    『高级篇』docker之微服务间如何通讯(六)

    通信方式 一对一(同步),特别常见请求相应模式,最常见的 一对一(异步),某个服务发送通知的时候, 不需要等待响应,不需要对方立刻响应,而是通过的方式得到对方的响应。...通信协议 REST API 很多人把rest api等同于 http的接口设计,其实他们不能直接化等号的,rest 是很早提出的一个概念,rest是表现层的状态转移,其实这个没几个人可以听的懂,其实rest...是网络中客户端和服务端的一种交互形式,它本身就是一个抽象概念,主要是如何设计一个rest api,以http为例,就是用http协议来实现rest形式的api, 在 Web 应用中处理来自客户端的请求时...而在 REST 架构中,用不同的 HTTP 请求方法来处理对资源的 CRUD(创建、读取、更新和删除)操作: 若要在服务器上创建资源,应该使用 POST 方法。...只支持java语言。 ? Motan 一套新浪微博的,2016年5月进行的开源,号称每天支持新浪微博的千亿级别的调用量,通过spring的调用方式不需要额外的代码就具有分布式的能力。

    1.6K30

    Spring Boot极简教程》第2章 Spring Boot简史小结参考资料

    Spring Framework:即通常所说的spring 框架,是一个开源的Java/Java EE全功能栈应用程序框架,其它spring项目如spring boot也依赖于此框架。...Spring Social:一组工具包,一组连接社交服务API,如Twitter、Facebook、LinkedIn、GitHub等,有几十个。...Spring Loaded:用于实现java程序和web应用的热部署的开源工具。 Spring REST Shell:可以调用Rest服务的命令行工具,敲命令行操作Rest服务。...Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、机制等功能。...Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。

    95530

    JAVA语言异步非阻塞设计模式(原理篇)

    稍后底层网络连接收到响应数据,触发调用者所注册的。...调用者线程会注册一些,这些存储在内存中;稍后网络连接上收到响应数据,某个接收线程被通知处理响应数据,从内存中取出所注册的,并触发回。...异步 API 具有以下特征: 在提交请求时注册; 提交请求后,函数立刻返回,不需要等待收到响应; 收到响应后,触发所注册的;根据底层实现,可以利用有限数目的线程来接收响应数据,并在这些线程中执行...如果 Promise 只能在构造时注册唯一,那么其他关注者就无法注册所需函数,即 Promise API 退化 listener API。...https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-document-index.html

    92730

    Spring Boot 实战:从0到1》第1章 Spring Boot简介第1章 Spring Boot简介小结参考资料

    Spring Framework:即通常所说的spring 框架,是一个开源的Java/Java EE全功能栈应用程序框架,其它spring项目如spring boot也依赖于此框架。...Spring Social:一组工具包,一组连接社交服务API,如Twitter、Facebook、LinkedIn、GitHub等,有几十个。...Spring Loaded:用于实现java程序和web应用的热部署的开源工具。 Spring REST Shell:可以调用Rest服务的命令行工具,敲命令行操作Rest服务。...Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、机制等功能。...Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。

    66520

    Spring认证中国教育管理中心-Spring Data MongoDB教程八

    实体调为同步 API 和反应式 API 提供集成点,以保证在处理链中定义明确的检查点按顺序执行,返回潜在修改的实体或反应式包装器类型。 实体通常按 API 类型分隔。...这种分离意味着同步 API 仅考虑同步实体,而反应式实现仅考虑反应式实体Spring Data Commons 2.2 引入了实体 API。这是应用实体修改的推荐方式。...请注意,由 lambda 表达式实现的不会公开类型信息,因此使用不可分配的实体调用这些会影响吞吐量。使用classorenum为 bean 启用类型过滤。...但是,如果您不能使用反应式 API,您仍然可以使用 Spring 生态系统中已经流行的消息传递概念。 11.20.1。...但是,如果您无法使用响应式 API,您仍然可以通过使用 Spring 生态系统中已经流行的消息传递概念来获取更改事件。

    2K30

    Spring中国教育管理中心-Apache Cassandra 的 Spring 数据教程十三

    不推荐使用:Joda 时间转换器,用于在org.joda.time、JSR-310 和java.util.Date....由于基于 Spring 的应用程序上下文事件基础结构,其他产品(例如 Spring Integration)可以轻松接收这些事件,因为它们是基于 Spring 的应用程序中众所周知的事件机制。...14.8.实体 Spring Data 基础设施提供了在调用某些方法之前和之后修改实体的钩子。那些所谓的EntityCallback实例提供了一种方便的方法来检查和潜在地以风格修改实体。...实体调为同步 API 和反应式 API 提供集成点,以保证在处理链中定义明确的检查点按顺序执行,返回潜在修改的实体或反应式包装器类型。 实体通常按 API 类型分隔。...这种分离意味着同步 API 仅考虑同步实体,而反应式实现仅考虑反应式实体Spring Data Commons 2.2 引入了实体 API。这是应用实体修改的推荐方式。

    67630

    你知道webhook吗?

    了不起:好的,Bigcommerce提供了丰富的API和Webhook功能来实现这个需求。 首先,你需要创建一个可以接收和处理Bigcommerce的端点,类似于之前的webhook。...你可以使用Spring Boot来创建一个简单的Web应用程序,用于处理请求。...以下是一个关于处理BigcommerceJava代码示例,使用Spring Boot框架: import org.springframework.boot.SpringApplication; import...在方法中,我们可以验证请求的安全性,然后处理接收到的数据,并返回一个表示成功处理的响应。...我现在对webhook有了更清晰的理解,并知道了如何使用和处理Bigcommerce的。 我会注意具体的事件和数据结构,并根据实际情况进行验证。

    23710
    领券