接收Viber REST API回调的方式取决于您的应用程序使用的技术栈。以下是一种使用Java和Spring框架的示例方法:
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) {
// 处理用户取消订阅事件
}
}
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
现在,您的应用程序将能够接收来自Viber REST API的回调,并根据需要进行处理。您可以根据具体的业务逻辑进一步处理不同类型的事件和消息。
请注意,上述示例使用了Viber Java Bot SDK来简化与Viber REST API的集成。有关Viber Java Bot SDK的更多信息,请参阅官方文档:Viber Java Bot SDK
领取专属 10元无门槛券
手把手带您无忧上云