Twilio 状态回调 url 未调用

问题描述 投票:0回答:1

我目前正在使用 Spring Boot 开发服务器端应用程序,我创建了一个端点作为 Twilio 状态回调 URL,如下所示

@PostMapping
    public ResponseEntity<Response> callback(@RequestParam("RoomName") String RoomName,
                                             @RequestParam("ParticipantIdentity") String ParticipantIdentity,
                                             @RequestParam("StatusCallbackEvent") String StatusCallbackEvent,
                                             @RequestParam("AccountSid") String AccountSid,
                                             @RequestParam("RoomSid") String RoomSid,
                                             @RequestParam("RoomStatus") String RoomStatus,
                                             @RequestParam("RoomType") String RoomType,
                                             @RequestParam("Timestamp") String Timestamp,
                                             @RequestParam("ParticipantStatus") String ParticipantStatus,
                                             @RequestParam("ParticipantSid") String ParticipantSid,
                                             @RequestParam("ParticipantDuration") int ParticipantDuration,
                                             @RequestParam("RoomDuration") int RoomDuration,
                                             @RequestParam("SequenceNumber") String SequenceNumber,
                                             @RequestParam("ParticipantTrackSidStatus") String ParticipantTrackSidStatus,
                                             @RequestParam("TrackKind") String TrackKind) {
        log.info("Handling twilio callback ...");

        String roomName = RoomName;
        int userId = Integer.parseInt(ParticipantIdentity);
        User user = userService.getUserById(userId);
        int familyId = Integer.parseInt(roomName.split("_")[1]);
        Family family = familyService.findById(familyId);
        Helper helper = Helper.getInstance();
        String langCode = helper.getLangCode(family);

        if (StatusCallbackEvent.equals("participant-connected")) {
            UserInCallRoom userInCallRoom = new UserInCallRoom(roomName, user);
            userInCallRoomService.saveUserInCallRoom(userInCallRoom);
        } else if (StatusCallbackEvent.equals("participant-disconnected")) {
            userInCallRoomService.deleteUserFromRoom(roomName, userId);
        } else if (StatusCallbackEvent.equals("room-ended")) {
            ArrayList<Integer> userIds = userInCallRoomService.findAllUserIdInRoomCall(roomName);
            List<User> users = userIds.stream().map(id -> userService.getUserById(id)).collect(Collectors.toList());

            firebaseMessageHelper.notifyUsers(
                    users,
                    helper.getMessageInLanguage("videoCallHasEndedTitle", langCode),
                    String.format(helper.getMessageInLanguage("videoCallHasEndedBody", langCode)),
                    new HashMap<>() {{
                        put("navigate", "END_VIDEO_CALL");
                        put("id", roomName);
                    }}
            );
        }

        return ResponseEntity.ok(new Response(null, new ArrayList<>()));
    }

但我无法收到对此 URL 的任何请求。我已经检查了 Twilio 房间设置中的 HTTP 方法设置。我缺少什么?我这里有什么误解吗?

还有一件事是,呼叫室是使用 ad-hoc 而不是 Rest api 在客户端应用程序上创建的

请告诉我。感谢您宝贵的时间。

java spring-boot twilio
1个回答
0
投票

我发现我可以检查 Twilio 上的错误日志,以获取有关 Twilio 无法向我的端点请求的原因的更多信息,并发现 Twilio 没有传入某些参数。

对于那些遇到类似问题的人。查看 Twilio 控制台上的监视器部分中的错误日志,您可能会找到所需的答案。

© www.soinside.com 2019 - 2024. All rights reserved.